実際のデバイスを使用して、 Camera2 APIを介して前面カメラにアクセスしようとしています。
しようとすると問題が発生します
cameraManager.openCamera(..,..,..)
try {
CameraCharacteristics characteristics = manager.getCameraCharacteristics(mCameraID);
if (!mCameraOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) {
throw new RuntimeException("Time out waiting to lock camera opening.");
}
manager.openCamera(mCameraID, mStateCallback, mBackgroundHandler);
} catch (CameraAccessException e) {
Log.e("mr", "OpenCamera - Camera Access Exception");
} catch (IllegalArgumentException e) {
Log.e("mr", "OpenCamera - Illegal Argument Exception");
} catch (SecurityException e) {
e.printStackTrace();
Log.e("mr", "OpenCamera - Security Exception:");
} catch (InterruptedException e) {
Log.e("mr", "OpenCamera - Interrupted Exception");
}
カメラマン曰く
I/CameraManagerGlobal: カメラ サービスへの接続
このCameraManager.java関数から来ています
private void connectCameraServiceLocked() {
// Only reconnect if necessary
if (mCameraService != null) return;
Log.i(TAG, "Connecting to camera service");
その後、私のGLSurfaceViewは空白のままです
AndroidMainfest.xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.permission.PROVIDE_BACKGROUND" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
PS:
- バックカメラで動作します
- nexus 6 API 23エミュレーターで動作します
- Android M の実行時にアクセス許可が要求される
- ビューファインダーとしてGLSurfaceViewを使用しています
- フロントカメラは、TextureView で通常の CameraAPI を使用して、同じデバイスで完全に機能していました。
- アンインストール/再起動/キャッシュのクリアを試みました
- 使用しているデバイスは、Sony Z5 プレミアムです
Android API 21以降でOpenGL ES 2.0を使用してカメラプレビューをレンダリングするこの例を使用しています