여기에 내가 허용 솔루션에 언급되지 않은 몇 가지 세부 사항 추가합니다 : 다음 코드를 사용할 수 있습니다 구현해야 작동하려면 위의 솔루션을
을 android.hardware.SensorEventListener 인터페이스입니다.
당신은 다음과 같은 onResume과 onPause 방법에 SensorEventListener에 등록하는 것이 필요합니다, 깜박임을 방지하기 위해, 샘플링 기간 동안 SensorManager 뭔가를 낮은 값을 사용
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this,
mRotVectSensor,
SensorManager.SENSOR_STATUS_ACCURACY_LOW);
}
@Override
protected void onPause() {
// unregister listener
super.onPause();
mSensorManager.unregisterListener(this);
}
참고 "@Bytecode" .SENSOR_STATUS_ACCURACY_LOW.
나는 센서가 장치가 처리 할 수있는 것보다 더 많은 데이터를 보내고 결과적으로지도 카메라가 이상한 방향으로 움직이기 시작한다는 것을 알아 차렸다.도움이되었다
@Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
SensorManager.getRotationMatrixFromVector(
mRotationMatrix, event.values);
float[] orientation = new float[3];
SensorManager.getOrientation(mRotationMatrix, orientation);
if (Math.abs(Math.toDegrees(orientation[0]) - angle) > 0.8) {
float bearing = (float) Math.toDegrees(orientation[0]) + mDeclination;
updateCamera(bearing);
}
angle = Math.toDegrees(orientation[0]);
}
}
... 난 심지어 그 기능에 대한 감사를 몰랐 :
가 onSensorChanged에 의해 처리되는 데이터의 양을 제어하기 위해, 나는 다음과 같은 구현을 제안한다. 나에게 잘 작동한다. (v7) –그는 똑같은 일을하고 싶다. –