2017-07-06 25 views
2

私はこのような再起動から受信ステップからデモを作成しています。Sensor StepCounterがSamSungデバイスでうまく動作しない

public class MainActivity extends AppCompatActivity implements SensorEventListener { 
    private SensorManager sensorManager; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     ... 
     sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);  
     sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_UI); 
    } 

    @Override 
    public void onSensorChanged(SensorEvent event) { 
     if (event.sensor.getType() == Sensor.TYPE_STEP_COUNTER) { 
      Log.i("TAG","step from reboot" + String.valueOf(event.values[0])); 
     } 
    } 
} 

しかし、私は私のデバイス(サムスンギャラクシーS4)でテスト、STEP_COUNTERはいつか:(うまく機能していない。私は

見られる多くの多くのテストの後 SHealth

と比較することによってそれを把握

ほとんどの時間、STEP_COUNTERは、SHealthBUTと異なる場合がありますので、SHealthは別のセンサーをカウントステップとして使用することがありますが、どのセンサーがわからないのですか?STEP_DETECTORSTEP_DETECTORが画面を消すときに非常に少ないステップを返すためです。

いつか、SHealthはまだステップを返しながら作業STEP_COUNTERストップは、例えば、私は、私は約200ステップ=> SHealthディスプレイ305とデモアプリケーションを歩き続け、約100ステップ=> SHealthディスプレイ110とデモアプリケーションディスプレイ100を歩きます私も(:(低い評価と)異なるデバイスを持つ多くのユーザーから報告を受けたが、私は私のデバイス上でそれを再現することができ

ディスプレイ121(それが仕事を止めるように見える)。

私にはわかりませんこの問題を解決するにはどうすればいいですか?私はが受信ステップに最適なセンサーだと思います(STEP_DETECTORと比較)

ご意見やご提案をいただければ幸いです。

答えて

0

アプリを離れるときにセンサーの登録を解除しますか? SDKのドキュメントによると:

「あなたが継続的にステップ数長期間にわたって追跡したい場合は、それは場合でも、バックグラウンドでカウントステップを続けるように、は、このセンサーのために登録を解除しません。 APはサスペンドモードにあり、APが起きているときの総カウントを報告します。

希望これは、携帯電話のデフォルトのステップセンサを使用するときに我々はまた、この問題に遭遇した...

+0

ありがとうございますが、私はアプリを離れるときにセンサーの登録を解除しません。 –

2

をするのに役立ちます。しかし、私たちはTYPE_STEP_DETECTORを使用しています。問題はありません(100000人を超えるユーザー)、何か問題がありますか? この問題は、このようなメカニズムに頼ることができないという点では非常に似ています。私たちの場合、私たちは短い時間で多くのステップを受けました。あなたが虎であっても、あなたはそれを多くのステップにすることはできません。

サムスンのデバイスではないが、サムスンはOSを操作して、ネクサスデバイスでうまくいくものがたくさんある。 ステップセンサーの動作を修正しようとしたところ、サムスンの携帯電話、またはそれをサポートしていない携帯電話の代替手段が必要であることが分かりました。

参考までに、一部の携帯電話(主にモトローラ)にはステップセンサーが搭載されていないため、センサーを見つけようとしたときにnullが返されました。

SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    Sensor stepDetector = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR); 
    if (stepsDetector != null) { 
    //Do something 
    } 

あなたはwakelock and accelerometerを(巨大なバッテリー消費を有し、を見る)を使用して、独自のメカニズムを実装することができます。

関連する問題