電話が動いているときを検出したいのですが、すべての種類の動きではありません。たとえば、電話を手に取ったり振ったりしても、トリガーされるべきではありません。
理想的には、電話/人が「歩いている」状態のときにコードを実行したいと思います。どのようなオプションがありますか?
加速度計とデジタルコンパスの組み合わせを、それらを備えた電話で使用して、速度と方向を決定できます。
人が歩いているかどうかを判断するだけの場合、必要なのは加速度計だけです。フットステップの出力を処理するだけです。
加速度計で足のステップを検出するためのチュートリアルがWeb上にたくさんあります。
Wifi-NetworksとCellTowersから現在地を取得することもできます。Androidのすべてのロケーションプロバイダーは、android.location.LocationProviderのサブクラスです。それはおそらく始めるのに良い場所です。それらの「範囲」は数百フィートの幅になる可能性があるため、どちらが最適かはわかりません。
Android加速度計は、SensorEventクラスを使用して加速度を知る機能を提供します。したがって、クラスのオブジェクトを使用し、onSensorChanged()を処理して、デバイスの動きを判別します。
x = SensorEvent.values [0]; x方向の加速度を示します。
したがって、興味があるかもしれないのは、x、y、z方向の加速度を見つけて、そのような最後の10個のサンプルの平均と標準偏差を計算してみることです。標準偏差に取り組むことで、確実に正しいポイントにたどり着くことができます。0になる場合は、デバイスが静止していることを意味します。SD> 0.5で15秒以上かかる場合は、デバイスが継続的に移動していることを意味します。Lemmeは、さらにサポートが必要かどうかを知っています。
乾杯、ニティーン