使用 Codename One 在 WebView 上实现 WebRTC

2024-05-01

我正在开发一个应用程序,我需要使用 Android 的 WebView 包含 WebRTC。根据这篇文章:[https://developer.chrome.com/multidevice/webview/overview] https://developer.chrome.com/multidevice/webview/overview%5D自 WebView v36 起完全支持它。 (我正在 Android 5.1.1 / Chrome 54 / Mobile Safari 537.36 上进行测试。我确认它可以在独立的 Chrome 浏览器上运行)。

截至目前,WebRTC 的查看功能正常。

然而,广播(从摄像头捕获视频并将其发送到服务器)不起作用。注意:它适用于同一 Android 上的独立 Chrome。

我已将所有这些权限包含在 codenameone_settings.properties 文件中:

android.xpermissions=<uses-permission android:name="android.permission.CAMERA" android:required="true"/>\
  <uses-permission android:name="android.permission.RECORD_AUDIO" android:required="true" />\
  <uses-permission android:name="android.permission.INTERNET" android:required="true" />\
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:required="true" />\
  <uses-permission android:name="android.permission.CAMERA" android:required="true" />\
  <uses-feature android:name="android.hardware.audio.low_latency" android:required="true" />\
  <uses-feature android:name="android.hardware.audio.pro" android:required="true" />\
  <uses-feature android:name="android.hardware.microphone" android:required="true"/>\
  <uses-feature android:name="android.hardware.camera" android:required="true" />\
  <uses-feature android:name="android.hardware.camera.autofocus" android:required="true"/>\
  <uses-feature android:name="android.hardware.camera" android:required="true" />\
  <uses-feature android:name="android.hardware.camera.front" android:required="true" />
  1. 这是激活所有必要的 Android 权限的方法吗?
  2. 您认为是什么原因导致 WebRTC 无法正常工作?

WebView 由 BrowserComponent 类调用。

我知道 Android 代码被翻译为本机代码,并且我相信有一种方法可以让它工作。谢谢!


我只是看了几个例子(here https://github.com/GoogleChrome/chromium-webview-samples/blob/master/webrtc-example/app/src/main/java/com/google/chrome/android/webrtcsample/MainActivity.java#L144-L163 and here https://github.com/onsip/chromium-webview-samples,看起来 webview 需要授予一些权限才能允许 webrtc 工作。

我做了一个小变化 https://github.com/codenameone/CodenameOne/commit/e86f42c58739711c6cbe1663cd9e677bb7517bb7到我们的 Android 端口,您应该可以授予这些权限。您只需指定应允许权限的来源即可。您可以通过将“android.WebView.grantPermissionsFrom”显示属性设置为要授予权限的 URL(或空格分隔的 URL)来完成此操作。

e.g.


Display.getInstance().setProperty(
        "android.WebView.grantPermissionsFrom", 
        "https://www.example.com/"
);

在应用程序的 init() 或 start() 方法中调用此方法。

NOTE这些更改要等到下一次服务器更新后才可用。我不确定具体是什么时候,因为训练营现在正在进行中。通常是每周五,但由于训练营的原因可能会推迟到五月的第一周。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Codename One 在 WebView 上实现 WebRTC 的相关文章