Sia*_*hei 10 android android-webview webrtc android-permissions webviewchromium
我正试图在WebRTC
聊天中显示WebView
.与本文档 相关的WebView v36
支持WebRTC
.对于我的测试,我正在使用设备,Chrome/39.0.0.0
并添加了许可表示:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<user-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)
但是当进入聊天时,在日志中看到铬错误(设备没有显示\翻译任何内容,只有'加载'进度条):
W/AudioManagerAndroid: Requires MODIFY_AUDIO_SETTINGS and RECORD_AUDIO
W/AudioManagerAndroid: No audio device will be available for recording
E/chromium: [ERROR:web_contents_delegate.cc(178)] WebContentsDelegate::CheckMediaAccessPermission: Not supported.
E/chromium: [ERROR:web_contents_delegate.cc(178)] WebContentsDelegate::CheckMediaAccessPermission: Not supported.
W/AudioManagerAndroid: Requires MODIFY_AUDIO_SETTINGS and RECORD_AUDIO
W/AudioManagerAndroid: No audio device will be available for recording
D/ChromiumCameraInfo: Camera enumerated: front
Run Code Online (Sandbox Code Playgroud)
在真实设备上测试,Android 5.1.1
Sia*_*hei 20
需要额外的权限请求
webView.setWebChromeClient(new WebChromeClient(){
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onPermissionRequest(final PermissionRequest request) {
request.grant(request.getResources());
}
});
Run Code Online (Sandbox Code Playgroud)
更新,但它不适用于音频捕获
UPDATE在这里找到了工作谷歌示例代码
Muh*_*uja 10
您需要这些权限才能访问相机和麦克风
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="true"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
// don't miss this one
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)
接下来,您需要向您的 webview 授予权限,请查看此链接以了解更多详细信息:
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onPermissionRequest(PermissionRequest request) {
runOnUiThread(() -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
String[] PERMISSIONS = {
PermissionRequest.RESOURCE_AUDIO_CAPTURE,
PermissionRequest.RESOURCE_VIDEO_CAPTURE
};
request.grant(PERMISSIONS);
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
如果音频播放不起作用,请使用以下命令:
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
Run Code Online (Sandbox Code Playgroud)