воссоздание объекта камеры после ошибки 100 (сервер камеры не работает)

У меня есть классическое приложение для 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).Так следует ли мне как-то снова назначить держатель поверхности на камеру или воссоздать держатель поверхности тоже?

Этого было бы достаточно, чтобы направить меня, например, на некоторые форумы, где это описано или решено, и т. д. Спасибо за любую помощь.

8
задан Vasily Kabunov 3 October 2017 в 03:36
поделиться