センサー値が変更されたときに、それに応じてデータを表示する必要があるという要件があります。
現在私がやっていることは、現在の方位値と以前の方位値に 10 度の変化がある場合、何らかのアクションを実行することです。
問題は、(コードで述べたように) 10 度の変化ごとに、アクションが実行されていることです。10 度変化するたびにこのアクションを実行したくありません。デバイスの回転が停止するたびに、方位角の値が考慮され、アクションが実行されます。カウンターも利用しました。しかし、役に立たない。これは私を殺している。
ここに私のコードがあります、
public void onSensorChanged(SensorEvent paramAnonymousSensorEvent) {
CameraSearch.this.azimuth = paramAnonymousSensorEvent.values[0];
CountDownTimer myCountDown = new CountDownTimer(2000, 1000) {
public void onTick(long millisUntilFinished) {
// update the UI with the new count
}
public void onFinish() {
Log.d("","Counter finished");
if (Math.abs(CameraSearch.this.azimuth - previousAzimuth) >= 10) {
Log.d("", "Azimuth: " + CameraSearch.this.azimuth
+ "PreviousAzimuth: " + previousAzimuth);
CameraSearch.this.findScreenOrientation();
previousAzimuth = CameraSearch.this.azimuth;
}
}
};
// start the countDown
myCountDown.start();
}
};
解決策を教えてください。ユーザーがデバイスの回転を停止すると、現在の方位角の値が取得され、アクションが実行されます。私を助けてください!!
前もって感謝します!!