Камера не выпускается иногда после переустановки приложения - PullRequest
3 голосов
/ 14 марта 2012

Я занимаюсь разработкой приложения для камеры.Иногда я пытался переустановить приложение, когда оно на переднем плане.В процессе установки приложение будет убито, и не будет вызван onPause(), в котором я останавливаю предварительный просмотр и освобождаю ресурс камеры.При нормальных обстоятельствах система автоматически закроет и отпустит камеру, и я получил следующий журнал:

03-14 15:48:36.316: E/CameraHardwareSec(83): Could not dequeue gralloc buffer!
03-14 15:48:36.316: I/CameraHardwareSec(83): int android::CameraHardwareSec::previewThreadWrapper(): calling mSecCamera->stopPreview() and waiting
03-14 15:48:36.363: I/CameraHardwareSec(83): int android::CameraHardwareSec::previewThreadWrapper(): return from wait
03-14 15:48:36.363: I/CameraHardwareSec(83): int android::CameraHardwareSec::previewThreadWrapper(): exiting
03-14 15:48:36.363: W/SecCamera(83): int android::SecCamera::stopPreview(): doing nothing because m_flag_camera_start is zero
03-14 15:48:36.363: W/SecCamera(83): int android::SecCamera::stopRecord(): doing nothing because m_flag_record_start is zero
03-14 15:48:36.363: I/SecCamera(83): DeinitCamera: m_cam_fd(29)
03-14 15:48:36.371: I/SecCamera(83): DeinitCamera: m_cam_fd2(30)
03-14 15:48:36.386: E/CameraHardwareSec(83): preview window is NULL!
03-14 15:48:36.386: I/CameraService(83): Destroying camera 0
03-14 15:48:36.386: I/CameraHardwareSec(83): int android::HAL_camera_device_close(hw_device_t*)
03-14 15:48:36.386: I/SecCamera(83): DeinitCamera : already deinitialized
03-14 15:48:36.390: W/AudioFlinger(83): session id 89 not found for pid 83
03-14 15:48:36.394: W/AudioFlinger(83): session id 90 not found for pid 83

Однако иногда эти данные журнала не распечатывались.И я думаю, это означает, что камера не была выпущена.Поэтому, когда приложение перезапускается, оно выдает исключение времени выполнения "failed to connect to camera service" при попытке открыть камеру.

Кто-нибудь имеет какое-либо представление о том, почему система не выпустила камеру, когда ее убили.

Ответы [ 3 ]

1 голос
/ 14 марта 2012

Вы добавили разрешения в свой файл манифеста?

<uses-permission android:name="android.permission.CAMERA" />
 <uses-feature android:name="android.hardware.camera" />
 <uses-feature android:name="android.hardware.camera.autofocus" />
0 голосов
/ 21 мая 2014

Не разрешать пользователям использовать камеру, когда в телефоне не хватает памяти.Вы не хотите, чтобы ваше приложение обвиняли, когда Android убивал процессы.

0 голосов
/ 14 марта 2012

Может быть, попытаться поместить ваш cam.release () в метод onDestroy вместо метода onPause? Я не знаю, поможет ли это, но это так. что я хотел бы увидеть, если это исправит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...