Dcloud(HbuilderX打包的APP)可以调用闪光灯吗?

2020-06-04 建站知识 浏览 手机预览
文章来源:http://www.imtr.cn/html/n255.html

注意闪光灯不亮的情况,是需要摄像头权限。打包时要配好权限,并且用户使用时需要给予权限。

只有在真机运行才能起作用哦

引入Dcloud的js和css(右键保存到本地)mui.min.css    mui.min.js

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
		<title>测试闪光灯</title>
		<link rel="stylesheet" href="http://www.dedecmsok.com/style/Dcloud/mui.min.css" />
		<script type="text/javascript" src="http://www.dedecmsok.com/style/Dcloud/mui.min.js"></script>
		<style type="text/css">
			p {
				width: 100%;
				height: 60px;
				line-height: 60px;
				text-align: center;
				border: 1px red solid;
			}
			p:active {
				opacity: .6;
			}
		</style>
	</head>
	<body>
		<p id="on">开启闪光灯</p>
		<p id="off">关闭闪光灯</p>
		<script>
			mui.plusReady(function() {
				try {
					var mCameraManager = plus.android.importClass('android.hardware.camera2.CameraManager');
					var Context = plus.android.importClass('android.content.Context');
					var main = plus.android.runtimeMainActivity();
					mCameraManager = main.getSystemService(Context.CAMERA_SERVICE);
					var ids = mCameraManager.getCameraIdList();
					var CameraCharacteristics = plus.android.importClass('android.hardware.camera2.CameraCharacteristics');
					on.addEventListener('tap', function() {
						for (var i = 0; i < ids.length; i++) {
							var c = mCameraManager.getCameraCharacteristics(ids[i]);
							var flashAvailable = c.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
							var lensFacing = c.get(CameraCharacteristics.LENS_FACING);
							if (flashAvailable != null && flashAvailable &&
								lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
								//打开或关闭手电筒
								mCameraManager.setTorchMode(ids[i], true);
							}
						}
					});
					off.addEventListener('tap', function() {
						for (var i = 0; i < ids.length; i++) {
							var c = mCameraManager.getCameraCharacteristics(ids[i]);
							var flashAvailable = c.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
							var lensFacing = c.get(CameraCharacteristics.LENS_FACING);
							if (flashAvailable != null && flashAvailable &&
								lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
								//打开或关闭手电筒
								mCameraManager.setTorchMode(ids[i], false);
							}
						}
					});
				} catch (e) {
					
				}
			});
		</script>
	</body>
</html>

ios设备用下面的代码

function turnonLight(isOn) {  
    if(plus.os.name == "iOS") {  
        var avcaptClass = plus.ios.importClass("AVCaptureDevice");  
        if(avcaptClass) {  
            var device = avcaptClass.defaultDeviceWithMediaType("vide");  
            plus.ios.invoke(device, "lockForConfiguration:", null);  
            if(isOn) {  
                plus.ios.invoke(device, "setTorchMode:", 1);  
                plus.ios.invoke(device, "setFlashMode:", 1);  
            } else {  
                plus.ios.invoke(device, "setTorchMode:", 0);  
                plus.ios.invoke(device, "setFlashMode:", 0);  
            }  
            plus.ios.invoke(device, "unlockForConfiguration");  
        }  
    }  
};


原文地址:http://www.imtr.cn/html/n255.html
  • 如果你的问题还没有解决,可以点击页面右侧的“ ”,站长收到问题后会尽快回复解决方案到你的邮箱。
  • 创造始于问题,有了问题才会思考,有了思考,才有解决问题的方法,才有找到独立思路的可能。 —— 陶行知