让HTML5访问Android的摄像头

has*_*zmi 5 javascript html5 camera android

我想在Android上使用HTML5访问手机的摄像头。目前,我在Kitkat上拥有Chrome 31.0.1650.59。

我可以确认自己的代码可以在Android上的Chrome浏览器中正常运行,但不能在WebView中正常运行。我不想发出意图并使用默认的相机应用程序。我想在WebView中显示摄像机供稿。

这是我的HTML代码。

<video id="video" width="640" height="480" autoplay></video>
<script>

    window.addEventListener("DOMContentLoaded", function() {
        var video = document.getElementById("video"),
            videoObj = { "video": true },
            errBack = function(error) {
                console.log("Video capture error: ", error.code); 
            };

        if(navigator.webkitGetUserMedia) {
            navigator.webkitGetUserMedia(videoObj, function(stream){
                video.src = window.webkitURL.createObjectURL(stream);
                video.play();
            }, errBack);
        }
    }, false);

</script>
Run Code Online (Sandbox Code Playgroud)

这是很标准的。

这是显示此页面的android代码:

WebView webView = (WebView) rootView.findViewById(R.id.webView);
WebSettings ws = webView.getSettings();

webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, final JsResult result){
        return true;
    }

    @Override
    public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
        return true;
    }

    @Override
    public boolean onJsPrompt (WebView view, String url, String message, String defaultValue, JsPromptResult result){
        return true;
    }
});
    webView.setWebViewClient(new WebViewClient());
    ws.setJavaScriptEnabled(true);
    ws.setAllowFileAccess(true);
    ws.setDomStorageEnabled(true);

    webView.loadUrl("http://html-page.htm");
Run Code Online (Sandbox Code Playgroud)

这些配置很多与问题无关,但绝望是尝试。

小智 1

仅 Android 5 及更高版本支持 HTML5 视频访问本地摄像头。我目前完全通过 HTML5 和一些 JavaScript 访问内置摄像头(正面和背面),因为我们的应用程序只能在 Android 5 及更高版本上运行。在后端,您可以使用一些代码来覆盖 webview,以便它会自动接受有关允许相机访问的安全提示。所以除非你是 Android 5 或更新版本,否则这是不可能的。