2017-07-08 4 views
-1

ある時間間隔でアラームを設定する必要があります。それを達成するために私が書いた:Androidでアラームマネージャーが動作しない

TestFragmentクラス

private void setupAlarmManager(){ 
    AlarmManager manager = manager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE); 
    Intent alarmIntent = new Intent(getContext(), AlarmReceiver.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), i, alarmIntent, PendingIntent.FLAG_ONE_SHOT); 
    manager.set(AlarmManager.RTC_WAKEUP,1499510100000L, pendingIntent); 
    manager.set(AlarmManager.RTC_WAKEUP,1499510220000L, pendingIntent); 
} 

AlarmReceiverクラス

public class AlarmReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
    Toast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show(); 
} 

}

を私はToast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show();でデバッグポイントを置くが、何も起こりませんでした。

午後4 = 1499510100000L 16:03 = 1499510220000L

私はここで間違って何をしているのだろうか?さらにonReceiveメソッドにローカル通知を追加したいと思います。

+0

'4PM = 1499510100000L 4:03 PM = 1499510220000L' **間違った**。これらの値は、アラームマネージャが実行されてから待機する予定の*ミリ秒*です。 **時間価値ではありません**。ちなみに、1499510100000は約47年半に相当します。あなたはおそらく、あなたの警報が発射されるかどうかを確認するためにこのような長い時間を待つことを望んでいない...;) –

+1

1499510100000Lはどこから来ますか?代わりにカレンダーを使用してください。 –

+0

@Rotwang @Mehranこの値は間違っている可能性があります。私はそれをチェックしますが、これらの値は 'Java.Util'タイムライブラリを使ってミリ秒単位で時間を格納するデータベースから来ています。ここで 'Calendar'ではなく' new Date()。getTime() 'を使うことはできませんか? –

答えて

1

アラーム時刻を設定するには、Calendarオブジェクトを使用する必要があります。あなたのような何かを行うことができます午後4時のアラームについては

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR_OF_DAY, 16); 
calendar.set(Calendar.MINUTE, 0); 
calendar.set(Calendar.SECOND, 0); 
calendar.set(Calendar.MILLISECOND,0); 

次に、あなたがすでに行ったように、あなたのAlarmManagerを設定するが、最後の行を使用する:

alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 

は、たぶん、あなたがしたいです繰り返すアラームを使用するか、またはHandler

https://developer.android.com/training/scheduling/alarms.html

+0

これらの値は、 'Java.Util'タイムライブラリを使ってミリ秒単位で時間を格納するデータベースから来ています。ここで 'Calendar'ではなく' new Date()。getTime() 'を使うことはできませんか?私はミリ秒で2つの時間(もっと多くのことがあります)を得ようとしています。 –

+0

私はすでにミリ秒で日付を持っているので、カレンダーも同じことをします –

関連する問題