Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 方向摄像机一直都是错误的_Android_Layout_Camera_Orientation - Fatal编程技术网

Android 方向摄像机一直都是错误的

Android 方向摄像机一直都是错误的,android,layout,camera,orientation,Android,Layout,Camera,Orientation,我无法在相机预览上设置正确的方向,我尝试了所有的方法,但任何方法都不管用。我想像Android应用程序一样观看预览,我的活动方向是横向,我不知道这是对还是错。在连续的一行中,我解释了我的尝试: -更改setDisplayOrientation(90),但仅当手机垂直时才起作用,当我再次更改方向时,方向错误。 -我尝试设置纵向,但当图像保存时,方向是错误的,如果我尝试使用exif all time方向为0进行更改,则不起作用。 -我看了所有的问答,一切都正常 我想杀死我的智能手机,但它是一个物体,

我无法在相机预览上设置正确的方向,我尝试了所有的方法,但任何方法都不管用。我想像Android应用程序一样观看预览,我的活动方向是横向,我不知道这是对还是错。在连续的一行中,我解释了我的尝试: -更改setDisplayOrientation(90),但仅当手机垂直时才起作用,当我再次更改方向时,方向错误。 -我尝试设置纵向,但当图像保存时,方向是错误的,如果我尝试使用exif all time方向为0进行更改,则不起作用。 -我看了所有的问答,一切都正常


我想杀死我的智能手机,但它是一个物体,没有生命。非常感谢

Android摄像头的东西非常令人沮丧,我明白这一点。请确保通读所有代码,并查看以下代码引用自:


嗯,现在我用肖像模式调整,但是预览图像有点拉长,为什么会这样?我没有边距,所有的布局都是预览。有时你必须找到一个预览大小,其比例与你的屏幕比例相匹配。我不知道为什么会发生这种情况,对不起。@Uxonith在这种情况下是怎么回事?应该是什么?@Euridice01我已经很久没有发布这篇文章了,但我假设cameraId是指前摄像头还是后摄像头。所以你应该能够从你正在使用的相机中取出它。请注意,Camera类已被弃用,取而代之的是Camera2(尽管需要API 21)。
public static void setCameraDisplayOrientation(Activity activity,
         int cameraId, android.hardware.Camera camera) {
     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;
     }
     camera.setDisplayOrientation(result);
 }