<强> Android webview实现拍照的方法强>
1。html
& lt; div id=皃nlVideo1”比; & lt;输入类型=耙亍眓ame=" imgNric1 " id=" imgNric1 "/比; & lt;标签id="身份证" class=" control-label labelfont”祝辞的照片Asset & lt; br/祝辞& lt; br/比; & lt;按钮id=癰tnOpen1”类=癰tn btn-default”类型=鞍磁ァ痹诳臰ebCam & lt;选择id=皏ideoSource”比; & lt;/select> & lt; div id=皏doOne”比; & lt;视频id="视频"宽度=" 300 " autoplay> & lt;/video> & lt;帆布id=" canvasPreview "宽度=" 300 "高度=" 224 "祝辞& lt;/canvas> & lt;帆布id=" canvasUpload "宽度=?00’高度=224年的祝辞& lt;/canvas> & lt;按钮id=疤崆啊崩?癰tn btn-default”类型=鞍磁ァ痹诳焖貾hoto & lt;/div> & lt;/div> & lt;脚本type=" text/javascript祝辞 美元(文档)。准备好(函数(){ });////元素的快照 var canvasPreview=. getelementbyid (“canvasPreview”); var canvasUpload=. getelementbyid (“canvasUpload”); var contextPreview=canvasPreview.getContext (2 d); var contextUpload=canvasUpload.getContext (2 d);//# # # # # # # # # # # # # # # # # # # #视频源# # # # # # # # # # # # # # # # # # # # # # # var videoElement=document.querySelector('视频'); var videoSelect=document.querySelector(“选择# videoSource”); navigator.mediaDevices.enumerateDevices () 不要犹豫(gotDevices) (getStream) .catch (handleError); videoSelect。onchange=getStream; 函数gotDevices (deviceInfos) { (var=0;我!==deviceInfos.length;+ + i) { var deviceInfo=deviceInfos[我]; var=document.createElement选项(“选项”); 选择。值=https://www.yisu.com/zixun/deviceInfo.deviceId; 如果(deviceInfo。类型===videoinput) { 选择。=deviceInfo文本。标签| | +“相机” (videoSelect。长度+ 1); videoSelect.appendChild(选项); 其他}{ 控制台。日志('/设备发现和一些其他类型的来源:“,deviceInfo); } } } 函数getStream () { 如果(window.stream) { window.stream.getTracks ()。forEach(函数(跟踪){ track.stop (); }); }={var约束 视频:{ 可选:[{ sourceId: videoSelect.value }) } }; navigator.mediaDevices.getUserMedia(约束)。 然后(gotStream) .catch (handleError); } 函数gotStream(流){ 窗口。流=流;//使流可用于控制台 videoElement。srcObject=流; } 函数handleError(错误){ 控制台。日志(的错误:错误); }//# # # # # # # # # # # # # # # # # # # # # # # #结束视频源# # # # # # # # # # # # # # # # #//获得相机! 如果(导航器。mediaDevices,,navigator.mediaDevices.getUserMedia) { navigator.mediaDevices。getUserMedia({视频:真})。然后(函数(流){ videoElement。src=https://www.yisu.com/zixun/window.URL.createObjectURL(流); videoElement.play (); }); } 其他{ .style . getelementbyid (“pnlVideo1”)。显示=懊挥小? }////触发照片 . getelementbyid(“临时”)。addEventListener(“点击”,函数(){ contextPreview。drawImage (videoElement, 0, 0, 300, 224); contextUpload。drawImage (videoElement, 0, 0, 300, 224); .style . getelementbyid(“视频”)。显示=懊挥小? .style . getelementbyid(“临时”)。显示=懊挥小? .style . getelementbyid (“canvasPreview”)。显示=翱椤? var图像=. getelementbyid (canvasUpload) .toDataURL(“图像/jpeg”); 形象=image.replace(“数据:图像/jpeg, base64”、“); $ (" # imgNric1 ") .val(图片); });////触发照片 . getelementbyid (“btnOpen1”)。addEventListener(“点击”,函数(){ .style . getelementbyid (“vdoOne”)。显示=翱椤? .style . getelementbyid(“视频”)。显示=翱椤? .style . getelementbyid(“临时”)。显示=翱椤? .style . getelementbyid (“canvasPreview”)。显示=懊挥小? }); & lt;/script> >之前<强> 2。Android工作室中权限设置:强>
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt;清单xmlns: android=" http://schemas.android.com/apk/res/android " 包=癱om.esbu.nec.bme”比; & lt; uses-permission android: name=" android.permission。互联网”/比; & lt; !——自动完成电子邮件登录表单中的文本字段的用户的电子邮件——比; & lt; uses-permission android: name=" android.permission。GET_ACCOUNTS”/比; & lt; uses-permission android: name=" android.permission。READ_PROFILE”/比; & lt; uses-permission android: name=" android.permission。READ_CONTACTS”/比; & lt; uses-permission android: name=" android.permission。互联网”/比; & lt; uses-permission android: name=" android.permission。相机”/比; & lt; uses-permission android: name=" android.permission。ACCESS_NETWORK_STATE”/比; & lt; uses-permission android: name=" android.permission。ACCESS_WIFI_STATE”/比; & lt; uses-permission android: name=" android.permission.WRITE_EXTERNAL_STORAGE "/比; & lt; uses-permission android: name=" android.permission。ACCESS_FINE_LOCATION”/比; & lt; uses-permission android: name=" android.permission。振动”/比; & lt; uses-feature android: name=" android.hardware.camera " android:要求=" true "/比; & lt;应用程序 android: allowBackup=" true " android:图标=" @mipmap/功能减退” android: label=" @string/app_name” android: supportsRtl=" true " android: hardwareAccelerated=" true " android:主题=癅style/AppTheme”比; null null null null null null null null null null null null null null null null null null null null null null null null null null null null nullAndroid webview实现拍照的方法