2015-07-02 6 views
1

Кордова приложение, с помощью камеры Plugin https://github.com/mbppower/CordovaCameraPreviewПредварительный просмотр камеры не отображается при первой загрузке на Android

Я запустить службу камеры, скрыть его, а затем, когда пользователь нажимает конкретная страница показывает окно предварительного просмотра снова. Он отлично работает на iOS, но не на Android. При запуске на Android-устройстве окно предварительного просмотра камеры по умолчанию не отображается, но оно появляется, если я минимизирую (нажав кнопку «домой»), а затем снова открывая приложение.

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

Основной метод инициализации:

 var onDeviceReady = function() { 

      var tapEnabled = false; //enable tap take picture 
      var dragEnabled = false; //enable preview box drag across the screen 
      var toBack = false; //send preview box to the back of the webview 

      var rect = {x: 428, y: 190, width: 200, height: 150}; 

      cordova.plugins.camerapreview.startCamera(rect, "front", tapEnabled, dragEnabled, toBack); 
      cordova.plugins.camerapreview.hide(); 
     }; 
     document.addEventListener('deviceready', onDeviceReady, false); 

Мои шоу и скрыть функции:

var _show = function() { 
     // Show camera preview 
     if(cordova) { 
      console.log("show camera"); 
      $timeout(function() { 
       cordova.plugins.camerapreview.show(); 
      }, 250); 
     } 
    }; 

    var _hide = function() { 
     // Hide camera preview 
     if(cordova) { 
      $timeout(function() { 
       cordova.plugins.camerapreview.hide(); 
      }, 0); 
     } 
    }; 
  1. Даже после того, как функция шоу() вызывается, камера предварительного просмотра не отображается при первой загрузке. Я должен свести к минимуму, а затем снова открыть приложение для предварительного просмотра. Почему он отлично работает в iOS, но неправильно работает на Android?

Update

Если я никогда не скрыть его (удалить .hide() вызов, когда я начала камеру), то он показывает прекрасно! Проблема возникает, если я скрою ее, а затем попытаюсь выполнить показ. Он появится только после того, как я скрою, а затем снова открою приложение. Сделать это еще более странным; если внутри onDeviceReady выше я вызываю .hide(), а затем .show() сразу показывает окно предварительного просмотра!

ответ

1

Таким образом, я исправил проблему, но я не понимаю ее и хотел бы получить некоторую обратную связь.

Вместо вызова camerapreview.hide() в моем onDeviceReady я вызываю свою частную функцию _hide() вне * onDeviceReady. Я решил попробовать это, потому что вызов .hide затем .show показывает окно предварительного просмотра, но вызов .hide .show then .hide снова представляет тот же дефект.

var _hide = function() { 
    // Hide camera preview 
    if(cordova) { 
     $timeout(function() { 
      cordova.plugins.camerapreview.hide(); 
     }, 0); 
    } 
}; 
Смежные вопросы