我创建了一个FragmentActivity
(VideoFragActivity),其中包含一个VideoView
。与此同时,我将OpenCV FaceDetection
示例代码中的FDActivity更改为Fragment
(FDFragment),并试图在VideoFragActivity期间运行该代码。奇怪的错误 - “似乎你的设备不支持相机..”
我偶然发现下面的链接,而我正在寻找帮助StackOverflow上: OpenCV's native camera in Android prevents video player from working,但它是没有答案
我的问题是,它实际上是可以在Android上有摄像头(在片段开始)在一个活动期间运行?在我的情况下,是否有可能使VideoFragActivity和FDFragment工作,以便在opencv人脸检测示例运行时播放视频?
编辑
当我改变FDFragment的高度和宽度要么WRAP_CONTENT,FILL_PARENT,或match_parent的XML,我的应用程序不会尝试当我改变高度,打开相机
无论其和宽度随机值(如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)
任何帮助都非常感谢!在任何情况下