web-dev-qa-db-ja.com

デバイスがカメラをサポートしていない(またはロックされている)ようです

_Android opencv_サンプルとチュートリアルは問題なく実行されていましたが、ある日突然、これらすべての問題が発生しました。
"It seems that your device does not support camera (or it is locked). The application will be closed"
助けてください、どうすれば修正できますか?

Opencvを再インストールして再度インポートし、新しいエミュレータを作成しましたが、問題は解決しません。

19
SBM

デバイスの設定->アプリ->あなたのアプリ->権限->カメラの権限をオンにしてください。

私のために働いた。

33
orimen

AndroidManifest.xmlでカメラの権限を確認してください。

<uses-permission Android:name="Android.permission.CAMERA"/>

    <uses-feature Android:name="Android.hardware.camera"/>
    <uses-feature Android:name="Android.hardware.camera.autofocus"/>
    <uses-feature Android:name="Android.hardware.camera.front"/>
    <uses-feature Android:name="Android.hardware.camera.front.autofocus"/>

それは私のために働いています。

19

Android Docs から:

Android 6.0(APIレベル23))以降、ユーザーはアプリのインストール時ではなく、アプリの実行中にアプリに権限を付与します。

つまり、Android 23以上では、マニフェストの他に、ランタイムの許可も要求する必要があります。この場合、カメラへのアクセスです。

これを行うには、以下のコードを使用できます。

// First check Android version 
if (MyVersion > Build.VERSION_CODES.Lollipop_MR1) {
//Check if permission is already granted
//thisActivity is your activity. (e.g.: MainActivity.this)
    if (ContextCompat.checkSelfPermission(thisActivity,
                    Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED) {

        // Give first an explanation, if needed.
        if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
                Manifest.permission.CAMERA)) {

            // Show an explanation to the user *asynchronously* -- don't block
            // this thread waiting for the user's response! After the user
            // sees the explanation, try again to request the permission.

        } else {

            // No explanation needed, we can request the permission.

            ActivityCompat.requestPermissions(thisActivity,
                    new String[]{Manifest.permission.CAMERA},
                    1);
        }
    }
}

docs で説明されているように、要求応答を処理することもできます。

それがお役に立てば幸いです!

10
Geraldo Neto

この問題が発生したので、カメラを使用していた他のアプリを強制終了しました。以前のチュートリアルをバックグラウンドで実行していました。

2
Ben Trengrove

サンプルはJavaCameraを使用しているため機能するはずです。この問題は、ネイティブを使用しようとしたときに発生します。ネイティブの電話は普通の電話では機能しないようです。 this を参照してください。

追加する必要があります一部のデバイスでは、openCVネイティブカメラがまったく機能しませんバグ2359

0
ahmed_khan_89

私の場合、問題は
アプリケーションでの使用Android Camera in別のアクティビティ
そして別のアクティビティDestroyed(lock it)で使用した後、Cameraを解放しませんでした)
そして、別のアクティビティでCameraを解放した後、このダイアログは再び表示されません。

だから一般的にこの問題を修正するには

  1. カメラの権限を確認する
  2. カメラがロックされていないことを確認します(他のアクティビティで使用した後に解除します)
0
ahmednabil88