Android webview实现拍照的方法

  

<强> 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   null

Android webview实现拍照的方法