0

Androidでカメラを使用する際に問題が発生しています。「Camera camera = Camera.open();」と表示されるたびにAndroidがエラーをスローします

API 25 Nougat 7.1.1 SDKで開発しています。私のエミュレータ(ネクサス5Xから見ることができ、「カメラサービスへの接続に失敗のRuntimeException」

Camera camera = Camera.open(); 

をエラーで:SDKが15

に設定されている分には、ターゲットそれは呼び出し時にエラー毎回スローAPI 25 Android 7.1.1)

リアルデバイス(Android 5.1.1)でテストすると、カメラの機能が正しく動作しません。まったく同じ問題です。

import android.hardware.Camera; 

... 

boolean hasCamera = false; 

private boolean hasCamera(Context context) { 
     return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA); 
    } 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 

    hasCamera = hasCamera(this); 
    if(!hasCamera) { 
     takePhotoButton.setText("No Camera Found"); 
     takePhotoButton.setEnabled(false); 
    } 
} 

private class TakePhotoButtonListener implements View.OnClickListener { 
    @Override 
    public void onClick(View v) { 
     if(hasCamera) { 
      try { 
       Camera camera = Camera.open(); 
       camera.startPreview(); 
       camera.takePicture(
         null, 
         null, 
         new CameraPictureCallbackJPEG()); 
      } catch (Exception e) { 
       Log.i("Error", e.getMessage()); 
      } 
     } 
    } 
} 

カマラが実際に検出される(hasCamera == TRUE):ここ

コードです。

私は自分のアプリがAPI 15以降で動作するようにしたいので、私はCamera2(API 21以降)を使用していません。

ここでは多くの回答を試しましたが、何も機能しませんでした。お知らせ下さい!

+0

http://stackoverflow.com/questions/23904459/android-java-lang-runtimeexception-fail-to-connect-to-camera-service –

+0

許可の問題? – GhostCat

+0

デバイスを再起動してみてください。私は通常、このアプリがカメラを取得して公開していないときにこれを表示します。 – CommonsWare

答えて

1

Manifestファイルに次の権限を追加しない場合は、追加してください。

<uses-permission android:name="android.permission.CAMERA"/> 
<uses-feature android:name="android.hardware.camera" /> 

重要な注意: あなたが最初の起動時にカメラを開いたし、その後、あなたがそれのリソースを解放していないので、これが起こっています。 はあなたがクリーニングのプロセス上で、あなたがカメラを使用して行われたときにリソースを解放しなければならない。この

camera.stopPreview(); 
camera.release(); 
camera = null; 

を行う必要がありますことを確認してください。

これが役に立ちます。

関連する問題