framework,MTK平台,系统开发修改定时器开关机设置间隔
来源:互联网 发布:java.util在哪个jar包 编辑:程序博客网 时间:2024/05/16 08:48
之前测试提了一个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>
修改为
//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> start private 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; else return true; } if ((mAlarm.mDaysOfWeek.getCoded() == 0 && mDays[today]) || (verAlarm.mDaysOfWeek.getCoded() == 0 && days[today])) { if (tenMore) return false; else return true; } if (common) { if (tenMore) return false; else return true; } return false; } //ONTIM<mengshirui><2016-09-01> end}
修改 如果不可以设置的话 确定键置灰 (可以不设置)
proprietary/packages/apps/SchedulePowerOnOff/src/com/mediatek/schpwronoff/RepeatPreference.java
中修改
<span style="color:#ff6666;">@Override protected void onPrepareDialogBuilder(Builder builder) { CharSequence[] entries = getEntries(); builder.setMultiChoiceItems(entries, mDaysOfWeek.getBooleanArray(), new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { mNewDaysOfWeek.set(which, isChecked); } }); }</span>
修改为
@Override protected void onPrepareDialogBuilder(Builder builder) { CharSequence[] entries = getEntries(); builder.setMultiChoiceItems(entries, mDaysOfWeek.getBooleanArray(), new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { mNewDaysOfWeek.set(which, isChecked); //ONTIM<mengshirui><2016-09-01> start if(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> start private 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> start private 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; else return true; } if ((mAlarm.mDaysOfWeek.getCoded() == 0 && mDays[today]) || (verAlarm.mDaysOfWeek.getCoded() == 0 && days[today])) { if (tenMore) return false; else return true; } if (common) { if (tenMore) return false; else return true; } return false; } //ONTIM<mengshirui><2016-09-01> end
有什么问题可以交流
1 0
- framework,MTK平台,系统开发修改定时器开关机设置间隔
- Android MTK平台修改开关机动画和开机logo
- Android MTK平台修改开关机动画和开机logo【转】
- (MTK)android 4.4,6.0系统开关机动画铃声修改
- setitimer: 设置定时器间隔
- MTK Andorid开关机动画及图片修改
- MTK开关机动画及图片修改
- MTK Andorid开关机动画及图片修改
- 修改Android MTK 开关机动画 log
- MTK Andorid开关机动画及图片修改
- mtk平台修改
- mtk平台笔记--客制化开关机动画与铃声
- MTK修改听筒音量,拨号键盘音量,开关机音量调整
- MTK 软件设置路径(铃声、开关机动画、壁纸等)
- 搭建MTK开发平台
- MTK 平台游戏开发
- 修改注册表优化加速windows系统开关机
- 修改系统默认的定时开关机时间
- busybox串口设置工具stty
- BZOJ 1631: [Usaco2007 Feb]Cow Party
- sql case when
- solr cloud系列-manage-schema介绍
- ansible小结(八)ansible-playbook简单使用
- framework,MTK平台,系统开发修改定时器开关机设置间隔
- 老友记引发的血案-第二天
- cpp的异常
- 第九周OJ7大奖赛计分
- JPush相关
- node.js入门之一:express简单服务器搭建-Mac环境开发
- ansible小结(九)playbook进阶
- 《Spring揭秘》第四章 读书笔记 —— BeanFactory的XML之旅
- node.js入门之二:mysql的使用-Mac环境开发