Странный предварительный просмотр камеры Samsung Galaxy S - PullRequest
0 голосов
/ 09 марта 2011

Я использую тот же код, что и код Camera * от Google, но получаю действительно странные результаты.Внутри моего приложения и приложения «Камера» от Google предварительный просмотр застревает или перекрывается странными линиями.Предварительный просмотр обычно является последним, что я вижу в собственном приложении камеры телефона.

Модель Samsung - I9003.Тот же код прекрасно работал на I9000, который Samsung только что прекратил.Код также отлично работает на HTC Wildfire.

Любое разрешение для этого?


Просто заметил, что после съемки фотографии внутри моего приложения предварительный просмотр камеры становится нормальным.То же самое происходит в приложении камеры Google.

1 Ответ

0 голосов
/ 12 мая 2011

Не удалось опубликовать ответ ранее.Я не был уверен, что это правильно, но теперь, когда приложение работает правильно на 150 устройствах, думаю, это работает.

Итак, приложение камеры Android в функции onCreate имеет следующий код:

         /*
         * To reduce startup time, we start the preview in another thread.
         * We make sure the preview is started at the end of onCreate.
         */
        Thread startPreviewThread = new Thread(new Runnable() {
            public void run() {
                try {
                    mStartPreviewFail = false;
                    startPreview();
                } catch (CameraHardwareException e) {
                    // In eng build, we throw the exception so that test tool
                    // can detect it and report it
                    if ("eng".equals(Build.TYPE)) {
                        throw new RuntimeException(e);
                    }
                    mStartPreviewFail = true;
                }
            }
        });
        startPreviewThread.start();

Почему-то это не сработало на GT-I9003.То, что я заметил, было то, что после того, как сделать фотографию, предварительный просмотр произойдет должным образом, так что с аппаратным обеспечением как таковым не было ничего плохого.Я попытался проследить, что происходило после того, как была сделана фотография, а затем сравнить ее с кодом, с которым камера была впервые инициализирована.Я закомментировал этот код из onCreate.Приложение onResume из камеры выглядело так:

if (mSurfaceHolder != null) {
   // If first time initialization is not finished, put it in the
   // message queue.
   if (!mFirstTimeInitialized) {
      mHandler.sendEmptyMessage(FIRST_TIME_INIT);
   } else {
      initializeSecondTime();
   }
}

Я изменил это на:

        if (!mFirstTimeInitialized) {
            initializeFirstTime();
        } else {
            initializeSecondTime();
        }

Были и другие изменения, добавлю их на GitHub как отдельное приложениев ближайшее время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...