奇怪的错误 - “似乎你的设备不支持相机..”

时间:2013-07-12 10:31:13

标签: android opencv android-fragments android-camera android-videoview

我创建了FragmentActivity(VideoFragActivity),其中包含VideoView。与此同时,我将FDA OpenCV FaceDetection示例代码更改为Fragment(FDFragment),并尝试在VideoFragActivity期间运行。

当我在StackOverflow上寻求帮助时,我偶然发现了以下链接: OpenCV's native camera in Android prevents video player from working但是没有答案

我的问题是,在Android上实际上是否有可能在片段活动期间运行相机(在片段中启动)?在我的情况下,是否可以让VideoFragActivity和FDFragment工作以便当opencv人脸检测样本运行时,视频会播放吗?

修改

当我将FDFragment的高度和宽度的XML更改为wrap_content,fill_parent或match_parent时,我的应用程序不会尝试打开相机

然而,当我将高度和宽度更改为随机值(如50sp或100sp)时,它会尝试打开相机(调用onCameraViewStarted()),但却给出了错误:

“您的设备似乎不支持相机(或已锁定)。应用程序将关闭”

我已经检查过我的清单中的权限是否正确放置,并且相机未被其他应用程序使用。有没有人有关于如何处理这个问题的想法?


这是来自FDFragment的代码(如果我将OpenCV活动示例代码更改为错误的片段,请告诉我):

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
             Log.i(TAG, "called onCreate");
             super.onCreateView(inflater, container,savedInstanceState);
         getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

            View view= inflater.inflate(R.layout.face_detect_surface_view, container, false);
            return view;

        }

        @Override
        public void onActivityCreated(Bundle savedInstanceState){
            super.onActivityCreated(savedInstanceState);
            mOpenCvCameraView = (CameraBridgeViewBase) getView().findViewById(R.id.fd_activity_surface_view);
            mOpenCvCameraView.setCvCameraViewListener(this); 

        }

...

 public void onCameraViewStarted(int width, int height) {
        mGray = new Mat();
        mRgba = new Mat();
    }
我在清单中添加了

权限:

    <uses-feature
    android:name="android.hardware.camera"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.autofocus"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.front"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.front.autofocus"
    android:required="false" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application   (...etc)

任何帮助都非常感谢!!

1 个答案:

答案 0 :(得分:0)

如果有人好奇,请更新:

通过使用整体布局的片段活动改变了我接近这个的方式,然后将媒体播放器添加为片段并将面部检测作为单独的片段添加。

的确,您 CAN 在媒体播放期间让相机运行!