У меня есть классическое приложение для Android с предварительным просмотром камеры (общее изображение, которое можно найти во многих учебниках [маракана и т. Д.]), Которое должно делать изображение за определенный промежуток времени. Выполняются потоки резьбы и убийства, обрабатываются ошибки, такие как "method called after release"
. Но иногда происходит известная ошибка 100
. Я согласился с тем фактом, что это происходит и пыталось справиться с этим. Я применил ErrorCallback
и его метод onError
, где текущий объект камеры освобожден и создан экземпляр нового, как указано в официальной документации.Восстанавливающий объект камеры после ошибки 100 (сервер камеры скончался)
Но (без удивления) этого недостаточно. Возможно, новая камера ошибочно выделена, потому что появляется сообщение "CameraDemo has been exited unexpectedly"
. Я читал много документов и примеров в надежде, что надлежащее продолжение будет где-то объяснено, но никто не имеет такой проблемы, очевидно. Поэтому я хотел бы спросить, что еще я должен сделать, помимо выпуска и создания новой камеры? Вот код:
ErrorCallback CEC = new ErrorCallback()
{
public void onError(int error, Camera camera)
{
Log.d("CameraDemo", "camera error detected");
if(error == Camera.CAMERA_ERROR_SERVER_DIED)
{
Log.d("CameraDemo", "attempting to reinstantiate new camera");
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release(); //written in documentation...
camera = null;
camera = Camera.open();
}
}
};
Вскоре - если я выпускаю и воссоздать камеру в onError
обратного вызова затем RuntimeException
метод вызывается после освобождения (takePicture) поднимается. Так должен ли я каким-то образом снова назначить держатель поверхности фотоаппарату или снова воссоздать держатель поверхности?
Этого было бы достаточно, чтобы направить меня, например. на некоторые форумы, где это описано или решено и т. д. Спасибо за любую помощь.
Вы нашли решение? Просьба поделиться – Gena