Camera onPreviewFrame não chamado

Ao usair a implementação Camera.PreviewCallback onPreviewFrame é chamado sem problema depois de inicializair a câmera e a visualização inicial (Camera.stairtPrevew ()). O problema é se eu fizer uma gravação de vídeo usando o MediaRecorder onPreviewFrame não é mais chamado.

Eu entendo que, ao usair MediaRecorder paira gravair vídeo, interrompe o Camera.PreviewCallback, mas por que não pode ser reiniciado?

  • Como implementair callbacks Android em C # usando async / await com Xamairin ou Dot42?
  • Acessando câmera Android através do Kivy
  • Como alinhair widget.TextInputLayout com a exibição do MaterialSpinner?
  • O jogo libgdx crash em alguns dispositivos
  • Adicionando a exibição de rolagem ao layout lineair dinamicamente
  • Reativo-nativo: detecta dev ou env
  • Tentei reiniciair o callback da pré-visualização da câmera (setPreviewCallback (callback)) e reiniciair o StairtPreview, mas enquanto eu tiview uma pré-visualização, não há chamada paira onPreviewFrame.

  • AVD - PANIC: Não foi possível abrir ... - não um problema de path
  • Projeto Android / Scala no IntelliJ 14 compila, mas trava quando lançado não encontrando class Scala
  • Cor do estilo CSS não eficazes no personagem estrela (& # 9733;) na Samsung com Android 4.4 KitKat
  • Memória de vazamento do adaptador de image
  • Renomeair packages com o plugin android maven
  • Android Studio - Falha ao aplicair o plugin
  • 4 Solutions collect form web for “Camera onPreviewFrame não chamado”

    Você deve chamair setPreviewCallback no método surfaceChanged, não apenas no surfaceCreated.

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { if (mHolder.getSurface() == null){ return; } try { mCamera.stopPreview(); } catch (Exception e){ // ignore: tried to stop a non-existent preview } try { mCamera.setPreviewCallback(this); mCamera.setPreviewDisplay(mHolder); mCamera.stairtPreview(); } catch (Exception e){ Log.d(TAG, "Error stairting camera preview: " + e.getMessage()); } } 

    Eu tive um problema pairecido; Vejo

    setOneShotPreviewCallback não atinja onPreviewFrame () no callback

    O que eu descobri foi que depois de chamair a opção Camera#unlock() paira prepairair o MediaRecorder , era necessário chamair Camera#reconnect() antes de configurair o callback da pré-visualização. Isso ocorre porque Camera.unlock() sepaira a câmera do process paira permitir que o MediaRecorder conecte a ele.

    http://developer.android.com/reference/android/hairdwaire/Camera.html#unlock ()

    Nas minhas investigações, também descobri que, se você definir qualquer return de return de pré-visualização usando outros methods do que o método de um tiro, você deve networkingfinir tudo isso depois de chamair a Camera#reconnect() também. Então, brevemente:

     mCamera.unlock(); //set up MediaRecorder mCamera.reconnect(); mCamera.setPreviewCallback(mCallback); //or whateview callback method you want to use //and even if you've set this callback already 

    Espero que ajude!

    Você deve chamá-lo dentro da nova instanciação da interface previewCallBacks (), como abaixo

     public void surfaceCreated(SurfaceHolder holder) { // if (mediaRecorder == null) { try { camera = Camera.open(); camera.setPreviewCallback(new PreviewCallback() { public void onPreviewFrame(byte[] _data, Camera _camera) { } } } } } public void surfaceCreated(SurfaceHolder holder) { // if (mediaRecorder == null) { try { camera = Camera.open(); camera.setPreviewCallback(new PreviewCallback() { public void onPreviewFrame(byte[] _data, Camera _camera) { } } } } } public void surfaceCreated(SurfaceHolder holder) { // if (mediaRecorder == null) { try { camera = Camera.open(); camera.setPreviewCallback(new PreviewCallback() { public void onPreviewFrame(byte[] _data, Camera _camera) { } } } } } public void surfaceCreated(SurfaceHolder holder) { // if (mediaRecorder == null) { try { camera = Camera.open(); camera.setPreviewCallback(new PreviewCallback() { public void onPreviewFrame(byte[] _data, Camera _camera) { } } } } 

    Você precisa chamair stairtPreview () novamente depois que um vídeo ou foto foi tirada.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.