2015-04-05 3 views
1

У меня есть приложение для камеры, с которым я мог бы с некоторой помощью справиться. В моем фрагменте камеры я вызываю метод takePicture, который предназначен для приостановки предварительного просмотра (согласно the API).Предварительный просмотр не приостановлен, когда сделанный снимок

На моем старом HTC One X это было правдой, но, только что обновив до HTC One mini2, предварительный просмотр больше не приостанавливается.

Есть ли логическая причина для этого? Любые предлагаемые изменения в моем коде?

Я зову takePicture со следующим кодом:

if (myCamera != null) { 

    FragmentManager fm = getFragmentManager(); 
    PhotoHandler myphotohandler = new PhotoHandler(fm, mycontext, getView(), Photo_Type, photonumber, getDir(Project_Name), lmanager, projecttag); 

    ShutterCallback shutter = new ShutterCallback() { 
     public void onShutter() { 
      button_takephoto = (ImageButton) getView().findViewById(R.id.button_takephoto); 
      button_takephoto.setImageResource(R.drawable.shutter_closed); 
      } 
     }; 

     myCamera.takePicture(shutter, null, null, myphotohandler); 

И мой класс PhotoHandler реализует PictureCallback.

Любые предложения или подобные им впечатления будут оценены.

+0

Заранее получить награду за перепалку в этом сообщении, но кто-нибудь еще имел дело с камерой, которая не приостанавливает предварительный просмотр при съемке? – bbarrett

+0

Немного поздно на вечеринку, но да. На моем HTC One я могу сделать первый снимок, и предварительный просмотр приостанавливается правильно. Затем, если пользователь сбрасывает изображение, я возобновляю предварительный просмотр, и, когда он делает второй снимок, предварительный просмотр не приостанавливается. Вы случайно нашли подходящее обходное решение? –

+0

@MartinDevillers Привет, спасибо за ваш комментарий. Я нашел работу вокруг, которая создает приостановленный предварительный просмотр после того, как снимок сделан. Я отправлю его сейчас в качестве ответа на мой вопрос. Благодарю. – bbarrett

ответ

0

Решение, которое я нашел, - это вручную остановить предварительный просмотр в Camera.ShutterCallback. Первоначально у меня была только Camera.PictureCallback, обрабатывающая реакцию приложений на сделанное изображение.

 if (myCamera != null) { 

      PhotoHandler myphotohandler = new PhotoHandler(); 

      ShutterCallback shutter = new ShutterCallback() { 
       public void onShutter() { 
        myCamera.stopPreview(); 
       } 
      }; 

      myCamera.takePicture(shutter, null, null, myphotohandler); 

     } 
+0

Спасибо! Это не вызывает какого-либо нечетного поведения на других устройствах? Я боялся, что это будет, учитывая, что предварительный просмотр, как предполагается, уже был остановлен. –

+0

@MartinDevillers Я с тех пор определил это решение как причину случайной ошибки. Я думаю, что в редких случаях (около 1 из 10 для моего устройства) обратный вызов затвора завершается до начала обратного вызова jpeg. Остановка предварительного просмотра в обратном вызове затвора затем предотвращает случайный вызов jpeg. Таким образом, я снова не принимаю решение об отказе HTC One X прекратить предварительный просмотр при вызове takePicture. – bbarrett