vue项目真机运行为啥没有调用摄像头?请大佬们求教

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue项目真机运行为啥没有调用摄像头?请大佬们求教相关的知识,希望对你有一定的参考价值。

<script type="text/javascript">
scan = null;//扫描对象
mui.plusReady(function ()
mui.init();
startRecognize();
);
window.onload=function()

function startRecognize()
try
var filter;
//自定义的扫描控件样式
var styles = frameColor: "#29E52C",scanbarColor: "#29E52C",background: "#fff"
//扫描控件构造
scan = new plus.barcode.Barcode('bcid',filter,styles);
scan.onmarked = onmarked;
scan.onerror = onerror;
scan.start();
//打开关闭闪光灯处理
var flag = false;

document.getElementById("turnTheLight").addEventListener('tap',function()
if(flag == false)
scan.setFlash(true);
flag = true;
else
scan.setFlash(false);
flag = false;

);
catch(e)
alert("出现错误啦:\n"+e);

;
function onerror(e)
alert(e);
;
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 );

;

// 从相册中选择二维码图片
function scanPicture()
plus.gallery.pick(function(path)
plus.barcode.scan(path,onmarked,function(error)
plus.nativeUI.alert( "无法识别此图片" );
);
,function(err)
plus.nativeUI.alert("Failed: "+err.message);
);



</script>

参考技术A 没有进行相机授权。需要申请相机权限,并且通过用户授权才可以正常调用摄像头进行工作。

使用vue做移动app时,调用摄像头扫描二维码

现在前端技术发展飞快,前端都能做app了,那么项目中,也会遇到调用安卓手机基层的一些功能,比如调用摄像头,完成扫描二维码功能

下面我就为大家讲解一下,我在项目中调用这功能的过程。

首先我们需要一个中间框架,hbuilder

http://www.html5plus.org/doc/zh_cn/accelerometer.html 这个是html5+的文档地址,我们找到Barcode模块,

有这么多,然后我们往下找

找到这段代码

<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8">
	<title>Barcode Example</title>
	<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数 
document.addEventListener( "plusready", onPlusReady, false );
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady() {
	var e = document.getElementById("scan");
	e.removeAttribute( "disabled" );
}
var scan = null;
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 );
}
function startRecognize() {
	scan = new plus.barcode.Barcode(\'bcid\');
	scan.onmarked = onmarked; 
}
function startScan() {
	scan.start();
}
function cancelScan() {
	scan.cancel();
}
function setFlash() {
	scan.setFlash();
}
	</script>
	<style type="text/css">
*{
	-webkit-user-select: none;
}
html,body{
	margin: 0px;
	padding: 0px;
	height: 100%;
}
#bcid {
	background:#0F0;
	height:480px;
	width:360px;
}
	</style>
	</head>
	<body >
		<input type=\'button\' onclick=\'startRecognize()\' value=\'创建扫描控件\' />
		<input type=\'button\' onclick=\'startScan()\' value=\'开始扫描\' />
		<input type=\'button\' onclick=\'cancelScan()\' value=\'取消扫描\' />
		<input type=\'button\' onclick=\'setFlash()\' value=\'开启闪光灯\' />
		<div id= "bcid"></div>
		<input type=\'text\' id=\'text\'/>
	</body>
</html>
	

  这段代码,一定要放在我们vue的index.html页面里,别问我为什么,我也不知道,反正就是要全局

// 扩展API加载完毕后调用onPlusReady回调函数 
document.addEventListener( "plusready", onPlusReady, false );
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady() {
	var e = document.getElementById("scan");
	e.removeAttribute( "disabled" );
}
var scan = null;

  我写的是这样的,这代码是放在methods里面的

startRecognize() {
	scan = new plus.barcode.Barcode(\'bcid\');
	scan.onmarked = onmarked;
       this.startScan 
}  
startScan () {
    scan.start();
}  

  如果你们试了不行,那就在startRecognize函数内加一个setTimeout,延迟个200ms,我试了是可以使用的,扫描成功后会有个alert,这个可以改成扫描成功后的函数或者你们自己想要做的事情。

以上是关于vue项目真机运行为啥没有调用摄像头?请大佬们求教的主要内容,如果未能解决你的问题,请参考以下文章

vue部署到宝塔请求接口报404错误

求教大佬win7 64位旗舰版怎么支持16位应用程序?

VS2019,调试的时候控制台无法显示输出,求教各位大佬这是怎么回事?

手机测试vue移动端项目(真机联调)

设置oracle11g定时自动备份,为啥没有备份?请大神们帮我看看为啥!

为啥我的vscode写html 代码不能运行 Code language not supported or defined. 有没有大佬救救我?