Android Coding

카메라 수평계 센서 버그 처리. Orientation

오마로 2017. 3. 10. 15:14
반응형

카메라 수평계 처리에 대한 버그


카메라 화면에서 수평계를 넣어 달라고 해서 적용을 했었다.


카메라 디바이스 센서 중에 Sensor.TYPE_ROTATION_VECTOR이 있으면 센서가동 처리해서 수평계를 그려줌.

Sensor.TYPE_ROTATION_VECTOR
public OrientationSensor(Activity activity) {
mWindowManager = activity.getWindow().getWindowManager();
mSensorManager = (SensorManager) activity.getSystemService(Activity.SENSOR_SERVICE);

// Can be null if the sensor hardware is not available
if (mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR) != null) {
GomsLog.d("OrientationSensor", "Sensor.TYPE_ROTATION_VECTOR");
mRotationSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
}else{
GomsLog.d("OrientationSensor", "NULL");
isEnable = false;
}
}


헐, 그런데, 최신 갤럭시 A5(2016) 디바이스에서 수평계 기능이 정지되어 있음.

머지 머지 머지..


해결은 아래와 같이 추가해서 정상 가동 시킴.

public OrientationSensor(Activity activity) {
mWindowManager = activity.getWindow().getWindowManager();
mSensorManager = (SensorManager) activity.getSystemService(Activity.SENSOR_SERVICE);

// Can be null if the sensor hardware is not available
if (mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR) != null) {
GomsLog.d("OrientationSensor", "Sensor.TYPE_ROTATION_VECTOR");
mRotationSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
}else if (mSensorManager.getDefaultSensor(Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR) != null) {
GomsLog.d("OrientationSensor", "ensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR)");
mRotationSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR);
}else{
GomsLog.d("OrientationSensor", "NULL");
isEnable = false;
}
}

최신폰은 Sensor.TYPE_ROTATION_VECTOR 를 지원하지 않고, Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR를 지원하는가 보다 ^^


안드로이드 폰도 많고, 버전도 많고, 갈 길은 멀고 ^^


행십리자반구십





반응형