android / android/camera-samples

Having problem with manual focusing and digital zooming in certain condition.

オープン
#447 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Kotlin
スター
5.5k
フォーク
2.4k
PR マージ指標
30日以内にマージされた PR はありません

説明

I'm working on with high-speed camera with Google Pixel 4a smartphone. When I'm setting the manual focus and digital zoom for 720p 120fps, the code runs smoothly. However, when I try to run the same code with 1080p 120fps or 720p 240fps, the preview stops and crashes when new touch input is in or I try to start the recording.
below there is log when I tried with 720p 120fps:

2021-12-03 15:10:17.006 28833-28833/com.android.example.camera2.slowmo D/opencv: setting the focus
2021-12-03 15:10:18.639 28833-28833/com.android.example.camera2.slowmo D/btdevice: connection failed: read failed, socket might closed or timeout, read ret: -1
2021-12-03 15:10:18.641 28833-28833/com.android.example.camera2.slowmo D/BluetoothSocket: close() this: android.bluetooth.BluetoothSocket@363b88, channel: -1, mSocketIS: android.net.LocalSocketImpl$SocketInputStream@6af921, mSocketOS: android.net.LocalSocketImpl$SocketOutputStream@5fa5146mSocket: android.net.LocalSocket@27c1f07 impl:android.net.LocalSocketImpl@6b78834 fd:java.io.FileDescriptor@3dd065d, mSocketState: INIT
2021-12-03 15:10:22.508 28833-28833/com.android.example.camera2.slowmo D/CameraFragment: Orientation changed: 180
2021-12-03 15:10:22.699 28833-28833/com.android.example.camera2.slowmo D/CameraFragment: Orientation changed: 90
2021-12-03 15:10:29.311 28833-28833/com.android.example.camera2.slowmo D/opencv: setting the zoom

but when I'm running the same code with 1080p 120fps or 720p 240fps, it turns like this
2021-12-03 15:11:22.320 29000-29000/com.android.example.camera2.slowmo D/opencv: setting the focus
2021-12-03 15:11:24.176 29000-29000/com.android.example.camera2.slowmo D/btdevice: connection failed: read failed, socket might closed or timeout, read ret: -1
2021-12-03 15:11:24.176 29000-29039/com.android.example.camera2.slowmo D/BluetoothSocket: close() this: android.bluetooth.BluetoothSocket@363b88, channel: -1, mSocketIS: android.net.LocalSocketImpl$SocketInputStream@6af921, mSocketOS: android.net.LocalSocketImpl$SocketOutputStream@5fa5146mSocket: android.net.LocalSocket@27c1f07 impl:android.net.LocalSocketImpl@6b78834 fd:java.io.FileDescriptor@3dd065d, mSocketState: INIT
2021-12-03 15:11:25.721 29000-29037/com.android.example.camera2.slowmo E/CameraFragment: Camera 0 error: (4) Fatal (device)
java.lang.RuntimeException: Camera 0 error: (4) Fatal (device)
at com.example.android.camera2.slowmo.fragments.CameraFragment$openCamera$2$1.onError(CameraFragment.kt:1211)
at android.hardware.camera2.impl.CameraDeviceImpl.notifyError(CameraDeviceImpl.java:1748)
at android.hardware.camera2.impl.CameraDeviceImpl.$r8$lambda$KBQCqQRdhVVn7uHI9Xdha6OqnsU(Unknown Source:0)
at android.hardware.camera2.impl.CameraDeviceImpl$$ExternalSyntheticLambda0.accept(Unknown Source:8)
at com.android.internal.util.function.pooled.PooledLambdaImpl.doInvoke(PooledLambdaImpl.java:281)
at com.android.internal.util.function.pooled.PooledLambdaImpl.invoke(PooledLambdaImpl.java:204)
at com.android.internal.util.function.pooled.OmniFunction.run(OmniFunction.java:97)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)

and when I start to record, the log goes like this;

2021-12-03 15:13:16.233 29208-29208/com.android.example.camera2.slowmo D/opencv: setting the focus
2021-12-03 15:13:17.165 29208-29208/com.android.example.camera2.slowmo D/InputMethodManager: showSoftInput() view=androidx.appcompat.widget.AppCompatEditText{73c9c37 VFED..CL. .F.P.... 827,238-1080,370 #7f0800bb app:id/sample_EditText aid=1073741826} flags=0 reason=SHOW_SOFT_INPUT
2021-12-03 15:13:17.370 29208-29208/com.android.example.camera2.slowmo D/InsetsController: show(ime(), fromIme=true)
2021-12-03 15:13:17.381 29208-29208/com.android.example.camera2.slowmo D/AutoFitSurfaceView: Measured dimensions set: 1240 x 1945
2021-12-03 15:13:17.391 29208-29208/com.android.example.camera2.slowmo D/AutoFitSurfaceView: Measured dimensions set: 1240 x 1945
2021-12-03 15:13:17.404 29208-29208/com.android.example.camera2.slowmo D/btdevice: connection failed: read failed, socket might closed or timeout, read ret: -1
2021-12-03 15:13:17.405 29208-29208/com.android.example.camera2.slowmo D/BluetoothSocket: close() this: android.bluetooth.BluetoothSocket@eb396b8, channel: -1, mSocketIS: android.net.LocalSocketImpl$SocketInputStream@4b36c91, mSocketOS: android.net.LocalSocketImpl$SocketOutputStream@49f97f6mSocket: android.net.LocalSocket@684d7f7 impl:android.net.LocalSocketImpl@676664 fd:java.io.FileDescriptor@29140cd, mSocketState: INIT
2021-12-03 15:13:17.406 29208-29250/com.android.example.camera2.slowmo D/BluetoothSocket: close() this: android.bluetooth.BluetoothSocket@eb396b8, channel: -1, mSocketIS: android.net.LocalSocketImpl$SocketInputStream@4b36c91, mSocketOS: android.net.LocalSocketImpl$SocketOutputStream@49f97f6mSocket: null, mSocketState: CLOSED
2021-12-03 15:13:18.025 29208-29208/com.android.example.camera2.slowmo D/InputMethodManager: showSoftInput() view=androidx.appcompat.widget.AppCompatEditText{73c9c37 VFED..CL. .F.P.... 827,238-1080,370 #7f0800bb app:id/sample_EditText aid=1073741826} flags=0 reason=SHOW_SOFT_INPUT
2021-12-03 15:13:18.045 29208-29208/com.android.example.camera2.slowmo D/InsetsController: show(ime(), fromIme=true)
2021-12-03 15:13:19.081 29208-29208/com.android.example.camera2.slowmo D/InputMethodManager: showSoftInput() view=androidx.appcompat.widget.AppCompatEditText{73c9c37 VFED..CL. .F.P.... 827,238-1080,370 #7f0800bb app:id/sample_EditText aid=1073741826} flags=0 reason=SHOW_SOFT_INPUT
2021-12-03 15:13:19.123 29208-29208/com.android.example.camera2.slowmo D/InsetsController: show(ime(), fromIme=true)
2021-12-03 15:13:19.488 29208-29240/com.android.example.camera2.slowmo E/CameraFragment: Camera 0 error: (4) Fatal (device)
java.lang.RuntimeException: Camera 0 error: (4) Fatal (device)
at com.example.android.camera2.slowmo.fragments.CameraFragment$openCamera$2$1.onError(CameraFragment.kt:1211)
at android.hardware.camera2.impl.CameraDeviceImpl.notifyError(CameraDeviceImpl.java:1748)
at android.hardware.camera2.impl.CameraDeviceImpl.$r8$lambda$KBQCqQRdhVVn7uHI9Xdha6OqnsU(Unknown Source:0)
at android.hardware.camera2.impl.CameraDeviceImpl$$ExternalSyntheticLambda0.accept(Unknown Source:8)
at com.android.internal.util.function.pooled.PooledLambdaImpl.doInvoke(PooledLambdaImpl.java:281)
at com.android.internal.util.function.pooled.PooledLambdaImpl.invoke(PooledLambdaImpl.java:204)
at com.android.internal.util.function.pooled.OmniFunction.run(OmniFunction.java:97)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)
2021-12-03 15:13:24.300 29208-29208/com.android.example.camera2.slowmo D/AutoFitSurfaceView: Measured dimensions set: 1240 x 1945
2021-12-03 15:13:24.311 29208-29208/com.android.example.camera2.slowmo D/AutoFitSurfaceView: Measured dimensions set: 1240 x 1945
2021-12-03 15:13:36.524 29208-29208/com.android.example.camera2.slowmo E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android.example.camera2.slowmo, PID: 29208
android.hardware.camera2.CameraAccessException: CAMERA_ERROR (3): The camera device has encountered a serious error
at android.hardware.camera2.impl.CameraDeviceImpl.checkIfCameraClosedOrInError(CameraDeviceImpl.java:2350)
at android.hardware.camera2.impl.CameraDeviceImpl.stopRepeating(CameraDeviceImpl.java:1277)
at android.hardware.camera2.impl.CameraCaptureSessionImpl.stopRepeating(CameraCaptureSessionImpl.java:424)
at android.hardware.camera2.impl.CameraConstrainedHighSpeedCaptureSessionImpl.stopRepeating(CameraConstrainedHighSpeedCaptureSessionImpl.java:274)
at com.example.android.camera2.slowmo.fragments.CameraFragment$initializeCamera$1$7$1.invokeSuspend(CameraFragment.kt:755)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7838)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)

I have no idea why the code have problem running on different setting, while it is working fine on certain setting. It seems like the inner settings are the same, except for resolution and fps. For the information, I set the sdk on 31, build tools on 22 to implement digital zoom. Can you help me with the manual focusing and zooming? Thank you.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

CameraFragment.kt の、1211 行目付近で報告されている onError callback と、755 行目付近の高速セッションのクリーンアップから始めます。Pixel 4a で 1080p/120fps と 720p/240fps のケースを再現し、720p/120fps と比較して、フォーカス、ズーム、録画、セッションのライフサイクルを通じてカメラエラーを追跡します。影響を受ける設定で、報告された致命的なカメラクラッシュが発生しなくなれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
android, kotlin
領域
mobile-dev
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
30/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。