Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash CameraX: No supported surface combination is found for camera device - Id : 0. #50

Closed
mzorz opened this issue Aug 23, 2019 · 3 comments
Assignees
Labels
CameraX applicable only to CameraX implementation [Type] Crash The app stops unexpectedly.

Comments

@mzorz
Copy link
Contributor

mzorz commented Aug 23, 2019

I've seen this crash twice on 2 different emulators:
Android 5.1.1 (API 22)
Android 8.0 (API 26)
When attempting to start camera preview on CameraX:

crash on emulator API 26., using CAMERAX


2019-08-18 05:40:22.733 13519-13519/com.automattic.portkey E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.automattic.portkey, PID: 13519
    java.lang.IllegalArgumentException: No supported surface combination is found for camera device - Id : 0.  May be attempting to bind too many use cases.
        at androidx.camera.camera2.impl.Camera2DeviceSurfaceManager.getSuggestedResolutions(Camera2DeviceSurfaceManager.java:177)
        at androidx.camera.core.CameraX.calculateSuggestedResolutions(CameraX.java:635)
        at androidx.camera.core.CameraX.bindToLifecycle(CameraX.java:191)
        at com.automattic.photoeditor.camera.CameraXBasicHandling.startCamera(CameraXBasicHandling.kt:143)
        at com.automattic.photoeditor.camera.CameraXBasicHandling.startUp(CameraXBasicHandling.kt:59)
        at com.automattic.photoeditor.camera.CameraXBasicHandling.activate(CameraXBasicHandling.kt:46)
        at com.automattic.photoeditor.state.BackgroundSurfaceManager.switchCameraPreviewOn(BackgroundSurfaceManager.kt:133)
        at com.automattic.portkey.compose.ComposeLoopFrameActivity.launchCameraPreview(ComposeLoopFrameActivity.kt:269)
        at com.automattic.portkey.compose.ComposeLoopFrameActivity.access$launchCameraPreview(ComposeLoopFrameActivity.kt:45)
        at com.automattic.portkey.compose.ComposeLoopFrameActivity$onCreate$3.run(ComposeLoopFrameActivity.kt:117)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
2019-08-18 05:40:22.733 25693-25751/com.android.systemui D/EGL_emulation: eglMakeCurrent: 0x9cb84420: ver 3 0 (tinfo 0x9cb83540)

Second crash today:

08-23 12:12:10.099 30015-30015/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.automattic.portkey, PID: 30015
    java.lang.IllegalArgumentException: No supported surface combination is found for camera device - Id : 0.  May be attempting to bind too many use cases.
        at androidx.camera.camera2.impl.Camera2DeviceSurfaceManager.getSuggestedResolutions(Camera2DeviceSurfaceManager.java:177)
        at androidx.camera.core.CameraX.calculateSuggestedResolutions(CameraX.java:635)
        at androidx.camera.core.CameraX.bindToLifecycle(CameraX.java:191)
        at com.automattic.photoeditor.camera.CameraXBasicHandling.startCamera(CameraXBasicHandling.kt:146)
        at com.automattic.photoeditor.camera.CameraXBasicHandling.startUp(CameraXBasicHandling.kt:62)
        at com.automattic.photoeditor.camera.CameraXBasicHandling.activate(CameraXBasicHandling.kt:49)
        at com.automattic.photoeditor.state.BackgroundSurfaceManager.switchCameraPreviewOn(BackgroundSurfaceManager.kt:141)
        at com.automattic.portkey.compose.ComposeLoopFrameActivity.launchCameraPreview(ComposeLoopFrameActivity.kt:338)
        at com.automattic.portkey.compose.ComposeLoopFrameActivity.access$launchCameraPreview(ComposeLoopFrameActivity.kt:50)
        at com.automattic.portkey.compose.ComposeLoopFrameActivity$onCreate$4.run(ComposeLoopFrameActivity.kt:155)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5254)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
@mzorz mzorz added bug CameraX applicable only to CameraX implementation labels Aug 23, 2019
@mzorz
Copy link
Contributor Author

mzorz commented Aug 23, 2019

Note: have not seen this problem when using our Camera2 implementation to calculate resolutions. Given this exception is thrown by CameraX (nothing we can do to deal with it "form within"), idea for a workaround: catch the exception and switch to Camera2 implementation, then fire the camera preview again? wdyt @aforcier ?

@aforcier
Copy link
Collaborator

@mzorz that sounds like a good approach for now, I'd maybe mark the reason why we're doing this in the code and point to this issue?

@mzorz
Copy link
Contributor Author

mzorz commented Aug 31, 2019

Fixed in #78

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CameraX applicable only to CameraX implementation [Type] Crash The app stops unexpectedly.
Projects
None yet
Development

No branches or pull requests

2 participants