使用GWT元素关闭网络摄像头和灯光

时间:2016-11-20 12:57:06

标签: javascript java gwt

我发现这段伟大的代码可以打开网络摄像头并拍照,但遗憾的是,我无法找到一种方法来关闭网络摄像头。没有方法可以要求实现这一点,甚至从GWT开启相机的调用也是使用本机JavaScript,我现在不是很熟悉。有什么想法吗?这是代码:

public native static boolean getUserVideo(UserWebcamCallback callback)/*-{
        if(navigator.webkitGetUserMedia) {
            navigator.webkitGetUserMedia(
                {video: true, toString: function() {return "video";}},
                function(stream) {
                    var s = window.URL.createObjectURL(stream);
                    $entry(callback.@com.test.ElementalUtils.UserWebcamCallback::onSuccess(Ljava/lang/String;)(s));
                    },
                function() {
                    $entry(callback.@com.test.ElementalUtils.UserWebcamCallback::onFail()());
                });
            return true;
        } else {
            return false;
        }
    }-*/;

1 个答案:

答案 0 :(得分:1)

唷!以为我会在这个晚上度过一个不眠之夜。 诀窍是添加一个" localStream"全局变量到代码,并在另一个方法中关闭流。像这样:

    public native static boolean getUserVideo(UserWebcamCallback callback)/*-{
            localStream;
            if(navigator.webkitGetUserMedia) {
                navigator.webkitGetUserMedia(
                    {video: true, toString: function() {return "video";}},
                    function(stream) {
                        var s = window.URL.createObjectURL(stream);

            localStream = stream;
                        $entry(callback.@com.test.ElementalUtils.UserWebcamCallback::onSuccess(Ljava/lang/String;)(s));
                        },
                    function() {
                        $entry(callback.@com.test.ElementalUtils.UserWebcamCallback::onFail()());
                    });
                return true;
            } else {
                return false;
            }
        }-*/;

public native static void stopVideo()/*-{
localStream.getTracks()[0].stop();
}-*/
相关问题