センサー値が変化すると回転するコンパス アプリで ImageView を使用しました。問題は、デバイスが 173 ~ 186 度の角度に達すると、ImageView が 0 ~ 360 度の角度から連続的に回転し始めることです。この特定の問題は、このアプリが完全に正常に動作する前に、ImageView の回転速度を下げるコードを追加した後に始まりました。
回転数を下げる方法を追加
protected float[] lowPass( float[] input, float[] output ) {
if ( output == null ) return input;
for ( int i=0; i<input.length; i++ ) {
output[i] = output[i] + ALPHA * (input[i] - output[i]);
}
return output;
}
メソッドが呼び出されるセンサーイベントリスナー
private SensorEventListener mySensorEventListener = new SensorEventListener() {
.
.
.
public void onSensorChanged(SensorEvent event) {
.
.
.
SensorManager.getOrientation(rotationMatrix, orientationValues);
accelVals = lowPass( orientationValues, accelVals );
azimuth = (int) Math.toDegrees(accelVals[0]);
azimuth = (azimuth +360)%360;
allowRotating=true;
dialer.post(new RotateRunnable(azimuth));
.
.
.
}
};
誰かが私を助けることができればうれしいです