[英]Show status bar notification in certain time
我想每天同時顯示用戶通知。 現在,我只有以下代碼:
我的TimeAlarm.class顯示通知:
public class TimeAlarm extends BroadcastReceiver {
NotificationManager nm;
@Override
public void onReceive(Context context, Intent intent) {
nm = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
CharSequence from = "Nithin";
CharSequence message = "Crazy About Android...";
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
new Intent(), 0);
Notification notif = new Notification(R.drawable.ic_launcher,
"Crazy About Android...", System.currentTimeMillis());
notif.setLatestEventInfo(context, from, message, contentIntent);
notif.sound = Uri.parse("android.resource://"
+ context.getPackageName() + "/" + R.raw.test);
// r.play();
nm.notify(1, notif);
}
}
通知的初始化以每5秒顯示一次:
public void setRepeatingAlarm() {
Intent intent = new Intent(this, TimeAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
intent, PendingIntent.FLAG_CANCEL_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),
(5 * 1000), pendingIntent);
}
現在我的問題是我應該如何修改此代碼以將通知設置為在特定時間每天重復。 例如每天14:36鍾嗎?
一種簡單但不精確的方法是明天將System.currentTimeMillis()
更改為14:36的計算,可能使用Calendar
對象:
Calendar cal=Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 14);
cal.set(Calendar.MINUTE, 36);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
if (cal.getTimeInMillis() < System.currentTimeMillis()) {
cal.add(Calendar.DAY_OF_YEAR, 1);
}
我說“ easy-but-inexact”是因為一旦您的android:targetSdkVersion
為19或更高版本,Android 4.4就會將setRepeating()
的行為更改為不精確。 如果您需要精確的警報,則需要使用setExact()
並進行自己的“重復”(通過在警報消失時再次調用setExact()
)。 您仍然會在每次setExact()
調用上使用相同的Calendar
類型的計算。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.