これは私の最初の投稿です。質問をする前に、このサイトのチームとすべての貢献者に感謝したいと思います。ここにある情報は、Android 向けの開発を開始するのに大いに役立ちました。これが私の問題です。圧力センサーのデータから計算された現在の高度を表示する DashClock の小さな拡張機能を作成しました。画面がオンになっている限り、すべて正常に動作します。しかし、画面がオフになると、圧力センサーはサンプルの配信を停止します。私は多くのことを試みましたが、成功しませんでした:ウェイクロックを設定し、SensorEventListenerを登録解除して再登録し、指定されたスレッドに入れます...これを機能させる方法を知っている人はいますか? 毎秒、毎分などのサンプルは必要ありません。ここに私のコードの関連部分があります: (RTC_WAKEUP -> AlarmReceiver.onReceive -> SensorService を開始します)
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("Alarm!");
context.startService(new Intent(context, PressureSensorService.class));
}
}
public class PressureSensorService extends Service implements SensorEventListener {
final static String SENSOR_UPDATE_ACTION = "SENSOR_UPDATE_ACTION";
private float pressure;
private SensorManager mgr;
private Sensor pressuresensor;
Intent intent = new Intent("SENSOR_UPDATE_ACTION");
@Override
public void onCreate(){
System.out.println("PressureSensorService created!");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
System.out.println("PressureSensorService started!");
mgr = (SensorManager) this.getSystemService(SENSOR_SERVICE);
pressuresensor = mgr.getDefaultSensor(Sensor.TYPE_PRESSURE);
mgr.registerListener(this, pressuresensor, SensorManager.SENSOR_DELAY_NORMAL);
return START_STICKY;
}
@Override
public void onDestroy(){
mgr.unregisterListener(this, pressuresensor);
System.out.println("PressureSensorService stopped!");
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
PressureSensorService.this.pressure = event.values[0];
intent.putExtra("pressure", pressure);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
System.out.println("Pressure = "+ pressure + " hPa");
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}