2016-04-01 14 views
0
 Calendar calendar = Calendar.getInstance(); 
     Intent myIntent = new Intent(CubeActivity.this, MyReciever.class); 

     SharedPreferences shared = getApplicationContext().getSharedPreferences("notification5", getApplicationContext().MODE_PRIVATE); 
     SharedPreferences.Editor editor = shared.edit();  
     editor.putInt("minutes", (calendar.get(Calendar.HOUR_OF_DAY))-1); 
     editor.commit(); 

     myIntent.putExtra("minutes", (shared.getInt("minutes", 0))); 

     PendingIntent pendingIntent = PendingIntent.getBroadcast(CubeActivity.this, 0, myIntent,0); 

     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
      alarmManager.set(AlarmManager.RTC_WAKEUP,shared.getInt("minutes", 0), pendingIntent); 
+0

正しくあなたの質問を教えてください。 –

+0

アラームマネージャの.set()メソッドを使用すると、24時間後に通知が送信され、その後kikatおよびlollipop電話で通知が不規則に送信されることがあります。 – kk2004

+0

API 19から、このメソッドに渡されるトリガ時間は不正確として扱われます。これを読んでください-http://developer.android.com/reference/android/app/AlarmManager.html#set(int、long、android.app.PendingIntent) –

答えて

0

shared.getInt("minutes", 0)をトリガー時間として使用します。ただし、トリガー時間は、アラームが鳴る時間をミリ秒単位で指定する必要があります。 APIドキュメントによると

ます。public voidセット(int型、長いtriggerAtMillis、PendingIntent操作)

int型:ELAPSED_REALTIME、ELAPSED_REALTIME_WAKEUP、RTC、またはRTC_WAKEUPの一つ。

triggerAtMillis long:適切なクロック(アラームの種類によって異なる)を使用して、アラームが鳴る時間をミリ秒単位で指定します。

操作PendingIntent:アラームが鳴ったときに実行するアクション。通常はIntentSender.getBroadcast()から取得されます。代わりに、コードの下に

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
alarmManager.set(AlarmManager.RTC_WAKEUP,shared.getInt("minutes", 0), pendingIntent); 

使用を使用しての

0

long TICK_TIME = 60*1000; //the time to trigger alarm manager rite now its 1 minute 
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
alarmManager.set(AlarmManager.RTC_WAKEUP,Calendar.getInstance().getTimeInMillis(), TICK_TIME, pendingIntent); 
+0

24時間ごとにアラームを発生させたい。私はどんなパラメータを使うべきですか? – kk2004

+0

24 * 60 * 60 * 1000(24時間)。 – Pankaj

関連する問題