Я прочитал около 15 связанных тем SO, но ничто в этих темах не помогло отобразить сканер. Пока что я тестирую только мое приложение Ioni c v1 на Android. Я использую вкладки Ioni c и на одной вкладке контент на основе сервера загружается с помощью ng-repeat. Вверху находится кнопка для сканирования QR-кода, нажатие кнопки инициализирует $scope.scannerOpen()
и должно показывать сканер с такими вызовами функций:
$scope.scannerOpen = function() {
QRScanner.prepare(onDone) ; // prepare the camera, check permissions
}
function onDone(err, status){
if (err) {
// here we can handle errors and clean up any loose ends.
console.error("Camera: Prepare error - " +err);
return ;
}
$scope.scannerStatus() ;
}
$scope.scannerStatus = function() {
QRScanner.getStatus(function(status){
if (status.authorized) { // authorized, show scanner
console.log("camera: authorized") ;
$scope.scannerShow() ;
} else if (!status.authorized && !status.denied) { // never asked, prompt user
console.log("camera: never asked") ;
QRScanner.prepare(onDone) ;
} else if (status.denied && status.canOpenSettings) { // user previously denied prompt, ask user to change settings
console.log("camera: denied") ;
QRScanner.openSettings() ;
} else if (status.restricted) { // phone settings restricted
console.log("camera: restricted") ;
alert("Camera is restricted, unable to ask for permissions or display phone camera settings.")
}
});
}
$scope.scannerShow = function() {
// Make the webview transparent so the video preview is visible behind it.
console.log("Camera: Show Scanner") ;
QRScanner.show();
}
Моя консоль показывает мне сообщения AUTHORIZED и SHOW SCANNER - но сканер камеры не отображается. Затем я прошел через свою визуализацию и применил background:none transparent
к телу, ION-VIEW, ION-NAV-VIEW, ION-CONTENT - в основном к любому элементу, который занимал весь экран. В некоторых потоках SO упоминается применение background: none transparent
к элементу <ion-app>
, но этот элемент отсутствует в приложениях Ioni c v1 (о которых я знаю). Но ничто не помогло или не показало камеру под ней.
Поскольку я просмотрел все основные элементы в отрисованном DOM и добавил background:none transparent
, и я все еще не вижу сканер, я даже не уверен, что сканер работает. есть или нет.
Что мне здесь не хватает?
ОБНОВЛЕНИЕ 1:
По какой-то причине я попытался отсканировать qrcode, и, к моему удивлению, это сработало! Это здорово - но я до сих пор не могу понять, почему его не отображают. Я снова прошел DOM, применяя background: none transparent
везде, где только могу придумать (и не подумать), и представление сканера все еще не отображается.
ОБНОВЛЕНИЕ 2:
Я наконец нашел 3 элементы, к которым я должен был применить background:none transparent
или display:none
- тогда я мог видеть сканер камеры позади моего приложения. Я знаю, что это не может быть окончательным решением, но пока это единственное, что я смог сделать, чтобы увидеть его. Я прилагаю визуальный код.