首页 > 解决方案 > CameraSource takePicture 崩溃

问题描述

我正在使用播放服务视觉:“com.google.android.gms:play-services-vision:15.0.2”

当我为 CameraSource 对象调用方法“takePicture”时,应用程序经常崩溃

mCameraSource.takePicture(null, new CameraSource.PictureCallback() {
    @Override
    public void onPictureTaken(byte[] bytes) {
        try {
            FileUtils.saveImage(bytes, String.valueOf(PHOTO_NAME), "png");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});

日志

08-19 17:10:38.283 30456-30456/ru.facereg.facerecognitiontest E/AndroidRuntime:致命异常:主进程:ru.facereg.facerecognitiontest,PID:30456 java.lang.RuntimeException:在 android.hardware.Camera 上拍摄失败.native_takePicture(Native Method) at android.hardware.Camera.takePicture(Camera.java:1489) at com.google.android.gms.vision.CameraSource.takePicture(Unknown Source:26) at ru.facereg.facerecognitiontest.FaceDetectionActivity。 onCreatePicture(FaceDetectionActivity.java:114) at ru.facereg.facerecognitiontest.camera.GraphicOverlay.onDraw(GraphicOverlay.java:130) at android.view.View.draw(View.java:19192) at android.view.View.updateDisplayListIfDirty (View.java:18142) 在 android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220) 在 android.view.ViewGroup。dispatchGetDisplayList(ViewGroup.java:4200) at android.view.View.updateDisplayListIfDirty(View.java:18101) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java :4200) 在 android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200) 在 android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220) 在 android.view.View.updateDisplayListIfDirty(View.java:18101) 在 android .view.View.updateDisplayListIfDirty(View.java:18101) 在 android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220) 在 android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200) 在 android.view.View。 updateDisplayListIfDirty(View.java:18101) 在 android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220) 在 android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220) 在 android.view.View.updateDisplayListIfDirty(View.java:18101) 在 android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200)。 view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200) 在 android.view.View.updateDisplayListIfDirty(View.java:18101) 在 android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220) 在 android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4200) 在 android.view.View.updateDisplayListIfDirty(View.java:18101) 在 android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:669) 在 android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java: 675)在android.view.ThreadedRenderer.draw(ThreadedRenderer.java:783) 在 android.view.ViewRootImpl.draw(ViewRootImpl.java:2992) 在 android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2806) 在 android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2359) 在 android。 view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392) 在 android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:911) 在 android.view .Choreographer.doCallbacks(Choreographer.java:723) 在 android.view.Choreographer.doFrame(Choreographer.java:658) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897) 在 android.os.Handler。 handleCallback(Handler.java:790) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:164) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:第438章)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

我尝试从工作线程和 UI 线程调用,但结果相似。也许有人面临这个问题?

标签: javaandroidgoogle-vision

解决方案


推荐阅读