【问题标题】:crash due to camera in android由于android中的相机而崩溃
【发布时间】:2017-12-10 13:14:45
【问题描述】:

我们创建了一个 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)

【问题讨论】:

    标签: android camera crash


    【解决方案1】:

    如果出现问题,Camera.setParameters() 可能会抛出 RuntimeException 的 Android Camera API 文档。考虑到 Android 碎片化,您有机会触发与任何对 setParameters() 的无辜调用的隐藏不兼容。因此,我强烈建议在此调用前后始终使用try … catch RuntimeException。

    如果您在处理surfaceChanged() 回调时尝试设置不受支持的预览大小,如果您发生特定崩溃,我不会感到惊讶。这个回调带有 widthheight 参数,很自然地想将这些值用于Camera.Parameters.setPreviewSize()。不幸的是,这行不通。您必须始终从supported Preview Sizes 列表中选择一个值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 2016-02-09
      相关资源
      最近更新 更多