让HTML5访问安卓相机

5
我希望使用HTML5在安卓系统上访问手机相机。目前我使用的是Kitkat系统上的Chrome 31.0.1650.59版本。
我可以确认我的代码可在安卓系统上的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>

这是非常标准的。

以下是显示此页面的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");

很多这样的配置与问题无关,只是不得已而为之的尝试。


你有查看过这份文档吗? http://docs.phonegap.com/en/3.3.0/cordova_camera_camera.md.html#Camera - Usman Kurd
1
PhoneGap最终会调用相机应用程序,捕获视频或图片并返回应用程序。这限制了自定义。我想在应用程序内放置一个自定义大小的区域,可以显示来自相机的反馈。 - hasanatkazmi
你有找到任何解决方案吗? 我也遇到了类似的问题!! - Abhinav Tyagi
不,当时我得出的结论是由于平台限制而不可能实现。 - hasanatkazmi
1个回答

1

仅支持Android 5及以上版本的HTML5视频访问本地摄像头。我目前完全从HTML5和一些javascript中访问内置摄像头(前置和后置),因为我们的应用程序只能在Android 5及更高版本上运行。在后端,有一些代码可以用于覆盖webview,以便它将自动接受有关允许相机访问的安全提示。因此,除非您使用Android 5或更高版本,否则不可能实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接