使用Codename One在

时间:2017-04-21 11:48:30

标签: codenameone

我正在开发一个应用程序,我需要使用Android的WebView包含WebRTC。根据这篇文章:[https://developer.chrome.com/multidevice/webview/overview]自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无法正常运作的原因是什么?
  3. WebView由BrowserComponent类调用。

    我知道Android代码已转换为本机代码,我相信有一种方法可以让它运行。谢谢!

1 个答案:

答案 0 :(得分:2)

我刚看了几个示例(herehere,看起来webview需要授予一些权限才能让webrtc正常工作。

我已经为我们的Android端口设置small change,允许您授予这些权限。您只需指定允许权限的来源。您可以通过将“android.WebView.grantPermissionsFrom”显示属性设置为您要授予其权限的URL(或空格分隔的URL)来执行此操作。

e.g。

    var User = new Schema({
    id: String,
    position: [{
          _id:String,
          title: String,
          location: String,
          start: String,
          term:Number,
          description:String,
          date: {type: Date, default: Date.now},
            applied:[{
                candidate_id: String,
                _id:String
                        }],
  }]

在你的app的init()或start()方法中调用它。

注意在下次更新服务器之前,这些更改将无法使用。我不确定自从训练营正在进行以来到底是什么时候。通常是每个星期五,但由于训练营,可能会延迟到5月的第一周。