5

私は 1 日に 5 回アラームを発生させる Android アプリケーションを開発しています:
- 毎日の時間は一定ではありません
- アラームが発生した後、次のアラームをスケジュールします。

私の問題は次のとおりです。アラーム通知は 1 日間機能し、その後停止します。また、デバイスを 2 回再起動すると通知が機能しません。それを行う別の方法があるかどうかはわかりません。

コード:ブロードキャストレシーバーを呼び出すこの関数があります

public static void Start_Notifying(Context context){             
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(System.currentTimeMillis());
    cal.add(Calendar.HOUR_OF_DAY,hour);
    cal.add(Calendar.MINUTE, min);      
    Intent intent = new Intent(context,  OnetimeAlarmReceiver.class);
    intent.setAction("START_NOTIFYING");
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, notify.REQUEST_CODE, intent,0);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis() , pendingIntent); 
    SaveAlarmManager(alarmManager, pendingIntent);

}

oneTimeAlarmReciever のコード

public void onReceive(Context context, Intent intent) {     
    main_menu.con = context;                
    Notification notifyDetails;
    NotificationManager nm = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
    notifyDetails = new Notification(R.drawable.icon,s1,System.currentTimeMillis());
    PendingIntent pendingIntent = PendingIntent.getActivity(context, REQUEST_CODE, new Intent(context, prayertimes.class), 0);
    notifyDetails.setLatestEventInfo(context,s2+ notify.prayName , s3, pendingIntent);
    notifyDetails.sound=Uri.parse(PlaySound());
    nm.notify(NOTIFICATION_ID, notifyDetails);                          
    main_menu.notify_me();
}

notify_me() のコード

static void notify_me() {               
    hour =pTime.num1;
    min =pTime.num2;                
    Start_Notifying(con);
}

マニフェスト ファイル内

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>

<receiver class =".OnetimeAlarmReceiver" android:name="OnetimeAlarmReceiver">
    <intent-filter>
        <action android:name="START_NOTIFYING" />
        <action android:name="android.intent.action.BOOT_COMPLETED"> </action>
        <data android:mimeType="audio/ogg" />
    </intent-filter>
</receiver>
4

1 に答える 1

25

システムの再起動後にアラーム通知が停止したのはなぜですか

アラーム スケジュールは再起動時にクリアされるためです。再起動後に再びアラームを鳴らしたい場合は、ブロードキャストBroadcastReceiverに応答するを実装する必要があります。私のレポRECEIVE_BOOT_COMPLETEDdemo/プロジェクトはこれを示しています。WakefulIntentService

于 2011-08-14T19:12:20.783 に答える