[android-developers] Re: Camera preview freezes when I press HOME button
haven't come across this issue myself but using Sleep is not the way to solve anything...
On Friday, July 26, 2013 12:50:50 AM UTC+3, Linda Li wrote:
It would be easy to repeat the problem when I use an old device, which takes 1-2 secs to finish taking a picture.
So when I press HOME button, while the device is taking picture, often times it freezes at the preview picture.
I have added camera stopPreview and release in onPause(), which will be called when HOME button is pressed.From the LogCat, I find that the camera hardware is still processing some information, but Activity Manager kicks in, saying something about HOME activity.
So I think HOME forces some camera procedure finished in a bad way, which makes the camera preview freezes, and the camera cannot be opened any more (e.g. when I try to open the default camera, it says it cannot access to camera)
However, if I use the default camera of the old slow device :), I cannot repeat the crash. So it seems the default camera application might handle it well; it might access native libraries to handle the situation, or something else.
If I use Nexus 4 device, it is very hard to repeat this experiment.
A less powerful device is needed to repeat the experiment.[UPDATE]
I put the Logcat at the end of the post (it is long). Here is a brief review.After click the capture button,
07-25 14:20:08.517: I/Camera Preview(1517): For Debug: begin mCamera.takePicture
Then I press the HOME button, the log below shows that android.intent.action.MAIN kicks in.07-25 14:20:08.867: I/ActivityManager(188): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.
HOME] flg=0x10200000 cmp=com.htc.launcher/.Launcher } from pid 188 07-25 14:20:09.337: I/Camera Preview(1517): For Debug: after mCamera.takePicture
07-25 14:20:09.337: I/CameraActivity(1517): For Debug: in onPause();
Regarding how to process in onPause, which will be callsed by HOME button, I tried two options.
One option is that onPause releases the camera.Another option is,
I put Thread.sleep(1500) to let my activity has enough time to finish something.But with either option, the camear crashes, and cannot be launched any more.
******************************
*
Long logcat:
07-25 14:20:07.736: I/Camera Preview(1517): For Debug: begin: mCamera.autoFocus(mContinuousAutoFocusCallback);
07-25 14:20:07.736: I/Camera Preview(1517): For Debug: Unexpected exception while doing continuous focusingjava.lang.NullPointerException
07-25 14:20:07.766: I/Camera Preview(1517): For Debug: onClick mCamera.autoFocus and take a picture
07-25 14:20:07.766: D/CameraService(70): autoFocus (pid 1517)
07-25 14:20:07.766: D/QualcommCameraHardware(70): autoFocus E
07-25 14:20:07.766: D/QualcommCameraHardware(70): autoFocus X
07-25 14:20:07.766: D/QualcommCameraHardware(70): runAutoFocus E
07-25 14:20:07.766: D/QualcommCameraHardware(70): af start (fd 39)
07-25 14:20:07.766: I/mm-camera 8x vfe(70): ch=971 cw=1619 vof=485 hof=809 wh=485 ww=809
07-25 14:20:07.916: D/WifiStateTracker(188): Reset connections and stopping DHCP
07-25 14:20:07.916: I/wpa_supplicant(487): Rx Data Filter Remove [5] command
07-25 14:20:07.916: I/wpa_supplicant(487): auto ip disabled
07-25 14:20:07.916: I/wpa_supplicant(487): Rx Data Filter: do not support, ignore
07-25 14:20:07.926: D/NetUtils(188): ifc_get_info addr=0 !
07-25 14:20:08.497: D/mm-camera af_core(70): af_beta is executing!!
07-25 14:20:08.517: D/QualcommCameraHardware(70): native_set_afmode: ctrlCmd.status == 2
07-25 14:20:08.517: D/QualcommCameraHardware(70): af done: 0
07-25 14:20:08.517: D/CameraService(70): focus lenPos 0 status 0 macro_threshold 10
07-25 14:20:08.517: D/CameraService(70): CameraService::Client::handleGenericNotify: msgType = CAMERA_MSG_FOCUS
07-25 14:20:08.517: D/CameraService(70): CameraService::Client::handleGenericNotify: callback
07-25 14:20:08.517: I/Camera Preview(1517): For Debug: onClick mCamera.autoFocus, onAutoFocus: want to know the time difference
07-25 14:20:08.517: I/Camera Preview(1517): For Debug: begin mCamera.takePicture
07-25 14:20:08.517: D/QualcommCameraHardware(70): runAutoFocus X
07-25 14:20:08.517: D/CameraService(70): setPreviewCallbackFlag(0) (pid 1517)
07-25 14:20:08.517: D/CameraService(70): takePicture (pid 1517)
07-25 14:20:08.517: D/QualcommCameraHardware(70): takePicture(463)
07-25 14:20:08.517: D/QualcommCameraHardware(70): val_ril_status = 0,val_wimax_status = 0,val_hotspot_status = 0,val_low_temp_limit = 10.000000,val_batt_temp = 36.500000,val_low_temp_limit = 15,val_batt_cap = 79
07-25 14:20:08.517: D/QualcommCameraHardware(70): FLASHLIGHT is ENABLED
07-25 14:20:08.517: E/mm-camera-af(70): af_algo_preview: FAILED....
07-25 14:20:08.867: I/ActivityManager(188): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.htc.launcher/.Launcher } from pid 188
07-25 14:20:08.927: D/WifiStateTracker(188): Disabling interface
07-25 14:20:08.927: W/wpa_supplicant(487): l2_packet_receive - recvfrom
07-25 14:20:08.977: D/NetSharing_NSReceiver(544): onReceive : android.net.wifi.STATE_CHANGE
07-25 14:20:08.977: I/NetSharing_NSReceiver(544): wifienabled:false
07-25 14:20:09.267: D/QualcommCameraHardware(70): stopPreviewInternal E: 1
07-25 14:20:09.267: D/QualcommCameraHardware(70): cancelAutoFocusInternal E
07-25 14:20:09.267: D/QualcommCameraHardware(70): cancelAutoFocusInternal X: 0
07-25 14:20:09.327: I/QualcommCameraHardware(70): deinitPreview E
07-25 14:20:09.327: I/QualcommCameraHardware(70): register_buf: camfd = 32, reg = 1 buffer = 0x41121000
07-25 14:20:09.327: I/QualcommCameraHardware(70): register_buf: camfd = 32, reg = 1 buffer = 0x41221000
07-25 14:20:09.327: I/QualcommCameraHardware(70): register_buf: camfd = 32, reg = 1 buffer = 0x41321000
07-25 14:20:09.327: I/QualcommCameraHardware(70): register_buf: camfd = 32, reg = 1 buffer = 0x41421000
07-25 14:20:09.327: I/QualcommCameraHardware(70): register_buf: camfd = 35, reg = 1 buffer = 0x41521000
07-25 14:20:09.327: I/QualcommCameraHardware(70): register_buf: camfd = 35, reg = 1 buffer = 0x41621000
07-25 14:20:09.327: I/QualcommCameraHardware(70): register_buf: camfd = 35, reg = 1 buffer = 0x41721000
07-25 14:20:09.327: I/QualcommCameraHardware(70): register_buf: camfd = 35, reg = 1 buffer = 0x41821000
07-25 14:20:09.327: I/QualcommCameraHardware(70): register_buf: camfd = 35, reg = 1 buffer = 0x41921000
07-25 14:20:09.327: I/QualcommCameraHardware(70): register_buf: camfd = 35, reg = 1 buffer = 0x41a21000
07-25 14:20:09.327: I/QualcommCameraHardware(70): register_buf: camfd = 35, reg = 1 buffer = 0x41b21000
07-25 14:20:09.327: I/QualcommCameraHardware(70): register_buf: camfd = 35, reg = 1 buffer = 0x41c21000
07-25 14:20:09.327: D/QualcommCameraHardware(70): frame_thread X
07-25 14:20:09.327: I/QualcommCameraHardware(70): deinitPreview X
07-25 14:20:09.327: D/QualcommCameraHardware(70): stopPreviewInternal X: 0
07-25 14:20:09.327: D/QualcommCameraHardware(70): initRaw: mFrameThreadWaitLock.lock()
07-25 14:20:09.327: D/QualcommCameraHardware(70): initRaw: mFrameThreadWaitLock.unlock()
07-25 14:20:09.327: D/QualcommCameraHardware(70): initRaw E: raw size=3264x2448
07-25 14:20:09.327: D/QualcommCameraHardware(70): initRaw: original raw ratio = 0.750000
07-25 14:20:09.327: D/QualcommCameraHardware(70): initRaw: raw ratio = 0.750000, display size=800x480
07-25 14:20:09.327: D/QualcommCameraHardware(70): initRaw: thumbnail_width=800, thumbnail_height=608, thumbnail_buffer_size=729600
07-25 14:20:09.327: D/QualcommCameraHardware(70): native_access_parm: fd 15, type 1, length 32
07-25 14:20:09.327: D/mm-camera-ov8810_u(70): cam_mode_sel 0
07-25 14:20:09.327: D/QualcommCameraHardware(70): initRaw: initializing mRawHeap.
07-25 14:20:09.327: E/MemoryHeapBase(70): error opening /dev/pmem_camera: No such file or directory
07-25 14:20:09.327: W/QualcommCameraHardware(70): failed to construct master heap for pmem pool /dev/pmem_camera
07-25 14:20:09.327: W/QualcommCameraHardware(70): initRaw X failed with pmem_camera, trying with pmem_adsp
07-25 14:20:09.327: I/QualcommCameraHardware(70): pmem pool /dev/pmem_adsp ioctl(fd = 37, PMEM_GET_SIZE) is 16777216
07-25 14:20:09.327: D/QualcommCameraHardware(70): mBufferSize=11985408, mAlignedBufferSize=11988992
07-25 14:20:09.327: E/QualcommCameraHardware(70): num_buffers = 1
07-25 14:20:09.327: I/QualcommCameraHardware(70): register_buf: camfd = 35, reg = 0 buffer = 0x4227f000
07-25 14:20:09.327: D/QualcommCameraHardware(70): do_mmap snapshot pbuf = 0x4227f000, pmem_fd = 37
07-25 14:20:09.327: D/QualcommCameraHardware(70): initRaw: initializing mJpegHeap.
07-25 14:20:09.337: I/QualcommCameraHardware(70): pmem pool /dev/pmem_adsp ioctl(fd = 40, PMEM_GET_SIZE) is 1048576
07-25 14:20:09.337: D/QualcommCameraHardware(70): mBufferSize=729600, mAlignedBufferSize=1048576
07-25 14:20:09.337: E/QualcommCameraHardware(70): num_buffers = 1
07-25 14:20:09.337: I/QualcommCameraHardware(70): register_buf: camfd = 38, reg = 0 buffer = 0x41521000
07-25 14:20:09.337: D/QualcommCameraHardware(70): initRaw X
07-25 14:20:09.337: I/Camera Preview(1517): For Debug: after mCamera.takePicture
07-25 14:20:09.337: I/CameraActivity(1517): For Debug: in onPause(); before Thread.sleep(1500)
07-25 14:20:09.337: I/CameraActivity(1517): For Debug: mPreview.mCameraTakePictureTF:true
07-25 14:20:09.337: I/CameraActivity(1517): For Debug: in onPause(); before Thread.sleep(1500)
07-25 14:20:09.337: D/QualcommCameraHardware(70): snapshot_thread E
07-25 14:20:09.367: D/QualcommCameraHardware(70): receiveRawPicture: E
07-25 14:20:09.377: W/ActivityManager(188): Activity pause timeout for HistoryRecord{409ff310 com.barclays.common.howtoMoreFun/com.barclays. common.howto.ui.screens. camera.CameraActivity}
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.camifConfig.vSyncEdge 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.camifConfig.hSyncEdge 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.camifConfig.syncMode 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.camifConfig.vfeSubSampleEnable 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.camifConfig.busSubSampleEnable 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.camifConfig.irqSubSampleEnable 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.camifConfig.binningEnable 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.camifConfig.misrEnable 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.EFS.efsEndOfLine 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.EFS.efsStartOfLine 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.EFS.efsEndOfFrame 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.EFS.efsStartOfFrame 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.window.firstPixel 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.window.lastPixel 3279
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.window.firstLine 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.window.lastLine 2455
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.frame.pixelsPerLine 3280
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.frame.linesPerFrame 2456
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.subsample.pixelSkipMask 65535
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.subsample.lineSkipMask 65535
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.subsample.frameSkip 0
07-25 14:20:09.388: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.subsample.frameSkipMode 0
07-25 14:20:09.398: D/mm-camera 8x-vfe snapshot(70): VFE_CAMIFCfgCmd.subsample.pixelSkipWrap 0
07-25 14:20:09.398: E/mm-camera 8x vfe(70): vfe_util_updaterollofftbl: sensor doesn't support rolloff correction by VFE
07-25 14:20:09.398: W/mm-camera-zoom(70): Output1 and Output2 aspect ratios differ. Frames may be distorted
07-25 14:20:09.398: D/mm-camera-ov8810_u(70): ov8810_set_snapshot_exposure_gain led_active = 0
07-25 14:20:09.398: D/mm-camera-ov8810_u(70): ov8810_set_snapshot_exposure_gain snapshot_config_ptr-> antibanding 1, snapshot: gain 48 linecount 2496
07-25 14:20:09.398: D/mm-camera-ov8810_u(70): ov8810_set_snapshot_exposure_gain snapshot_linesPerFrame 2500 snapshot_fps 2472.434608 snapshot_exposuretime 0.103376
07-25 14:20:09.398: D/mm-camera-ov8810_u(70): Anti-banding 60Hz, new exp_time (ms) = 0.100000, no antiband exp_time = 0.103376
07-25 14:20:09.398: D/mm-camera-ov8810_u(70): actual snapshot: gain 48 linecount 2414
07-25 14:20:09.398: W/Rosie(433): mAddHtcWidgetByOtherActivity = false, mIsOpenSlideWhenLeaveLaunch = true
07-25 14:20:09.458: D/mm-camera-awb(70): awb_prepare_wb_for_snapshot r_gain 182, g_gain 141, b_gain 233
07-25 14:20:09.458: D/mm-camera-awb(70): agw_sample_decision=2
07-25 14:20:09.548: D/QualcommCameraHardware(70): notifyShutter size.width 800 size.height 608
07-25 14:20:09.548: D/CameraService(70): Snapshot image width=800, height=608
07-25 14:20:09.628: W/InputManagerService(188): [unbindCurrentClientLocked] Disable input method client.
07-25 14:20:09.628: W/InputManagerService(188): [startInputLocked] Enable input method client.
07-25 14:20:09.818: D/QualcommCameraHardware(70): native_access_parm: fd 15, type 67, length 4
07-25 14:20:09.818: D/CameraService(70): handleRawPicture: bActionScreen: 1
07-25 14:20:09.818: D/CameraService(70): handleRawPicture E, m_ReceivedRawCount: 0
07-25 14:20:09.818: D/CameraService(70): postProcess, bActionScreen:1, isoValue:297, prop_iso_midband_i:400, bUseNoise:0, bUseBoost:0
07-25 14:20:09.828: D/CameraService(70): handleRawPicture data Callback E
07-25 14:20:09.828: D/CameraService(70): handleRawPicture X
07-25 14:20:09.828: D/CameraService(70): handleRawPicture: bActionScreen: 0
07-25 14:20:09.828: D/CameraService(70): handleRawPicture E, m_ReceivedRawCount: 1
07-25 14:20:09.828: D/CameraService(70): postProcess, bActionScreen:0, isoValue:297, prop_iso_midband_i:400, bUseNoise:0, bUseBoost:0
07-25 14:20:09.828: D/QualcommCameraHardware(70): ###### PA: KPI CAPTURE TIME: 483 ms. #####
07-25 14:20:09.828: D/QualcommCameraHardware(70): native_jpeg_encode, rotation = 90
07-25 14:20:09.828: D/QualcommCameraHardware(70): native_access_parm: fd 15, type 67, length 4
07-25 14:20:10.839: I/CameraActivity(1517): For Debug: in onPause(); after Thread.sleep(1500)
07-25 14:20:10.839: I/CameraActivity(1517): For Debug: begin: finishCamera(), super.onPause()
07-25 14:20:10.839: D/CameraService(70): stopPreview (pid 1517)
07-25 14:20:10.839: D/QualcommCameraHardware(70): stopPreview: E
07-25 14:20:10.839: D/QualcommCameraHardware(70): stopPreviewInternal E: 0
07-25 14:20:10.839: D/QualcommCameraHardware(70): stopPreviewInternal X: 0
07-25 14:20:10.839: D/QualcommCameraHardware(70): stopPreview: X
07-25 14:20:10.839: D/CameraService(70): setPreviewCallbackFlag(0) (pid 1517)
07-25 14:20:10.839: D/CameraService(70): setPreviewCallbackFlag(0) (pid 1517)
07-25 14:20:10.839: D/CameraService(70): disconnect E (pid 1517)
07-25 14:20:10.839: D/CameraService(70): hardware teardown
07-25 14:20:10.839: D/QualcommCameraHardware(70): stopPreview: E
07-25 14:20:10.839: D/QualcommCameraHardware(70): stopPreviewInternal E: 0
07-25 14:20:10.839: D/QualcommCameraHardware(70): stopPreviewInternal X: 0
07-25 14:20:10.839: D/QualcommCameraHardware(70): stopPreview: X
07-25 14:20:10.839: D/mm-camera-ctrlcmd(70): config_proc_CAMERA_STOP_SNAPSHOT: received CAMERA_STOP_SNAPSHOT!, ctrl->state = 13
07-25 14:20:10.839: D/mm-camera-ctrlcmd(70): config_proc_CAMERA_STOP_SNAPSHOT: snapshot is already stopped (state 13)
07-25 14:20:10.839: E/mm-camera 8x-vfe(70): Received VFE Stop ACK!!! ctrlCmd is NULL
07-25 14:20:10.839: D/QualcommCameraHardware(70): release E
07-25 14:20:10.839: D/QualcommCameraHardware(70): release: waiting for snapshot mode to complete.
07-25 14:20:10.989: I/mm-camera(70): signaling jpeg-encoding completion
07-25 14:20:10.989: W/CameraService(70): lockIfMessageWanted(256): enter sleep
07-25 14:20:11.560: I/ActivityManager(188): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.camera/. CameraEntry bnds=[360,586][477,704] } from pid 433
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home