2016-07-20 3 views
2

私はAlarmManagerで5分ごとに呼び出すサービスを使用して慣性センサからデータを収集するAndroid Appを開発しています。このサービスには、1分だけデータを収集するタイマーがあります。だから私は1分のデータを収集し、4分間スリープ状態にしたい(ループプロセス)。問題は、setRepeating()を使用したAlarmManagerが、API> 19で正確に(1分以上遅れて)表示されないことです。AlarmManagerがAPIを使用して正確な繰り返し間隔を設定しました。> 19

public void startservice(View view){ 
    AlarmManager scheduler = (AlarmManager) getSystemService(ALARM_SERVICE); 
    Intent intent = new Intent(getApplicationContext(), SensorLogger.class); 
    PendingIntent scheduledIntent = PendingIntent.getService(getApplicationContext(), 0, intent, 0); 
    scheduler.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 60000 * 5, scheduledIntent); 
} 

などのサービス何かに:

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    timer.scheduleAtFixedRate(new stoptask(), 60000, 60000); 

... 

return START_NOT_STICKY; 
} 

private class stoptask extends TimerTask 
{ 
    public void run() 
    { 
     ... 

     timer.cancel(); 
     stopSelf(); 
    } 
} 

おかげポストの多くではなく、明確な解決策は、私が持っているMainActivityでは...あります!

答えて

2

繰り返しapiを使用することはできません。 1つの正確なアラームを設定し、そのアラームの中に新しいアラームを設定する必要があります。

私はアンドロイドで複数のタイマー実装を担当するライブラリを投稿しました。http://gabesechansoftware.com/timers-in-android/を参考にしてください。

関連する問題