Camera.release() занимает 30 секунд, чтобы освободить камеру в Nexus 10. Есть ли способ ускорить процесс?
Я использую следующий код для освобождения камеры в onPause. Но линия mCamera.release() занимает в среднем 30 секунд, чтобы выпустить камеру на устройстве Nexus 10. Я добавил регистрацию до и после mCamera.release() и обнаружил, что разница во времени между печатью этих журналов составляет 30 секунд.
private void releaseCamera() {
if (mCamera != null) {
previewing = false;
mCamera.setPreviewCallback(null);
if(mPreview != null)
mPreview.getHolder().removeCallback(mPreview);
Log.e("QR","Starting to call mCamera.release()");
mCamera.release();
Log.e("QR","Released Camera");
mCamera = null;
}
}
Я вызываю mCamera.stopPreview() перед вызовом releaseCamera()
Есть ли способ, которым я могу сделать это асинхронно? Потому что от деятельности Camerapreview до следующей активности требуется менее минуты.
Edit1: мы уменьшили размер предварительного просмотра с самого высокого (1080x1920) до среднего диапазона (480x800), и все стало нормально работать. Размер предварительного просмотра имеет какое-либо отношение к выпуску камеры в HAL?
Ответы
Ответ 1
Вы можете попытаться выпустить камеру внутри Thread как обходной путь для этого, хотя это не идеальное решение. Вы можете запустить следующее действие, когда функция release выполняется в фоновом режиме
new AsyncTask() {
@Override
protected Object doInBackground(Object... params) {
releaseCamera();
return null;
};
}.execute();
Ответ 2
Dilip, это известная проблема в Nexus 10, проверьте камеру Nexus 10. снимок в течение 30 секунд.
Мы пробовали с этими вещами,
camera.stopPreview();
camera.setPreviewCallback(null);
camera.unlock();
camera.release();
camera = null;
Ответ 3
Мне не нужен уровень репутации, чтобы добавить комментарий, поэтому я поставлю его здесь:
new Thread(new Runnable(){
public void run(){
camera.stopPreview();
camera.setPreviewCallback(null);
camera.unlock();
camera.release();
camera = null;
}
}) начать();.
Когда вызов разблокировки будет запущен в отдельном потоке, это вызовет проблему для другого приложения, которое использует камеру и будет запущено поверх этого.
Я также ищу решение. У меня нет Nexus10. У нас есть собственное устройство.