如何在安卓的网络视图中启用前置摄像头

How to enable front camera in webview for android

本文关键字:启用 摄像头 视图 网络      更新时间:2023-09-26

如何在 Web 视图上启用前置摄像头?我已经启用了AndroidManifest中的功能.xml

 <uses-feature android:name="android.hardware.camera" android:required="true" />
 <uses-feature android:name="android.hardware.camera.front" android:required="true" />

相机不会用于拍照或录制,只是为了打开前置摄像头。

当我使用手机浏览器访问网站时,手机摄像头工作一次允许提示消息。这如何与 Web 视图一起使用?

在html文件中有一个显示网络摄像头的画布和视频标签,它不记录或拍照,它只显示相机视图。

这是 html 代码

 <canvas id="inCanvas"  width="500" height="500" style="display:none"></canvas>
 <video id="inputVideo" width="100" height="100" autoplay loop ></video>

它适用于网络摄像头,但不适用于安卓中的网络视图。

我不太明白,但我想可以有以下两个之一,你想要什么。

1)访问相机,只在屏幕上显示视频(不捕获) 图片):

.html:

  <canvas id='canvas' width='100' height='100'></canvas> 

.js:

 var onFailSoHard = function(e)
    {
            console.log('failed',e);
    }
    window.URL = window.URL || window.webkitURL ;
    navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia;
    var video = document.querySelector('video');
    if(navigator.getUserMedia)
    {
        navigator.getUserMedia({video: true},function(stream) {
        video.src = window.URL.createObjectURL(stream);
        },onFailSoHard);
    }

        var canvas = document.getElementById('canvas'); 
    var ctx = canvas.getContext('2d');
setInterval(function(){ 
ctx.drawImage(video,0,0);
     }, 100);
        }  

2)从相机捕获图像:

这是这方面的文档。

navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
    destinationType: Camera.DestinationType.DATA_URL
});
function onSuccess(imageData) {
    var image = document.getElementById('myImage');
    image.src = "data:image/jpeg;base64," + imageData;
}
function onFail(message) {
    alert('Failed because: ' + message);
}

我会使用类似于以下内容的内容作为脚本来访问手机摄像头。

<script>
  var errorCallback = function(e) {
    console.log('Rejected!', e);
  };
  // Not showing vendor prefixes.
  navigator.getUserMedia({video: true, audio: true}, function(localMediaStream) {
    var video = document.querySelector('video');
    video.src = window.URL.createObjectURL(localMediaStream);
    // Note: onloadedmetadata doesn't fire in Chrome when using it with getUserMedia.
    // See crbug.com/110938.
    video.onloadedmetadata = function(e) {
      // Ready to go. Do some stuff.
    };
  }, errorCallback);
</script>

使用以下教程来帮助我。希望它能让你走上正确的轨道:)