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)
どんな助けでも大歓迎です!!