Calendar cal = Calendar.getInstance(); cal.add(Calendar.SECOND, 30); Log.d(TAG, "設定鬧鐘於30秒後: " + cal); Intent intent = new Intent(this.ctx, TestReceiver.class); intent.putExtra("msg", "傳訊息給鬧鐘"); PendingIntent pi = PendingIntent.getBroadcast(this.ctx, 1, intent, 0); AlarmManager am = (AlarmManager) this.ctx.getSystemService(Context.ALARM_SERVICE); am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 5 * 1000, pi);剩下的部份參考 在 Android 裡使用一次性鬧鐘(AlarmManager)。
不同的地方在於使用 am.setRepeating(...) 取代 am.set(...) ,第三個參數為鬧鐘時間週期,單位為毫秒。
還有一個不同的地方為 PendingIntent.getBroadcast(...) 最後一個參數,因為是週期式鬧鐘,所以不可以使用 PendingIntent.FLAG_ONE_SHOT,可以直接使用 0,或者用 PendingIntent.FLAG_CANCEL_CURRENT、PendingIntent.FLAG_NO_CREATE、PendingIntent.FLAG_UPDATE_CURRENT,都有一樣的效果,但是我沒深究其中的差異。
沒有留言:
張貼留言