参考资料: http://blog.csdn.net/qq_27626333/article/details/51815121
今天做了个html5调用摄像头访问二维码的功能,调了一天终于通啦,嘎嘎: 步骤: 1、下载mui.min.js,放在项目中 2、index.html页面引用:
<script src="Scripts/mui.min.js"></script>3、tab-ScanCode.html页面代码:
<ion-view class="tzgg" hide-nav-bar="true"> <ion-content class="erweima"> <div class="module"> <div class="content"> <div> <div id="bcid"></div> </div> </div> </div> </ion-content> <div class="fixbtn"> <span ng-click="cancelScanDo()"><i class="ion-ios-barcode-outline" id="cancelScan" ></i ><b>取消扫描</b></span> </div> </ion-view>4、ScanCodeCtrl代码:
ctr.controller('ScanCodeCtrl', ['$scope', '$location', 'dataService', '$window', '$ionicPopup', '$ionicBackdrop', function($scope, $location, dataService, $window, $ionicPopup, $ionicBackdrop) { setStyle(); //mui初始化 mui.init(); // mui.init({ // swipeBack: true //启用右滑关闭功能 // }); var scan = null; var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭 // 条码识别成功事件 function onmarked(type, result) { var text = '未知: '; switch(type) { case plus.barcode.QR: text = 'QR: '; // 二维码 break; case plus.barcode.EAN13: text = 'EAN13: '; break; case plus.barcode.EAN8: text = 'EAN8: '; break; } alert(text + result); //关闭界面,返回首页 scan.close(); //关闭扫描scan $window.location.href = "#/tab/shouye"; } // 创建扫描控件 function startRecognize() { scan = new plus.barcode.Barcode('bcid'); //scan.start(); scan.onmarked = onmarked; } function setStyle() { $("#bcid").width($(window).width()); $("#bcid").height($(window).height() - 70); } // 开始扫描 function StartDo() { startRecognize(); scan.start(); } //开始扫描 $scope.$on('$ionicView.afterEnter', function() { StartDo(); }) //取消扫描 $scope.cancelScanDo = function() { if(scan != null) { scan.close(); //关闭扫描scan } $window.location.href = "#/tab/shouye"; } }])注:以下代码很重要,如果不加$scope.$on('$ionicView.afterEnter', function() { });的话,第一次可以显示扫描的摄像头,第二次再点击,则不显示了。加上上面的代码即可了。具体的也没太搞懂,貌似是页面加载完成后再执行的东西。
//开始扫描 $scope.$on('$ionicView.afterEnter', function() { StartDo(); })