我创建了一个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)
非常感谢任何帮助!