【问题标题】:strange error--"seems that your device does not support camera.."奇怪的错误——“您的设备似乎不支持摄像头..”
【发布时间】:2013-07-12 10:31:12
【问题描述】:

我创建了一个 FragmentActivity (VideoFragActivity),其中包含一个 VideoView。除此之外,我将 FDActivity 从 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 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)

非常感谢任何帮助!

【问题讨论】:

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


    【解决方案1】:

    更新以防有人好奇:

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

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

    【讨论】:

      猜你喜欢
      • 2015-06-30
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多