如何在android的webview中启用前置摄像头

Posted

技术标签:

【中文标题】如何在android的webview中启用前置摄像头【英文标题】:How to enable front camera in webview for android 【发布时间】:2015-01-12 18:44:14 【问题描述】:

如何在 Webview 上启用前置摄像头?我已启用 androidManifest.xml 中的功能

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

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

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

html 文件中有一个 Canvas 和 Video 标签显示网络摄像头它不记录或拍照它只是显示相机视图。

这里是html代码

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

它适用于网络摄像头,但不适用于 android 中的 webview。

【问题讨论】:

【参考方案1】:

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

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) 从相机捕捉图像:

here 是 doc 。

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);

【讨论】:

数字 1 或 2。我只想打开相机没有录音或照片 数字 1.. 仅用于打开相机并将其实时显示在屏幕上.. 没有录制 手机上没有任何显示。你在网络浏览器上试试吗? 适用于.. Web 和 android.. 您的手机网络应符合 html5.. 姜饼以上的版本就足够了 是的。我正在构建一个 APK 并运行它。您认为这是设备问题吗?【参考方案2】:

我会使用类似于下面的脚本来访问手机摄像头。

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

使用the following 教程来帮助我。 希望它能让你走上正确的道路:)

【讨论】:

以上是关于如何在android的webview中启用前置摄像头的主要内容,如果未能解决你的问题,请参考以下文章

Android:WebView-未为会议启用摄像头和麦克风

用webview做的android客户端怎样调用摄像头拍照

如何在android中使用前置摄像头[重复]

如何在android中使用Intent打开前置摄像头?

android Camera如何判断当前使用的摄像头是前置还是后置

Android如何显示前置摄像头(仅适用于镜子)