Android(安卓):java.lang.RuntimeException: takePicture failed
16lz
2021-12-04
错误堆栈:
--------- beginning of crash2020-09-14 13:43:51.723 10343-10343/com.xiaomi.micolauncher E/AndroidRuntime: FATAL EXCEPTION: main Process: com.xiaomi.micolauncher, PID: 10343 java.lang.RuntimeException: takePicture failed at android.hardware.Camera.native_takePicture(Native Method) at android.hardware.Camera.takePicture(Camera.java:1573) at android.hardware.Camera.takePicture(Camera.java:1515) at com.xiaomi.refrigerator.scan.ScanActivity.onClick(ScanActivity.java:286) at android.view.View.performClick(View.java:6610) at android.view.View.performClickInternal(View.java:6583) at android.view.View.access$3100(View.java:780) at android.view.View$PerformClick.run(View.java:26076) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:209) at android.app.ActivityThread.main(ActivityThread.java:6702) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
问题原因:
因为调用takepic 之后,相机默认会关闭preview,你需要调用startPreview,然后才能调用takePic.
我这里是快速双击拍照Button 导致调用两次takepic 导致崩溃。
增加了一个变量,表示当前是不是调用了takePic。
private boolean mHasTakePicture = false; getCamera().takePicture(null, null, new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { mHasTakePicture = false; } });
然后在callback 里面 重置mHasTakePicture
更多相关文章
- Android手电筒小程序实现代码
- Android在自己的程序中调用外部程序
- Android(安卓)Service分析
- android定制对话框
- Android(安卓)判断程序是否在前台运行
- Android(安卓)中实现FlowLayout 布局
- android APP响应H5页面的点击事件(JS交互)
- Android(安卓)DOC文档分析——Dialog
- Android消息处理机制1——Handler