2012-05-03 22 views
1

私は、Bluetoothの電源をオンにして、曜日の時刻をユーザからオフにするアプリケーションを開発し、アラームサービスを使用する予定です。私はテストのためにつかんだコードを使っていました。アラームサービスを使用して毎日特定の時刻にブルートゥースをオフにする

Intent myIntent = new Intent(AndroidAlarmService.this, MyAlarmService.class); 

pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0); 

     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
     /* 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     calendar.add(Calendar.SECOND, 30); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 
     pendingIntent); 

     */ 

     Calendar cur_cal = new GregorianCalendar(); 
     cur_cal.setTimeInMillis(System.currentTimeMillis()); 
     Calendar cal = new GregorianCalendar(); 
     cal.add(Calendar.DAY_OF_YEAR, cur_cal.get(Calendar.DAY_OF_YEAR)); 
     cal.set(Calendar.HOUR_OF_DAY, 13); 
     cal.set(Calendar.MINUTE, 23); 
     cal.set(Calendar.SECOND, 0); 
     cal.set(Calendar.MILLISECOND, cur_cal.get(Calendar.MILLISECOND)); 
     cal.set(Calendar.DATE, cur_cal.get(Calendar.DATE)); 
     cal.set(Calendar.MONTH, cur_cal.get(Calendar.MONTH)); 

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

しかし、これは午後1時30分にサービスを開始しません。 コメントアウトされたコードは正常に動作します。それは現在の時間から30分間の間に私の警報を引き起こす。しかし、私はハードコード時間。それは仕事をしません。私は、Calender calのコードスニペットの間違いを理解することはできません。

私は間違っていますか?

答えて

0

繰り返しアラームが必要な場合は、代わりにalarmManager.setRepeating(...)を使用してください。 alarmManager.set(...)は1回だけトリガーします。

+0

はいオフコースです。しかし私はちょうどテストするためにセットを使用しました。私が – learner

+0

を指定した時にアラームが消えない場合は、開始時にSystemClock.currentTimeMillis()を試してみてください。あなたのpendingIntentが起動しているか、カレンダーが起動しないことを確認してください。 – Thkru

+0

コメントアウトされたコードを問題なく使用していると私の保留中の意図が発砲しています。ハードコーディングされたカレンダーインスタンスはそれを起動しません – learner

関連する問題