国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android webview實現拍照的方法

2019-10-22 18:24:58
字體:
來源:轉載
供稿:網友

Android webview實現拍照的方法

1. html 

<div id="pnlVideo1">               <input type="hidden" name="imgNric1" id="imgNric1" />               <label id="nric" class="control-label labelfont" style="color:#888;font-weight:bold;">Picture of Asset</label><br /><br />               <button id="btnOpen1" class="btn btn-default" type="button">Open WebCam</button>               <select id="videoSource" style="display:none">                                </select>               <div id="vdoOne" style="display:none;">                 <video id="video" style="margin-top:15px;margin-bottom:15px;" width="300" autoplay></video>                 <canvas id="canvasPreview" style="margin-top:15px;" width="300" height="224"></canvas>                 <canvas id="canvasUpload" style="display:none;" width='300' height='224'></canvas>                 <button id="snap" class="btn btn-default" type="button">Snap Photo</button>               </div>             </div>                                   <script type="text/javascript">     $(document).ready(function () {         });       //// Elements for taking the snapshot     var canvasPreview = document.getElementById('canvasPreview');     var canvasUpload = document.getElementById('canvasUpload');     var contextPreview = canvasPreview.getContext('2d');     var contextUpload = canvasUpload.getContext('2d');           //#################### Video Source #######################     var videoElement = document.querySelector('video');     var videoSelect = document.querySelector('select#videoSource');       navigator.mediaDevices.enumerateDevices()       .then(gotDevices).then(getStream).catch(handleError);       videoSelect.onchange = getStream;       function gotDevices(deviceInfos) {       for (var i = 0; i !== deviceInfos.length; ++i) {         var deviceInfo = deviceInfos[i];         var option = document.createElement('option');         option.value = deviceInfo.deviceId;         if (deviceInfo.kind === 'videoinput') {           option.text = deviceInfo.label || 'camera ' +             (videoSelect.length + 1);           videoSelect.appendChild(option);         } else {           console.log('Found ome other kind of source/device: ', deviceInfo);         }       }     }       function getStream() {       if (window.stream) {         window.stream.getTracks().forEach(function (track) {           track.stop();         });       }         var constraints = {                  video: {           optional: [{             sourceId: videoSelect.value           }]         }       };         navigator.mediaDevices.getUserMedia(constraints).         then(gotStream).catch(handleError);     }       function gotStream(stream) {       window.stream = stream; // make stream available to console       videoElement.srcObject = stream;     }       function handleError(error) {       console.log('Error: ', error);     }       //######################## End Video Source #################         // Get access to the camera!     if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {       navigator.mediaDevices.getUserMedia({ video: true }).then(function (stream) {         videoElement.src = window.URL.createObjectURL(stream);         videoElement.play();         });     }     else {       document.getElementById("pnlVideo1").style.display = "none";     }                 //// Trigger photo take     document.getElementById("snap").addEventListener("click", function () {       contextPreview.drawImage(videoElement, 0, 0, 300, 224);       contextUpload.drawImage(videoElement, 0, 0, 300, 224);       document.getElementById("video").style.display = "none";       document.getElementById("snap").style.display = "none";       document.getElementById("canvasPreview").style.display = "block";         var image = document.getElementById("canvasUpload").toDataURL("image/jpeg");       image = image.replace('data:image/jpeg;base64,', '');       $("#imgNric1").val(image);     });       //// Trigger photo take         document.getElementById("btnOpen1").addEventListener("click", function () {       document.getElementById("vdoOne").style.display = "block";       document.getElementById("video").style.display = "block";       document.getElementById("snap").style.display = "block";       document.getElementById("canvasPreview").style.display = "none";     });     </script> 

2. Android studio 中權限設置:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"   package="com.esbu.nec.bme">     <uses-permission android:name="android.permission.INTERNET" />     <!-- To auto-complete the email text field in the login form with the user's emails -->   <uses-permission android:name="android.permission.GET_ACCOUNTS" />   <uses-permission android:name="android.permission.READ_PROFILE" />   <uses-permission android:name="android.permission.READ_CONTACTS" />   <uses-permission android:name="android.permission.INTERNET" />   <uses-permission android:name="android.permission.CAMERA" />   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />   <uses-permission android:name="android.permission.VIBRATE" />       <uses-feature     android:name="android.hardware.camera"     android:required="true" />     <application     android:allowBackup="true"     android:icon="@mipmap/sgh"     android:label="@string/app_name"     android:supportsRtl="true"       android:hardwareAccelerated="true"     android:theme="@style/AppTheme">     <activity android:name=".MainActivity">       <intent-filter>         <action android:name="android.intent.action.MAIN" />           <category android:name="android.intent.category.LAUNCHER" />       </intent-filter>     </activity>     <activity       android:name=".LoginActivity"       android:label="@string/title_activity_login"></activity>   </application>   </manifest> 

3. 加載view時需要開啟JavaScript和文件訪問權限。

...  mWebView = (AdvancedWebView) findViewById(R.id.webview);     WebSettings webSettings = mWebView.getSettings();     webSettings.setJavaScriptEnabled(true);     webSettings.setBuiltInZoomControls(true);     webSettings.setAllowFileAccess(true); ... 

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀化市| 和林格尔县| 阳春市| 府谷县| 汉寿县| 金塔县| 西宁市| 奉化市| 威信县| 闵行区| 区。| 和政县| 美姑县| 吴桥县| 江都市| 洪洞县| 延吉市| 佳木斯市| 兴化市| 沙坪坝区| 柞水县| 大余县| 修文县| 呼图壁县| 巴东县| 玉田县| 横峰县| 嘉祥县| 华蓥市| 玉环县| 博兴县| 延安市| 柏乡县| 云阳县| 普宁市| 襄垣县| 北海市| 崇左市| 普兰县| 惠州市| 正定县|