Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript getUserMedia在网站上工作,但在手机上不工作_Javascript_Android_Jquery_Getusermedia - Fatal编程技术网

Javascript getUserMedia在网站上工作,但在手机上不工作

Javascript getUserMedia在网站上工作,但在手机上不工作,javascript,android,jquery,getusermedia,Javascript,Android,Jquery,Getusermedia,我正在使用getusermedia在我的网站上录制音频。我已经包含了getusermedia的javascript。该记录功能在网站上运行良好,但在手机上打开时,甚至不会弹出以获得许可 var约束={ 音频:是的, 视频:错误 } navigator.mediaDevices.getUserMedia(约束)。然后(函数(流){ 给定的许可=1; }); 这是提示我获得许可的示例代码,但在移动设备上不起作用。 如何使它在两个设备上都工作。感谢您的帮助。 谢谢 编辑:-代码现在在手机上也可以正常

我正在使用getusermedia在我的网站上录制音频。我已经包含了getusermedia的javascript。该记录功能在网站上运行良好,但在手机上打开时,甚至不会弹出以获得许可

var约束={
音频:是的,
视频:错误
}
navigator.mediaDevices.getUserMedia(约束)。然后(函数(流){
给定的许可=1;
});
这是提示我获得许可的示例代码,但在移动设备上不起作用。 如何使它在两个设备上都工作。感谢您的帮助。 谢谢


编辑:-代码现在在手机上也可以正常工作。可能是通过chrome更新或网站安全证书解决的。谢谢大家的帮助。

我发现这个网站在回答这个问题时很有用

它说getUserMedia仅在Chrome上支持Android版本70(2018年10月16日发布)

检查,然后确保您的浏览器支持它。上面说,Android 52+需要Chrome浏览器。FWIW 68

您还应该具有检查和捕获错误的功能:

if(!navigator.mediaDevices){
log(“对不起,不支持getUserMedia”);
返回;
}
navigator.mediaDevices.getUserMedia(约束)
。然后(流=>permissiongiven=1)
.catch(错误=>console.log(错误));
根据您得到的错误,我们可能会了解更多信息

  • NotFoundError
    表示设备上未检测到摄像头或麦克风
  • NotAllowedError
    表示未授予用户权限,或者您是否处于iframe中

navigator.mediaDevices.getUserMedia浏览器兼容性


我不知道
navigator.getUserMedia
被弃用了(至少对于三星来说,这是我测试的),我发现了一个我几乎没有修改过的代码示例:

函数initGetUserMedia(){ navigator.mediaDevices=navigator.mediaDevices | |{} navigator.mediaDevices.getUserMedia=navigator.mediaDevices.getUserMedia | |函数(约束){ 让getUserMedia=navigator.webkitGetUserMedia | | navigator.mozGetUserMedia; 如果(!getUserMedia){ return Promise.reject(新错误('getUserMedia不受此浏览器支持'); }否则{ 返回新承诺((解决、拒绝)=>{ 调用(导航器、约束、解析、拒绝); }); } }
}请注意,在移动设备上,必须使用SSL才能使用
getUserMedia()
。查看您是否使用
http://
前缀访问您的网站。尝试将其更改为
https://
,它应该可以正常工作。

您使用的是哪个移动操作系统/浏览器?我使用的是android和棉花糖版本以及chrome浏览器。我下面的回答是否有帮助?谢谢大家,但问题已自动解决。我猜chrome应用程序已经更新了它的功能,允许麦克风从网站访问。这是不对的。自52年以来,Android浏览器上就有getUserMedia。这方面有什么进展吗?进展如何?caniuse是错的,MDN是对的。例如,在Android 68的Chrome上。OP在他的问题上有什么进展吗?试图在本地主机上开发,也不能在那里使用https。