navigator.getUserMedia无法在Android / Chrome上运行

Dav*_*ith 7 html javascript media html5 android

您对以下代码为何不起作用有任何想法吗 Android/Chrome

它适用于Desktop/Chrome

function console_log(data) {
	console.log(data)
	var data_str = String(data);
	var $div = $('<div></div>');
	$div.append(data_str);
	$('.console').append($div);
}
$(function(){
	var constraints = { audio: true, video:false }
	//---
	console_log('navigator.mediaDevices...');
	console_log(navigator.mediaDevices);
	//---
	// # TEST 01 #
	var userMedia = navigator.getUserMedia(constraints, function(){
		console_log('---');
		console_log('# TEST 01 # Inside Success Callback');
	}, function(err){
		console_log('---');
		console_log('# TEST 01 # Inside Error Callback');
		console_log(err);
	});
	//---
	navigator.mediaDevices.getUserMedia(constraints).then(function(stream) {
		console_log('---');
		console_log('# TEST 02 # Inside Success Callback');
	}).catch(function(err) {
		console_log('---');
		console_log('# TEST 02 # Inside Error Callback');
		console_log(err);
	});
});
Run Code Online (Sandbox Code Playgroud)
body {
	font-family: arial;
	font-size: 14px;
}
.console {
	font-family: monospace;
	white-space: pre;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="console"></div>
Run Code Online (Sandbox Code Playgroud)

以防万一,这里有JSFiddle链接:

https://jsfiddle.net/2yum1a0w

要获得成功,请打开Desktop/Chrome并转到以下部分:Result ...

https://jsfiddle.net/2yum1a0w/embedded

Desktop/Chrome我得到:

navigator.mediaDevices...
[object MediaDevices]
---
# TEST 01 # Inside Success Callback
---
# TEST 02 # Inside Success Callback
Run Code Online (Sandbox Code Playgroud)

Android/Chrome我得到:

navigator.mediaDevices...
[object MediaDevices]
---
# TEST 01 # Inside Error Callback
NotAllowedError: Permission denied
---
# TEST 02 # Inside Error Callback
NotAllowedError: Permission denied
Run Code Online (Sandbox Code Playgroud)

顺便说一句,Desktop/Firefox我得到:

navigator.mediaDevices...
[object MediaDevices]
Run Code Online (Sandbox Code Playgroud)

以及以下控制台错误:

TypeError: navigator.getUserMedia is not a function
Run Code Online (Sandbox Code Playgroud)

您对如何进行这项工作有任何想法Android/Chrome吗?

编辑1

根据来自的答案 Joseph Gordy下面,我尝试了:

https://jsfiddle.net/wrmvn8k4/

https://jsfiddle.net/wrmvn8k4/embedded

现在可以正常工作Desktop/Firefox

navigator.mediaDevices...
[object MediaDevices]
---
# TEST # Inside Success Callback
Run Code Online (Sandbox Code Playgroud)

Android/Chrome我得到:

navigator.mediaDevices...
[object MediaDevices]
---
# TEST # Inside Error Callback
NotAllowedError: Permission denied
Run Code Online (Sandbox Code Playgroud)

谢谢!

zva*_*dym 6

我遇到了同样的问题。移动浏览器甚至都没有询问权限。原因是SSL!您必须使用安全连接

在此处选中“需要安全上下文”部分