Я пишу приложение, которое планирует запуск акселерометра каждые 15 секунд и запускаю его 10 секунд, чтобы получить данные датчика. Я запускаю акселерометр с помощью alarmManager и продолжаю работать с wakelock, когда экран выключается. Но я нашел иногда :
- Акселерометр не может получить данные через несколько периодов. Я имею в виду, что он был запущен в соответствии с logcat, но нет данных датчика, затем он закрывается и снова запускается без данных.
- Я не знаю, почему акселерометр больше не запускался после нескольких периодов, и раньше было хорошо. Я обнаружил, что logcat говорит: «слушатель со связующим android.os.BinderProxy не существует акселерометр». Я не знаю почему.
следующий код ядра:
Activity.java
Intent intent = new Intent(getApplicationContext(),SensorService.class);
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
long curTime = Calendar.getInstance().getTimeInMillis();
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, curTime, _intervalTime, pendingIntent);
SensorService.java
public void onStart(Intent intent, int startId) {
new Thread(new Runnable(){
public void run() {
// TODO Auto-generated method stub
wl.acquire();
Log.d(TAG,"I'm bright!");
try {
Thread.sleep(_delayClose);// kill self after _delayClose ms
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
stopSelf();// SensorService.this.stopSelf()
}
}).start();
this.mSensorManager.registerListener( _sensorHandle,
accSensor,
sensorDelay)
}
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
this.mSensorManager.unregisterListener(_sensorHandle);
Log.d(TAG,"TIEM UP");
if(wl.isHeld())
{
wl.release();
}
}