WebView WebRTC не работает
Я пытаюсь показать WebRTC
общаться в WebView
, Связанные с этой документацией WebView v36
опоры WebRTC
, Для моего теста я использую устройство с Chrome/39.0.0.0
и добавил permissins, чтобы манифест:
<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" />
но при входе в чат просмотрите ошибку хрома в журнале (устройство ничего не показывает \ переводит, только индикатор загрузки)
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
протестировано на реальном устройстве, Android 5.1.1
5 ответов
Требуется дополнительный запрос на разрешения
webView.setWebChromeClient(new WebChromeClient(){
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onPermissionRequest(final PermissionRequest request) {
request.grant(request.getResources());
}
});
обновление, но оно не работает для захвата звука
ОБНОВЛЕНИЕ нашел рабочий код google здесь
Эти разрешения необходимы для доступа к камере и микрофону.
<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" />
Затем вам нужно предоставить разрешения вашему веб-просмотру, проверьте эту ссылку для получения дополнительной информации:
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);
}
});
}
});
Если воспроизведение звука не работает, используйте это:
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
Мой опыт с этим в 2022 году:
- Разрешения CAMERA и RECORD_AUDIO должны быть объявлены в манифесте.
-
setWebChromeClient.onPermissionRequest
следует проверить, были ли уже предоставлены эти разрешения. Если нет, используйтеregisterForActivityResult(new RequestMultiplePermissions())
чтобы попросить пользователя предоставить их.
не работает в версии Android 28 ошибка хром: [ОШИБКА:web_contents_delegate.cc(218)] WebContentsDelegate::CheckMediaAccessPermission: не поддерживается.
в основном это ошибка при перезагрузке веб-просмотра, потому что, когда мы запрашиваем аудио, разрешение камеры на веб-просмотр, после принятия разрешения нам нужно обновить веб-страницу.
if (permission.equals("android.webkit.resource.AUDIO_CAPTURE")) {
demandForPermission(request.getOrigin().toString(), Manifest.permission.RECORD_AUDIO, MY_PERMISSIONS_REQUEST_RECORD_AUDIO);
} else {
myRequest.grant(request.getResources());
}
Я также застрял с этой проблемой в течение многих дней, но после приведенного ниже кода ссылки 100% рабочий код Android Webview