我们创建了一个Android原生应用程序,它在某些条件下崩溃。它肯定与相机有关,但不完全确定它可能是什么。
我想强调一点,我不是一个Android开发人员(我主要是在python中开发),但我想知道那里的android专家是否可以提供一些关于错误的背景信息。
以下是Google Play控制台的堆栈跟踪:
java.lang.RuntimeException:
at android.hardware.Camera.native_setParameters (Native Method)
at android.hardware.Camera.setParameters (Camera.java:1946)
at identidata.br.camera.CameraPicturePreview.surfaceChanged (CameraPicturePreview.java:75)
at android.view.SurfaceView.updateWindow (SurfaceView.java:611)
at android.view.SurfaceView$3.onPreDraw (SurfaceView.java:181)
at android.view.ViewTreeObserver.dispatchOnPreDraw (ViewTreeObserver.java:944)
at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2000)
at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1073)
at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:5985)
at android.view.Choreographer$CallbackRecord.run (Choreographer.java:767)
at android.view.Choreographer.doCallbacks (Choreographer.java:580)
at android.view.Choreographer.doFrame (Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:753)
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:5912)
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:1405)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1200)
答案 0 :(得分:0)
如果出现问题,Camera.setParameters()可能会抛出RuntimeException的Android Camera API文档。考虑到Android碎片,您有机会触发与setParameters()无害调用的隐藏不兼容。因此,我强烈建议在此调用时始终try … catch
RuntimeException。
如果因为您在处理surfaceChanged()回调时尝试设置不受支持的预览尺寸而发生特定崩溃,我会感到惊讶。此回调带有宽度和高度参数,将这些值用于Camera.Parameters.setPreviewSize()是很自然的诱惑。不幸的是,这不会奏效。您必须始终从supported Preview Sizes列表中选择一个值。