首先H5调用下面方法检查音频是否可用
navigator.mediaDevices
.getUserMedia({ audio: true })
.then(function (stream) {
/* 使用这个 stream stream */
console.log('可用音频', stream)
})
.catch(function (err) {
/* 处理 error */
console.log('不可用音频', err)
})
ps:在IOS,微信小程序,浏览器里面H5可以直接调用录音权限,系统会出授权弹窗。在Android中权限默认是关闭的,上述方法一直是走的catch
解决方法:
// 安卓端需要开启下面权限
android.permission.RECORD_AUDIO 和 android.permission.MODIFY_AUDIO_SETTINGS
// 并且重写webview中的方法
myWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
}
@Override
public void onPermissionRequest(PermissionRequest request) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//直接同意即可 deny是拒绝
request.grant(request.getResources());
}
}
});