Согласно сайту разработчика Android:Android Camera Preview Rotation
после андроида 2.2 есть функция
"setDisplayOrientation"
для регулировки вращения камеры предварительного просмотра.
А также, согласно сайту разработчиков Android, мы можем найти следующий исходный код.
android.hardware.Camera.CameraInfo info =
new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(cameraId, info);
int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
int degrees = 0 ;
switch (rotation) {
case Surface.ROTATION_0 : degrees = 0 ; break ;
case Surface.ROTATION_90 : degrees = 90 ; break ;
case Surface.ROTATION_180 : degrees = 180 ; break ;
case Surface.ROTATION_270 : degrees = 270 ; break ;
}
int result ;
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
result = (info.orientation + degrees) % 360 ;
result = (360 - result) % 360 ; // compensate the mirror
} else { // back-facing
result = (info.orientation - degrees + 360) % 360 ;
}
Однако я не могу работать с устройствами. Как Samsung Galaxy Y S5360, S5660, YP-G1, YP-G70 и т. Д.
Только часть машины не работает, Galaxy Nexus, SII или какое-то высокопроизводительное устройство, оно отлично работает.
Не поддерживает ли setDisplayOrientation, или прошивка устройств не готова?
PS. Все устройства Android 2.3.1 или выше.
Помощь.
Я столкнулся с той же проблемой на своей Галактике Y. Вы что-то узнали? Я хотел бы знать, по крайней мере, если setDisplayOrientation преуспел, чтобы заблокировать его в ландшафт, если нет. –
наконец, не решен. просто сделайте активность поверхности камеры горизонтальной. –
У кого-нибудь есть список устройств, на которых происходит эта ошибка? Любая помощь будет оценена по достоинству. – patrickfdsouza