0

FragmentActivityを保持する (VideoFragActivity) を作成しましたVideoView。それに伴い、FDActivity をOpenCV FaceDetectionサンプル コードからFragment(FDFragment) に変更し、VideoFragActivity 中にそれを実行しようとしています。

StackOverflow でヘルプを探しているときに、次のリンクに出くわしました: Android の OpenCV のネイティブ カメラにより、ビデオ プレーヤーが機能しなくなりますが、回答がありません

私の質問は、Android でフラグメントアクティビティ中にカメラ (フラグメントで開始) を実行することは実際に可能ですか? 私の場合、opencv 顔検出サンプルの実行中にビデオが再生されるように、VideoFragActivity と FDFragment を機能させることは可能ですか?

編集

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)

どんな助けでも大歓迎です!!

4

1 に答える 1

0

誰かが興味を持っている場合に備えて更新してください:

全体的なレイアウトでフラグメントアクティビティを使用することでこれにアプローチする方法を変更し、メディアプレーヤーをフラグメントとして追加し、顔検出を別のフラグメントとして追加しました。

実際、メディアの再生中にカメラを実行することができます!

于 2013-07-17T09:50:29.800 に答える