我正在使用 MediaStream Recording API 来记录用户的MIC。该代码在chrome窗口上可以正常工作,但是当涉及到android时,它会在录制提示音后立即停止录制。
如何使API在Android设备上工作?
我是否缺少某些东西,或者这是Web Audio API的错误?
代码如下:
navigator.mediaDevices.getUserMedia({audio:true})
.then(stream => {
rec = new MediaRecorder(stream);
rec.ondataavailable = e => {
audioChunks.push(e.data);
if (rec.state == "inactive"){
let blob = new Blob(audioChunks,{type:'audio/x-mpeg-3'});
recordedAudio.src = URL.createObjectURL(blob);
然后我只用这些行开始录制:
audioChunks = [];
rec.start();
然后停下来播放:
rec.stop();
recordedAudio.autoplay = true;
答案 0 :(得分:1)
Chrome自动播放需要用户互动才能播放声音。
检查this和this以获得基于JavaScript的解决方法。
或者,如果您要制作一个android应用并使用webview加载页面,请尝试设置 setMediaPlaybackRequiresUserGesture为假。
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.loadUrl("https://www.example.com");
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setMediaPlaybackRequiresUserGesture(false);