framework,MTK平台,系统开发修改定时器开关机设置间隔
2016-11-01 18:55
736 查看
之前测试提了一个bug 就是在定时开关机的时候可以设置同一时间,需要修改为在同一时间上开机和关机不能同时开启,否则提示Toast开关机时间间隔需要不少于5分钟,思路1:开关机只有一个则允许打开2:开机和关机功能都打开并且均为一次性操作,且时间差大于10,则允许设置3:开机(关机)一次性,而关机(开机)操作,且时间差大于10,则允许设置4:重复周天操作,且时间差大于10,则允许设置功能实现:红色字体是需要修改的修改文件 1:vendor/mediatek/proprietary/packages/apps/SchedulePowerOnOff/src/com/mediatek/schpwronoff/AlarmClock.java下修改
<span style="color:#ff6666;"> private void saveAlarm() { final String alert = Alarms.ALARM_ALERT_SILENT; mEnabled |= mRepeatPref.mIsPressedPositive; Alarms.setAlarm(this, mId, mEnabled, mHour, mMinutes, mRepeatPref.getDaysOfWeek(), true, "", alert); if (mEnabled) { popAlarmSetToast(this.getApplicationContext(), mHour, mMinutes, mRepeatPref.getDaysOfWeek(), mId); } }</span>
/ public void bindView(View view, Context context, Cursor cursor) {下修改为
//ONTIM<mengshirui><2016-09-01> start效验开关机是否间隔少于5分钟if (verifyConflict(alarm)) {Toast.makeText(cont,(String.format(getResources().getString(R.string.interval_warning),5)) , Toast.LENGTH_SHORT).show();Alarms.enableAlarm(cont, alarm.mId, !isChecked);4000} else {SetAlarm.popAlarmSetToast(cont, alarm.mHour, alarm.mMinutes, alarm.mDaysOfWeek, alarm.mId);}//ONTIM<mengshirui><2016-09-01> end
//ONTIM<mengshirui><2016-09-01> startprivate boolean verifyConflict(Alarm mAlarm) {Alarm verAlarm;if (mAlarm.mId == 1) {verAlarm = Alarms.getAlarm(getContentResolver(), 2);} else {verAlarm = Alarms.getAlarm(getContentResolver(), 1);}if (verAlarm == null) {return false;}if (isRepeat(verAlarm, mAlarm)) {return true;} else {return false;}}/*** @param verAlarm* @param mAlarm* @return*/private boolean isRepeat(Alarm verAlarm, Alarm mAlarm) {boolean[] mDays = verAlarm.mDaysOfWeek.getBooleanArray();boolean[] days = mAlarm.mDaysOfWeek.getBooleanArray();boolean common = false;Calendar c = Calendar.getInstance();int today = (c.get(Calendar.DAY_OF_WEEK) + 5) % 7;boolean tenMore = (Math.abs((verAlarm.mHour * 60 + verAlarm.mMinutes) - (mAlarm.mHour * 60 + mAlarm.mMinutes)) > 5);for (int i = 0; i < days.length; i++) {for (int j = 0; j < mDays.length; j++) {if (i == j && days[i] == true && mDays[j] == true) {common = true;}}}if (!verAlarm.mEnabled) {return false;}if (verAlarm.mDaysOfWeek.getCoded() == 0 && mAlarm.mDaysOfWeek.getCoded() == 0) {if (tenMore)return false;elsereturn true;}if ((mAlarm.mDaysOfWeek.getCoded() == 0 && mDays[today]) || (verAlarm.mDaysOfWeek.getCoded() == 0 && days[today])) {if (tenMore)return false;elsereturn true;}if (common) {if (tenMore)return false;elsereturn true;}return false;}//ONTIM<mengshirui><2016-09-01> end}修改 如果不可以设置的话 确定键置灰 (可以不设置)proprietary/packages/apps/SchedulePowerOnOff/src/com/mediatek/schpwronoff/RepeatPreference.java中修改
<span style="color:#ff6666;">@Overrideprotected void onPrepareDialogBuilder(Builder builder) {CharSequence[] entries = getEntries();builder.setMultiChoiceItems(entries, mDaysOfWeek.getBooleanArray(),new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {mNewDaysOfWeek.set(which, isChecked);}});}</span>修改为
@Overrideprotected void onPrepareDialogBuilder(Builder builder) {CharSequence[] entries = getEntries();builder.setMultiChoiceItems(entries, mDaysOfWeek.getBooleanArray(),new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {mNewDaysOfWeek.set(which, isChecked);//ONTIM<mengshirui><2016-09-01> startif(isAllFalse(mNewDaysOfWeek.getBooleanArray())){((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);}else {((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);}//ONTIM<mengshirui><2016-09-01> end}});}//ONTIM<mengshirui><2016-09-01> startprivate boolean isAllFalse(boolean[] flag){for(boolean b : flag){if(b){return false;}}return true;}//ONTIM<mengshirui><2016-09-01> end最后在vendor/mediatek/proprietary/packages/apps/SchedulePowerOnOff/src/com/mediatek/schpwronoff/AlarmClock.java
<span style="color:#ff6666;">if (isChecked) {SetAlarm.popAlarmSetToast(cont, alarm.mHour, alarm.mMinutes, alarm.mDaysOfWeek, alarm.mId);}</span>修改为
if (isChecked) {//ONTIM<mengshirui><2016-09-01> start效验开关机是否间隔少于5分钟if (verifyConflict(alarm)) {Toast.makeText(cont,(String.format(getResources().getString(R.string.interval_warning),5)) , Toast.LENGTH_SHORT).show();Alarms.enableAlarm(cont, alarm.mId, !isChecked);} else {SetAlarm.popAlarmSetToast(cont, alarm.mHour, alarm.mMinutes, alarm.mDaysOfWeek, alarm.mId);}//ONTIM<mengshirui><2016-09-01> end}
//ONTIM<mengshirui><2016-09-01> startprivate boolean verifyConflict(Alarm mAlarm) {Alarm verAlarm;if (mAlarm.mId == 1) {verAlarm = Alarms.getAlarm(getContentResolver(), 2);} else {verAlarm = Alarms.getAlarm(getContentResolver(), 1);}if (verAlarm == null) {return false;}if (isRepeat(verAlarm, mAlarm)) {return true;} else {return false;}}/*** @param verAlarm* @param mAlarm* @return*/private boolean isRepeat(Alarm verAlarm, Alarm mAlarm) {boolean[] mDays = verAlarm.mDaysOfWeek.getBooleanArray();boolean[] days = mAlarm.mDaysOfWeek.getBooleanArray();boolean common = false;Calendar c = Calendar.getInstance();int today = (c.get(Calendar.DAY_OF_WEEK) + 5) % 7;boolean tenMore = (Math.abs((verAlarm.mHour * 60 + verAlarm.mMinutes) - (mAlarm.mHour * 60 + mAlarm.mMinutes)) > 5);for (int i = 0; i < days.length; i++) {for (int j = 0; j < mDays.length; j++) {if (i == j && days[i] == true && mDays[j] == true) {common = true;}}}if (!verAlarm.mEnabled) {return false;}if (verAlarm.mDaysOfWeek.getCoded() == 0 && mAlarm.mDaysOfWeek.getCoded() == 0) {if (tenMore)return false;elsereturn true;}if ((mAlarm.mDaysOfWeek.getCoded() == 0 && mDays[today]) || (verAlarm.mDaysOfWeek.getCoded() == 0 && days[today])) {if (tenMore)return false;elsereturn true;}if (common) {if (tenMore)return false;elsereturn true;}return false;}//ONTIM<mengshirui><2016-09-01> end有什么问题可以交流
相关文章推荐
- Android系统应用开发(六)Android framework系统默认设置修改
- RDIFramework.NET ━ .NET快速信息化系统开发框架-4.3 平台主界面
- RDIFramework.NET ━ .NET快速信息化系统开发框架-4.3 平台主界面
- Android framework系统默认设置修改
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件WinForm业务平台
- RDIFramework.NET ━ .NET快速信息化系统开发框架-4.2 平台自动升级模块
- MTK平台修改默认时间,以及恢复出厂设置后的默认时间显示
- iOS开发项目篇—26修改UITabBar的系统设置
- Android framework系统默认设置修改
- Android framework系统默认设置修改
- RDIFramework.NET ━ .NET快速信息化系统开发框架-4.1 平台登录模块
- Android framework系统默认设置修改
- Android framework系统默认设置修改
- Android framework系统默认设置修改
- RDIFramework.NET ━ .NET快速信息化系统开发框架-4.2 平台自动升级模块
- Android framework系统默认设置修改
- Android framework系统默认设置修改
- Android framework系统默认设置修改----重要的设置后台进程数
- Android framework系统默认设置修改
- Android framework系统默认设置修改