0

我创建了一个FragmentActivity(VideoFragActivity),其中包含一个VideoView. 除此之外,我将OpenCV FaceDetection示例代码中的 FDActivity 更改为Fragment(FDFragment),并尝试在 VideoFragActivity 期间运行它。

我在 StackOverflow 上搜索帮助时偶然发现了以下链接: OpenCV 在 Android 中的本机摄像头阻止视频播放器工作,但没有得到答复

我的问题是,在 Android 上真的可以让相机(在片段中启动)在片段活动期间运行吗?就我而言,是否可以让 VideoFragActivity 和 FDFragment 工作,以便在 opencv 人脸检测示例运行时播放视频?

编辑

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

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

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

我检查了清单中的权限是否正确放置,并且相机没有被其他应用程序使用。有人对如何解决这个问题有想法吗?


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

 @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)

非常感谢任何帮助!

4

1 回答 1

0

如果有人好奇,请更新:

通过使用具有整体布局的片段活动来改变我的处理方式,然后将媒体播放器添加为片段,将面部检测添加为单独的片段。

实际上,您可以在媒体播放期间让相机运行

于 2013-07-17T09:50:29.800 回答