반응형
카메라 수평계 처리에 대한 버그
카메라 화면에서 수평계를 넣어 달라고 해서 적용을 했었다.
카메라 디바이스 센서 중에 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를 지원하는가 보다 ^^
안드로이드 폰도 많고, 버전도 많고, 갈 길은 멀고 ^^
행십리자반구십
반응형
'Android Coding' 카테고리의 다른 글
실시간 permission 처리 #2 (0) | 2017.03.17 |
---|---|
Activity Intent Flag 참조글 (0) | 2017.03.13 |
전방카메라(셀카) 촬영 시, 해당 비트맵 회전 및 좌우처리 (0) | 2017.03.10 |
실시간 permission 처리 (0) | 2017.03.09 |
AsyncTask doInBackground가 먹지 않는 경우 (0) | 2017.03.09 |