-1

センサー値が変化すると回転するコンパス アプリで 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));
.
.
.
}
};

誰かが私を助けることができればうれしいです

4

1 に答える 1