拍摄多张照片时的问题:应用程序停止响应,相机预览变为绿色且未保存照片 [英] Issues when capturing Multiple Photos: app stops responding, camera preview turns to green and no picture is saved

查看:26
本文介绍了拍摄多张照片时的问题:应用程序停止响应,相机预览变为绿色且未保存照片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已在 Android 中使用相机成功拍摄了单张照片.但是当我尝试一次拍摄 5 张照片时,应用程序停止响应,相机预览变为绿色并且没有保存照片.我在堆栈跟踪中看到的内容如下(部分)

I have successfully captured the single photo using camera in Android. But when I tried to capture 5 photos at once, app stops responding, camera preview turns to green and no picture is saved. What I saw in stack trace is as follows (partial)

03-17 14:19:54.804:信息/高通相机硬件(19268):deinitPreview E 03-17 14:19:54.804:信息/高通相机硬件(19268):deinitPreview X 03-17 14:19:54.804:调试/高通相机硬件(19268):框架线程 X 03-17 14:19:54.834:调试/高通相机硬件(19268):快照线程 E 03-17 14:19:54.854:调试/CameraService(19268):拍照(pid 20509) 03-1714:19:54.884:警告/AudioFlinger(19268):写阻塞 85 毫秒 03-1714:19:55.154:调试/CameraService(19268):postShutter 03-17 14:19:55.284:调试/CameraService(19268):postRaw03-17 14:19:55.314:调试/高通相机硬件(19268):快照线程 X 03-17 14:19:55.344:调试/高通相机硬件(19268):快照线程 E 03-17 14:19:55.364:调试/CameraService(19268):拍照(pid 20509) 03-1714:19:55.984:调试/CameraService(19268):postShutter 03-17 14:19:56.064:调试/CameraService(19268):postRaw03-17 14:19:56.074:错误/高通相机硬件(19268):native_jpeg_encode:jpeg_encoder_encode 失败.03-1714:19:56.074:错误/高通相机硬件(19268):jpeg 编码失败 03-1714:19:56.084:调试/高通相机硬件(19268):快照线程 X 03-17 14:19:56.154:信息/调试(19267):* ** * ** * ** * ** * ** * 03-17 14:19:56.164:INFO/DEBUG(19267):构建指纹:'google_ion/google_ion/sapphire/sapphire:1.6/DRC83/14721:user/adp,test-keys'03-17 14:19:56.164:信息/调试(19267):pid: 19268, tid: 20813 >>>/系统/bin/媒体服务器.........14:19:59.894:信息/服务管理器(46):服务media.camera"于 03-17 死亡14:19:59.894:警告/相机(20509):摄像头服务器死机!03-1714:19:59.894:警告/相机(20509):ICamera 于 03-17 14:19:59.894 去世:错误/相机(20509):错误 100 03-1714:19:59.915:警告/音频系统(71):AudioFlinger 服务器死了!03-1714:20:00.014:信息/流程(71):发送信号.PID:18636 SIG:303-17 14:20:00.054:信息/dalvikvm(18636):threadid=7:对信号 3 做出反应

03-17 14:19:54.804: INFO/QualcommCameraHardware(19268): deinitPreview E 03-17 14:19:54.804: INFO/QualcommCameraHardware(19268): deinitPreview X 03-17 14:19:54.804: DEBUG/QualcommCameraHardware(19268): frame_thread X 03-17 14:19:54.834: DEBUG/QualcommCameraHardware(19268): snapshot_thread E 03-17 14:19:54.854: DEBUG/CameraService(19268): takePicture (pid 20509) 03-17 14:19:54.884: WARN/AudioFlinger(19268): write blocked for 85 msecs 03-17 14:19:55.154: DEBUG/CameraService(19268): postShutter 03-17 14:19:55.284: DEBUG/CameraService(19268): postRaw 03-17 14:19:55.314: DEBUG/QualcommCameraHardware(19268): snapshot_thread X 03-17 14:19:55.344: DEBUG/QualcommCameraHardware(19268): snapshot_thread E 03-17 14:19:55.364: DEBUG/CameraService(19268): takePicture (pid 20509) 03-17 14:19:55.984: DEBUG/CameraService(19268): postShutter 03-17 14:19:56.064: DEBUG/CameraService(19268): postRaw 03-17 14:19:56.074: ERROR/QualcommCameraHardware(19268): native_jpeg_encode: jpeg_encoder_encode failed. 03-17 14:19:56.074: ERROR/QualcommCameraHardware(19268): jpeg encoding failed 03-17 14:19:56.084: DEBUG/QualcommCameraHardware(19268): snapshot_thread X 03-17 14:19:56.154: INFO/DEBUG(19267): * ** * ** * ** * ** * ** * 03-17 14:19:56.164: INFO/DEBUG(19267): Build fingerprint: 'google_ion/google_ion/sapphire/sapphire:1.6/DRC83/14721:user/adp,test-keys' 03-17 14:19:56.164: INFO/DEBUG(19267): pid: 19268, tid: 20813 >>> /system/bin/mediaserver ... ... ... 14:19:59.894: INFO/ServiceManager(46): service 'media.camera' died 03-17 14:19:59.894: WARN/Camera(20509): Camera server died! 03-17 14:19:59.894: WARN/Camera(20509): ICamera died 03-17 14:19:59.894: ERROR/Camera(20509): Error 100 03-17 14:19:59.915: WARN/AudioSystem(71): AudioFlinger server died! 03-17 14:20:00.014: INFO/Process(71): Sending signal. PID: 18636 SIG: 3 03-17 14:20:00.054: INFO/dalvikvm(18636): threadid=7: reacting to signal 3

我正在循环调用takePicture方法来拍摄多张照片;

I am calling the takePicture method in a loop to capture multiple photos;

for(int m = 0 ; m < 6; m++) {

    mPrimCamera.takePicture(null, mPictureCallbackMet, mPictureCallbackMet);
}

我在运行 Android 1.6 的 HTC Magic 上执行此操作.我想,我使用错误的方式拍摄多张照片.使用 Android Camera API 拍摄多张照片的正确方法是什么?

I am doing this on HTC Magic running Android 1.6. I think, I am using the wrong way to take multiple photos. What is the correct way to capture multiple photos using Android Camera API?

推荐答案

我没有找到任何 API 支持.并且从循环中重复调用 takePicture 方法不起作用.所以,我有一个解决方法.代码仍在循环中,但我现在使用的是 Thread;

I didn't find any API support for this. And repeatedly calling the takePicture method from the loop is not working. So, I get a workaround. The code is still in loop but I'm now using Thread;

private class CaptureThread extends Thread {

        @Override
        public void run() {

            int count = 0;

            while(count < mNo) {
                mFileName = mLocation + "/pic" + count + ".jpg";

                mCamera.takePicture(null, mPictureCallback, mPictureCallback);

                count++;

                try {
                    Thread.sleep(3000);
                } catch (InterruptedException exception) {
                    exception.printStackTrace();
                }
            }
        }
}

这篇关于拍摄多张照片时的问题:应用程序停止响应,相机预览变为绿色且未保存照片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆