我创建了FragmentActivity
(VideoFragActivity),其中包含VideoView
。与此同时,我将FDA OpenCV FaceDetection
示例代码更改为Fragment
(FDFragment),并尝试在VideoFragActivity期间运行。
我的问题是,在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)
任何帮助都非常感谢!!
答案 0 :(得分:0)
如果有人好奇,请更新:
通过使用整体布局的片段活动改变了我接近这个的方式,然后将媒体播放器添加为片段并将面部检测作为单独的片段添加。
的确,您 CAN 在媒体播放期间让相机运行!