闹铃
来源:互联网 发布:数据库中column 编辑:程序博客网 时间:2024/04/30 12:25
包括单次闹铃、按照星期设置循环闹铃及循环闹铃的取消
/** * 转换成hh:mm 的时间格式。 * @param hour * @param minute * @return eg:08:30 */public static String getTimeStr(int hour, int minute) {StringBuilder sb = new StringBuilder();if (hour < 10) sb.append("0");sb.append(hour).append(":");if (minute < 10) sb.append("0");sb.append(minute);return sb.toString();}public static int getAmPmType(){Calendar mCalendar = Calendar.getInstance();int ampm = mCalendar.get(Calendar.AM_PM);if(ampm == Calendar.AM){return UpdateDef.isAm;}else{return UpdateDef.isPm;}}public static int getWeekType(){Calendar mCalendar = Calendar.getInstance();int ampm = mCalendar.get(Calendar.AM_PM);Log.i("sxy", "ampm="+ampm);return DAYS_KEY_MAP.indexOfValue(mCalendar.get(Calendar.DAY_OF_WEEK));}//-------------------------时间到了的闹铃-----------------------------//--目前只为小学的古诗词和小学中学的国学乐园发送时间到了的广播public static void setupTimeIsOverAlarm(Context con, int mListenDur){Intent intent = new Intent(UpdateDef.TIMEISOVER_ACTION); PendingIntent pendingIntent = PendingIntent.getBroadcast(con, UpdateDef.TIMEISOVER_ALARMID, intent, 0); AlarmManager am = (AlarmManager)con.getSystemService(con.ALARM_SERVICE); long now = System.currentTimeMillis();am.set(AlarmManager.RTC_WAKEUP, now+mListenDur*60*1000, pendingIntent);Log.i(TAG, "setupTimeIsOverAlarm alarm: alarmId="+UpdateDef.TIMEISOVER_ALARMID+", dur="+mListenDur);}//---------------------------闹铃-------------------------------private static final long INTERVAL = AlarmManager.INTERVAL_DAY * 7;// 7天private static final SparseIntArray DAYS_KEY_MAP = new SparseIntArray();static {DAYS_KEY_MAP.append(UpdateDef.week_mon, Calendar.MONDAY);DAYS_KEY_MAP.append(UpdateDef.week_tue, Calendar.TUESDAY);DAYS_KEY_MAP.append(UpdateDef.week_wed, Calendar.WEDNESDAY);DAYS_KEY_MAP.append(UpdateDef.week_thu, Calendar.THURSDAY);DAYS_KEY_MAP.append(UpdateDef.week_fri, Calendar.FRIDAY);DAYS_KEY_MAP.append(UpdateDef.week_sat, Calendar.SATURDAY);DAYS_KEY_MAP.append(UpdateDef.week_sun, Calendar.SUNDAY);}private static int alarmId = 0;//保证闹铃id唯一:Integer.valueOf(""+weekType+ampmType+stagetype)public final static int getAlarmId(int weektype, int ampmtype, int stagetype){return Integer.valueOf(""+weektype+ampmtype+stagetype);//文件名由星期类型加上间隔符再加上早晚类型和年级类型组成}//设置单次闹铃public static void setOneAlarm(Context con, SaveDetailInfo mInfo){if(mInfo == null || mInfo.isHasSet() == false || mInfo.isOpen() == false){Log.i(TAG, "setup alarm error");return;}Calendar mCalendar = Calendar.getInstance();int currentHour = mCalendar.get(Calendar.HOUR_OF_DAY);int currentMinute = mCalendar.get(Calendar.MINUTE);int beginHour = mInfo.getBeginTime_hour();int beginMinute = mInfo.getBeginTime_min();if (beginHour < 0 || beginMinute < 0|| beginHour < currentHour|| (beginHour == currentHour && beginMinute < currentMinute)) {return;}mCalendar.set(Calendar.HOUR_OF_DAY, beginHour);mCalendar.set(Calendar.MINUTE, beginMinute);mCalendar.set(Calendar.SECOND, 0);mCalendar.set(Calendar.MILLISECOND, 0);Intent intent = new Intent(UpdateDef.ACTION_UPDATE_REMIND);intent.putExtra(UpdateDef.mAmPm_Flag, mInfo.getAmPmType());intent.putExtra(UpdateDef.mWeek_Flag, mInfo.getWeekType());intent.putExtra(UpdateDef.mStage_Flag, mInfo.getStageType());PendingIntent pi = PendingIntent.getActivity(con, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);AlarmManager am = (AlarmManager)con.getSystemService(con.ALARM_SERVICE);am.set(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), pi);}//设置闹铃public static void setupAlarm(Context con, SaveDetailInfo mInfo) {if(mInfo == null || mInfo.isHasSet() == false || mInfo.isOpen() == false){Log.i(TAG, "setup alarm error");return;}alarmId = getAlarmId(mInfo.getWeekType(), mInfo.getAmPmType(), mInfo.getStageType());cancelAlarm(con, mInfo);Calendar mCalendar = Calendar.getInstance();int beginHour = mInfo.getBeginTime_hour();int beginMinute = mInfo.getBeginTime_min();mCalendar.set(Calendar.DAY_OF_WEEK, DAYS_KEY_MAP.get(mInfo.getWeekType()));mCalendar.set(Calendar.HOUR_OF_DAY, beginHour);mCalendar.set(Calendar.MINUTE, beginMinute);mCalendar.set(Calendar.SECOND, 0);mCalendar.set(Calendar.MILLISECOND, 0);long triggerAtTime = mCalendar.getTimeInMillis();long now = System.currentTimeMillis(); if (triggerAtTime/1000/60 < now/1000/60) { // 下周 triggerAtTime += AlarmManager.INTERVAL_DAY * 7; } Intent intent = new Intent(UpdateDef.ACTION_UPDATE_REMIND);intent.putExtra(UpdateDef.mAmPm_Flag, mInfo.getAmPmType());intent.putExtra(UpdateDef.mWeek_Flag, mInfo.getWeekType());intent.putExtra(UpdateDef.mStage_Flag, mInfo.getStageType()); PendingIntent pi = PendingIntent.getActivity(con, alarmId, intent, PendingIntent.FLAG_UPDATE_CURRENT);AlarmManager am = (AlarmManager)con.getSystemService(con.ALARM_SERVICE);if(Hardware.getIsSHUTDOWN_WAKEUP()){am.setRepeating(AlarmManager.RTC_SHUTDOWN_WAKEUP, triggerAtTime, INTERVAL, pi);//深度关机时闹铃启动方式RTC_SHUTDOWN_WAKEUP}else{am.setRepeating(AlarmManager.RTC_WAKEUP, triggerAtTime, INTERVAL, pi);}Log.i(TAG, "set alarm: alarmId="+alarmId+", time=" + getTimeStr(beginHour, beginMinute)+", path="+mInfo.getBookPath());}//取消闹铃public static void cancelAlarm(Context con, SaveDetailInfo mInfo) {if(mInfo == null || mInfo.isHasSet() == false){Log.i(TAG, "cancel alarm error");return;}alarmId = getAlarmId(mInfo.getWeekType(), mInfo.getAmPmType(), mInfo.getStageType());Intent intent = new Intent(UpdateDef.ACTION_UPDATE_REMIND);PendingIntent pi = PendingIntent.getActivity(con, alarmId, intent, PendingIntent.FLAG_UPDATE_CURRENT);AlarmManager am = (AlarmManager)con.getSystemService(con.ALARM_SERVICE);am.cancel(pi);Log.i(TAG, "cancel alarm: alarmId="+alarmId);}//-------------------------------------------------------------
0 0
- 闹铃
- 闹铃
- 监测闹铃
- 闹铃软件
- 闹铃设置
- 闹铃问题
- 简易闹铃java源码
- 多媒体(闹铃)
- android 闹铃服务
- android闹铃服务
- 相机,闹铃,铃声
- Android 闹铃的实现
- android手机闹铃
- android闹铃简单实现
- Android 锁屏时也启动闹铃
- android提醒闹铃
- Android 闹铃定时器实现
- 半夜起床写闹铃程序
- 今天有一个人退款
- Redis---Linux环境安装
- scala fold系列函数及 sparkRDD fold 操作解析
- Qt64位编译时,public: void __cdecl QEventDispatcherWin32Private::doWsaAsyncSelect(int).
- 解决IE系列浏览器上传页面接收问题
- 闹铃
- <%=a%>
- QT210烧写UBOOT到SD卡原理以及UBOOT启动
- Hdu 1520 Anniversary party (树形dp入门,类似最大独立集)
- Cognos函数(二十四) - descendants
- 【iOS开发-95】JSON反序列化、XML数据解析以及主线程中的UI更新等小细节
- hadoop 2.2.0集群安装 (转载)
- select last_insert_id() into paraId;
- Linux 汇编语言开发指南