Проблема с предварительным просмотром камеры — предварительный просмотр становится пиксельным и искажается

Я создаю приложение, часть которого имеет предварительный просмотр камеры.

Моя проблема в том, что если я попаду домой на устройстве и снова открою приложение, камера будет пиксельной с фиолетовыми линиями, проходящими через нее. Я предполагал, что это как-то связано с методами onResume()/onPause(), но в этом я останавливаю предварительный просмотр и устанавливаю камеру на ноль (ниже)

В РЕЗЮМЕ

@Override
    public void onResume() {

        //Registering the Listener
        super.onResume();
        manager.registerListener(this,
                manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                manager.SENSOR_DELAY_NORMAL);

        //Opening the Camera and Starting the Preview
        camera = Camera.open();
        startPreview();
    }

НА ПАУЗЕ

    @Override
    public void onPause() {

        super.onPause();
        if(camera!=null)
        {
            camera.stopPreview();
            camera.release();
            camera = null;
            inPreview = false;

        }
    }

У меня есть возможность для пользователя переснять свою фотографию, если пользователь попытается переснять изображение в третий раз, я столкнусь с той же проблемой. Я не знаю, в чем проблема, я получил код камеры от

https://github.com/commonsguy/cw-advandroid/blob/master/Camera/Preview/src/com/commonsware/android/camera/PreviewDemo.java

С небольшой доработкой под мои нужды.

Из чтения и исследований кажется, что мои onPause и onResume верны, поэтому проблема может быть не в этом...

Любая помощь приветствуется


person DJ-DOO    schedule 23.07.2013    source источник
comment
если вы удалите startPreview(), что произойдет??   -  person Armaan Stranger    schedule 23.07.2013
comment
Этот код немного устарел. При этом я никогда не сталкивался с описанным вами поведением, которое может быть связано с вашей конкретной моделью устройства (какой бы она ни была). Если вы можете воспроизвести проблему с моей библиотекой CWAC-Camera, сообщите мне модель устройства есть, поэтому я могу провести дальнейшее исследование.   -  person CommonsWare    schedule 23.07.2013
comment
@CommonsWare Я посмотрю эту библиотеку, а пока просто хочу, чтобы вы знали, что я использую устройство Samsung Nexus 10.   -  person DJ-DOO    schedule 23.07.2013
comment
Что ж, я определенно не вижу такого поведения на моем Nexus 10 с демонстрационным проектом CWAC-Camera (мне повезло, что у меня был запущен N10 и установлено приложение!).   -  person CommonsWare    schedule 23.07.2013
comment
@ArmaanStranger Боюсь, та же проблема   -  person DJ-DOO    schedule 23.07.2013
comment
@CommonsWare, рискуя показаться дерзким, у вас есть старый код для тестирования на устройстве? Я только что работал над сенсорным управлением, чтобы сфокусироваться, у меня не было возможности протестировать вашу новую версию.   -  person DJ-DOO    schedule 24.07.2013
comment
@CommonsWare (просто подумав) в методе getBestPreviewSize я добавил camera.setDisplayOrientation(90), это было просто, чтобы заблокировать его в портретном режиме, поэтому мой вид портретный, и когда я нажимаю кнопку «Домой» на n10 и повторно открываю приложение, ориентация возвращается к альбомной ориентации с пикселизацией вида и проходящими фиолетовыми линиями.   -  person DJ-DOO    schedule 24.07.2013
comment
Гм, вы связались с моим старым кодом в своем вопросе. Я не уверен, какой другой код вы могли бы иметь в виду. Этот проект (и проект Camera/Picture/ в том же репозитории) были моими первыми попытками поддержать Camera.   -  person CommonsWare    schedule 24.07.2013
comment
извините, это код, который я имел в виду, ваша первая поддержка камеры, мне интересно, вы когда-нибудь тестировали его на n10?   -  person DJ-DOO    schedule 24.07.2013
comment
@CommonsWare Я тестировал его на телефоне htc с Froyo, у меня возникла та же проблема, когда я возвращаюсь к предварительному просмотру, я потерял ориентацию, он растянулся и т. Д. Как будто он не настраивается или что-то в этом роде.   -  person DJ-DOO    schedule 25.07.2013
comment
Мне интересно, вы когда-нибудь тестировали его на n10? -- нет, потому что я прекратил эту главу в книге о камерах ~ 18 месяцев назад, просто восстановив ее в прошлый понедельник, переключившись на CWAC-Camera.   -  person CommonsWare    schedule 25.07.2013
comment
@CommonsWare, если бы вы могли помочь мне в этом, я был бы признателен, я пытаюсь сделать часть моего проекта с камерой простой, а ваша новая библиотека выглядит слишком сложной ...   -  person DJ-DOO    schedule 25.07.2013
comment
Использование CWAC-Camera заключается в размещении JAR-файла в вашем проекте, отображении CameraFragment для предварительного просмотра и вызове takePicture(), когда вы хотите сделать снимок. Все остальное необязательно. Если это слишком сложно, то мой старый код, который вы пытаетесь использовать, тоже. Кроме того, этот старый код был просто примером из книги. Работа напрямую с камерой очень сложна, поэтому я переключился на работу с библиотекой, которую могу поддерживать, не обязательно объясняя каждую строчку кода.   -  person CommonsWare    schedule 25.07.2013


Ответы (1)


если кто-то вроде меня (изучающий веревки) сталкивается с той же проблемой, в чем была моя проблема, которую я добавил

camera.setDisplayOrientation(90);

чтобы повернуть предварительный просмотр в портрет. Моя проблема заключалась в том, что я назвал это не в том месте, теперь я вызываю его в методе onResume().

Простое исправление в конце... спасибо всем

person DJ-DOO    schedule 26.07.2013