Android:OnSensOrchangedに代わるものはありますか?電話がテーブルに背を向けているとき(動きがない場合)加速度計のデータはありません
-
24-10-2019 - |
質問
したがって、このコードを使用して加速度計データを取得しています。私がDDMSモードで、印刷ステートメントが印刷されているものを確認するとき、電話が動かないときに何も印刷されていないことに気付きました。すなわち。それはテーブルの上です。その理由は、携帯電話が動かないときにssensorchangedが呼び出されず、電話が再び動き始めたときに呼び出されたからだと思います。電話が動いているかどうかに関係なくデータをキャプチャしたい場合、他の機能を使用する必要がありますか?代替品はありますか?または解決策はありますか?どんなことにも感謝します。
ありがとう!
public void onSensorChanged(SensorEvent event) {
StringBuffer buff = new StringBuffer();
buff.append(String.valueOf(event.timestamp));
buff.append(comma);
buff.append(String.valueOf(event.values[0]));
buff.append(comma);
buff.append(String.valueOf(event.values[1]));
buff.append(comma);
buff.append(String.valueOf(event.values[2]));
mCurrentFile.println(buff.toString());
mCurrentFile.write(buff.toString()+ '\n');
System.out.println( "**" + buff.toString());
}
解決
センサーの変更を聞く1つのスレッドを使用できます(つまり、 onSensorChanged()
それはデータをグローバル変数に書き込みます)とタイマーを実行している別のスレッド(を見てください postDelayed
, http://developer.android.com/reference/android/os/handler.html)それはセットタイムでそれを読みます。変更がない場合、同じデータを再度読み取ります。簡単で清潔で、バッテリーにぴったりです。
他のヒント
この方法が「センサーが変更される」ときにのみ呼び出される場合は、実行されたときに読み取られた値を保存してみてください。メソッドが呼び出されていない場合、それは値が同じであるという意味ではありませんか?
所属していません StackOverflow