2017-11-15 5 views
0

センサーをAndroidの携帯電話から取得しています。私の期待通りの価値が私に与えられます。私は私のアプリを閉じて、携帯電話を振ると、アプリを再び開き、センサーからのステップ値がカウントアップ(これも私が期待通りです)。

しかし、アプリをバックグラウンドからスワイプして携帯電話を振ってからもう一度アプリを開くと、センサの値は増加しません。

私たちが継続的に動作させたい場合は、センサーを登録解除してはいけません(thisを参照)、type_step_counterのアンドロイドのドキュメントを読んでいます。だから、私はそれを登録解除しませんが、それはカウントを停止しました。ここで

は私のコード(申し訳ありません、セキュリティ上の理由のためのすべてのコードを入れていない)である。
Android type_step_counterの値は、アプリがバックグラウンドにない場合にカウントアップを停止します。

public void onCreate(){ 
    mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    mStepCounterSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER); 
} 

public int onStartCommand(Intent intent, int flags, int startId){ 
    // edited (it was unregister) 
    mSensorManager.registerListener(this, mStepCounterSensor, SensorManager.SENSOR_DELAY_NORMAL); 

    return START_STICKY; 
} 

public void onSensorChanged(SensorEvent event){ 
    float[] values = event.values; 
    Log.d("onSensorChanged", "value: " + String.valueOf(values[0])); // <-- this value does not increase after app stopped 
} 

誰もがこの上の任意の手掛かりを持っていますか? ありがとうございます。

答えて

0

アプリをバックグラウンドからスワイプすると、アプリが完全に閉じていることを意味します。

START_STICKYは、アプリケーションが終了した後もサービスを実行し続けます。

アプリケーションを再開すると、このサービスをもう一度開始すると思いますので、OnStartCommandが呼び出されます。

mSensorManager.unregisterListener(this, mStepCounterSensor, SensorManager.SENSOR_DELAY_NORMAL); 

次に、type_step_counterが再初期化されます。

あなたは、私が何かを間違え本当に申し訳ありません

https://developer.android.com/training/sync-adapters/creating-sync-adapter.html

+0

あなたの基準についてこれを見て持つことができます。その行のregisterListenerでした。私の編集コードm(_ _)mを見てください。リンクをありがとう、私は私の基準の1つを試してみます。 – lutfianasari

+0

私は理解している、ちょうどあなたが再び登録されているので、それは再び最初から始まると言っています –

+0

なぜ値[0]が増加していないのですか? (私は再び登録するので) – lutfianasari

関連する問題