Android :java.lang.RuntimeException: takePicture failed
16lz
2021-01-23
错误堆栈:
--------- 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之Audio常用属性变量
- Android Ant打包及其环境变量配置
- android入门知识:android使用全局变量
- Mac修改环境变量路径中带空格的处理
- Android SDK环境变量配置(windows和Linux)
- Android 如何配置adb环境变量
- android中全局变量的运用
- Android中用Application类实现全局变量