1

最初に私の英語で申し訳ありません。アラームのリストがあり、特定の時間に通知でアプリケーションを起動する必要があります。一度に 1 つのアラームのみを設定します。設定した機能で目覚ましを入れて動作し、次のアラームをブロードキャストに入れましたが、時間通りに起きません。なんで?ミリ秒は異なり、正確ですが、アラームは機能しません。

public static void setNextAlarma(long milisegundos){
    Bundle extras = new Bundle();
    extras.putString("mensaje", "message");
    Intent i = new Intent(InfoApp.ALERT_MANAGER);
    i.putExtras(extras);

    PendingIntent pintent = PendingIntent.getBroadcast(InfoApp.miContexto, (int) milisegundos, i, 0);

    if (milisegundos != 0){
        InfoApp.miContexto.registerReceiver(AlertasBrCast, new IntentFilter(InfoApp.ALERT_MANAGER));

        AlarmManager alarm = (AlarmManager)InfoApp.miContexto.getSystemService(Context.ALARM_SERVICE);

        alarm.set(AlarmManager.RTC_WAKEUP, milisegundos, pintent);

    }
    else{
        AlarmManager alarm = (AlarmManager)InfoApp.miContexto.getSystemService(Context.ALARM_SERVICE);
        alarm.cancel(pintent);
    }
}

public final static BroadcastReceiver AlertasBrCast = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Bundle extras = intent.getExtras();

            String mensaje = "";
            if (extras != null)
                mensaje = extras.getString("mensaje");

            generateNotification(context, mensaje, Calendario.class, null);

            updateAlarm();
        }
    };

    public void updateAlarm(){
// Consult the next alarm in the database 
long fechaNuevaMilli = (Utilidades.strToDate(nuevaFecha,
                    InfoApp.formatoSQL)).getTime();


            Utilidades.setNextAlarma(fechaNuevaMilli);
}

ありがとうございました

4

1 に答える 1

0

alarm.set(AlarmManager.RTC_WAKEUP, miisegundos, pintent); ユーザーが一度だけアラームを設定します。繰り返し機能で遅延間隔を指定します。

ここに完璧な解決策があります

アラーム マネージャの例

于 2013-06-03T11:17:00.543 に答える