2016-10-17 19 views
0

私はカメラをバーコードスキャナのアプリとオンに使用しています。一部の端末(LG G Flex、Asus Nexus 7):Androidランタイム例外 - カメラサービスに接続できませんでした。停止し、上の破壊、私は一時停止にカメラをリリースしていますAndroidランタイム例外 - カメラサービスを接続できません。

`uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" 
uses-permission android:name="android.permission.CAMERA" 
....` 

:ここ は以下menifestファイルからの抜粋です。

/** 
* Restarts the camera. 
*/ 
@Override 
protected void onResume() { 
super.onResume(); 
try { 
startCameraSource(); 
} catch (Exception e) { 
e.printStackTrace(); 

    } 
} 

/** 
* Stops the camera. 
*/ 
@Override 
protected void onPause() { 
    super.onPause(); 
    if (mPreview != null) { 
     mPreview.stop(); 
    } 
} 

/** 
* Releases the resources associated with the camera source, the associated detectors, and the 
* rest of the processing pipeline. 
*/ 
@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    if (mPreview != null) { 
     mPreview.release(); 
    } 

} 

実行時例外を上回っていますが、上記の2つのデバイスがないため、再現できません。 その問題の解決策はありますか?

答えて

0

こんにちは、あなたはAndroidのM許可モデルを使用している場合は、最初のアプリは、実行時にこの権限を持っているかどうかを確認する必要がある、とプロンプトする必要がmenifestファイルに

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

を、次の権限を追加する必要があります実行時にこの権限を持つユーザー。マニフェストで定義したアクセス許可は、インストール時に自動的に付与されることはありません。

if (checkSelfPermission(Manifest.permission.CAMERA) 
    != PackageManager.PERMISSION_GRANTED) { 

requestPermissions(new String[]{Manifest.permission.CAMERA}, 
     MY_REQUEST_CODE); 
} 

あなたは、ダイアログの結果のコールバックが必要になります。

@Override 
public void onRequestPermissionResult(int requestCode, String[] permissions,  int[] grantResults) { 
if (requestCode == MY_REQUEST__CODE) { 
    if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
     // Now user should be able to use camera 
    } 
    else { 
     // Your app will not have this permission. Turn off all functions 
     // that require this permission or it will force close like your 
     // original question 
    } 
} 
} 
関連する問題