У меня есть классическое приложение для Android с предварительным просмотром камеры (обычное устройство, которое можно найти во многих учебных пособиях [marakana и т. Д.]), Которое должно делать снимки в заданный интервал времени. Выполняется потоковая передача и уничтожение потоков, обрабатываются такие ошибки, как «метод, вызываемый после выпуска»
. Но иногда возникает известная ошибка 100
. Я смирился с тем, что это происходит, и попытался с этим справиться. Я реализовал ErrorCallback
и его метод onError
, в котором текущий объект камеры освобождается и создает новый объект, как написано в официальной документации.
Но (неудивительно) этого недостаточно. Возможно, новая камера назначена неправильно, потому что теперь появляется сообщение «CameraDemo был неожиданно завершен»
.
Я прочитал много документов и примеров в надежде, что где-то будут объяснены правильные действия, но, по-видимому, ни у кого нет такой проблемы. Поэтому я хотел бы спросить, что мне еще делать, кроме выпуска и создания новой камеры? Вот код:
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).Так следует ли мне как-то снова назначить держатель поверхности на камеру или воссоздать держатель поверхности тоже?
Этого было бы достаточно, чтобы направить меня, например, на некоторые форумы, где это описано или решено, и т. д. Спасибо за любую помощь.