拍摄多张照片时的问题:应用程序停止响应,相机预览变为绿色且未保存照片 [英] Issues when capturing Multiple Photos: app stops responding, camera preview turns to green and no picture is saved
问题描述
我已在 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屋!