我发现这段伟大的代码可以打开网络摄像头并拍照,但遗憾的是,我无法找到一种方法来关闭网络摄像头。没有方法可以要求实现这一点,甚至从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;
}
}-*/;
答案 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();
}-*/