1

これは私の最初の投稿です。質問をする前に、このサイトのチームとすべての貢献者に感謝したいと思います。ここにある情報は、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;
    }
}
4

0 に答える 0