android 2.3.6中的摄像头方向
问题描述:
我在android 2.3.6 device.Y显示摄像头预览时遇到了问题。我已经使用这段代码改变摄像头的方向,但是对于2.3.6而言,它不工作,而对于其他版本,它正在工作正常。android 2.3.6中的摄像头方向
第一张图片,在设备2.3.6.I 2图像要为设备摄像头预览的相同2.2.1 2.3.6.Below是我代码
if (Integer.parseInt(Build.VERSION.SDK) >= 8)
{
mCamera.setDisplayOrientation(90);
}
else
{
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
{
p.set("orientation", "portrait");
p.set("rotation", 90);
}
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
{
p.set("orientation", "landscape");
p.set("rotation", 90);
}
}
而且我已经指定了清单中的屏幕方向肖像。一定建议我一个解决方案。提前感谢。
答
请参考下面的代码:
private void setCameraDisplayOrientation(int cameraId, android.hardware.Camera camera) {
int rotation = getWindowManager().getDefaultDisplay()
.getRotation();
int degrees = 0;
int result;
if(Build.VERSION.SDK_INT>10){
android.hardware.Camera.CameraInfo info =
new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(cameraId, info);
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;
}
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;
}
camera.setDisplayOrientation(result);
}else{
if(cameraId==CAMERA_FACING_BACK){
camera.setDisplayOrientation(90);
}else{
camera.setDisplayOrientation(270);
}
}
}
可以使用
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
private Camera openFrontFaceCamera() {
int cameraCount = 0;
Camera cam = null;
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
cameraCount = Camera.getNumberOfCameras();
for (int camIdx = 0; camIdx < cameraCount; camIdx++) {
Camera.getCameraInfo(camIdx, cameraInfo);
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT ) {
try {
mCameraId=camIdx;
cam = Camera.open(camIdx);
} catch (RuntimeException e) {
Log.e("Custom Camera", "Camera failed to open: " + e.getLocalizedMessage());
}
}
}
return cam;
}
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
private Camera openRearFaceCamera() {
int cameraCount = 0;
Camera cam = null;
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
cameraCount = Camera.getNumberOfCameras();
for (int camIdx = 0; camIdx < cameraCount; camIdx++) {
Camera.getCameraInfo(camIdx, cameraInfo);
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK ) {
try {
mCameraId=camIdx;
cam = Camera.open(camIdx);
} catch (RuntimeException e) {
Log.e("Custom Camera", "Camera failed to open: " + e.getLocalizedMessage());
}
}
}
return cam;
}
哪个设备是您使用获得摄像机ID? – jpa