3

我正在使用 SurfaceView 和 Google 的 Mobile Vision 库。对于许多设备来说,它看起来不错,但是当与 Nexus 7 等少数设备一起使用时,相机视图会进入横向模式。这使得扫描条形码等变得困难,因为难以正确聚焦和定位。

正如我所探索的,在 Vision 库中,没有任何方法可以返回硬件摄像头,因此我们可以管理方向,例如如果摄像头视图返回横向,那么我们可以动态旋转视图以使其看起来像纵向。

所以想问问像Nexus 7这样的设备是否有任何方法可以将相机或视图更改为纵向。

欢迎任何帮助!谢谢

4

2 回答 2

0

我找到了一个解决方案,让自己从这个人的回答中得到一个想法: https ://stackoverflow.com/a/41634379/5028531

所以我做了什么:

        cameraPreview.getHolder().addCallback(new SurfaceHolder.Callback() {
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
                try {

                    cameraSource.start(cameraPreview.getHolder());
                    Field[] declaredFields = CameraSource.class.getDeclaredFields();

                    for (Field field : declaredFields) {
                        if (field.getType() == Camera.class) {
                            field.setAccessible(true);
                            try {
                                Camera camera = (Camera) field.get(cameraSource);
                                if (camera != null) {
                                    Camera.Parameters params= camera.getParameters();
                                    camera.setDisplayOrientation(0);
                                }
                            } catch (IllegalAccessException | RuntimeException e) {
                                e.getMessage();
                            }

                            break;
                        }
                    }
                } catch (IOException e) {
                    Log.e("CAMERA SOURCE", e.getMessage());
                    e.printStackTrace();
                }
            } else {
                Log.w("CAMERA SOURCE", "Permission not granted");
                Toast.makeText(getActivity(), "Camera permission denied", Toast.LENGTH_SHORT).show();
            }
        }
于 2017-03-08T19:40:48.697 回答
0

许多选项卡的摄像头安装在旋转位置,因此当水平握持时,即使图像实际上比高度更宽,照片也会被视为“纵向”。在我前段时间构建的一个应用程序上,我很难学会它。唯一的方法是检查屏幕方面与图像方面和图像旋转。通过比较这些,您可以推断出相机图像是否正确旋转,或者是否需要 90 度后旋转。

于 2016-05-11T12:23:17.513 回答