フォーク、Android Camera2 Pemanentの許可
永久に組み込まれたカメラの権限を自分のアプリに追加する方法はありますか?私のアプリはすぐに働く必要があります。なぜなら、ユーザーは、毎回のモーニング(自動的にする必要があります)ごとにアプリを初期化することを覚えていないからです。私は私のAndroidManifestに以下を追加しましたが、動作していないよう:
<uses-permission
android:required="true"
android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera2.full" />
<uses-feature android:name="android.hardware.camera2.autofocus" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<application
<activity
android:name="com.serenegiant.usbcameratest5.MainActivity"
android:label="@string/app_name"
android:screenOrientation="sensorPortrait"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.camera2.CameraDevice" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.camera2.CameraManager" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.camera2.CameraCharacteristics" />
</intent-filter>
<meta-data
android:name="android.hardware.camera2.CameraManager"
android:resource="@xml/device_filter" />
<meta-data
android:name="android.hardware.camera2.CameraDevice"
android:resource="@xml/device_filter" />
<meta-data
android:name="android.hardware.camera2.CameraMetadata"
android:resource="@xml/device_filter" />
</activity>
</application>
そして、ここでは、私はカメラを開こうとする私のコードですが、プログラムは私がコメントアウト許可コードを(必要と文句を言い
private void openCamera(int width, int height) {
// if (ContextCompat.checkSelfPermission(mWeakParent.clear(), Manifest.permission.CAMERA)
// != PackageManager.PERMISSION_GRANTED) {
// requestCameraPermission();
// return;
// }
setUpCameraOutputs(width, height);
configureTransform(width, height);
Activity activity = mWeakParent.get();
CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);
try {
if (!mCameraOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) {
throw new RuntimeException("Time out waiting to lock camera opening.");
}
manager.openCamera(mCameraId, mStateCallback, mBackgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
} catch (InterruptedException e) {
throw new RuntimeException("Interrupted while trying to lock camera opening.", e);
}
}
"私たちは、ユーザーがモーニングごとにアプリを初期化するのを忘れたくはありません" - アプリの最初の実行時にランタイムアクセス許可を1回だけ与える必要があります。 – CommonsWare
私は参照してください。おそらく私はコード内の何かを変更するたびにアプリケーションを再インストールする必要があるので、私はいつも許可を参照します。いい視点ね。 – Pototo