2016-06-16 107 views
1

我开发了一个简单的Android应用程序,它包装一个WebView以连接到apprtc.appspot.com。 WebRTC会话建立成功,视频流显示在应用程序和对等体(Mac上的Chrome浏览器)中,音频可以在应用程序中听到,但Mac不会收到任何音频。在Mac的Chrome浏览器上显示chrome:// webrtc-internals,显示没有错误。 WebRTC从Android设备中的Chrome浏览器到Mac中的Chrome浏览器可以很好地处理音频。我还在应用程序中编写了一个测试活动,以使用成功捕获和播放音频的MediaRecorder和MediaPlayer。WebRTC在Android应用程序中无WebView中的音频

我的权限设置貌似

<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.audio.low_latency" /> 
<uses-feature android:name="android.hardware.audio.pro" /> 
<uses-feature android:name="android.hardware.microphone" android:required="true"/> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 
<uses-feature android:name="android.hardware.camera" android:required="true" /> 
<uses-feature android:name="android.hardware.camera.front" android:required="true" /> 

该应用程序的代码看起来像

int permission; 

    permission = ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO); 
    if (permission != PackageManager.PERMISSION_GRANTED) { 

     // Should we show an explanation? 
     if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
       Manifest.permission.RECORD_AUDIO)) { 
      // Show an expanation to the user *asynchronously* -- don't block 
     } else { 
      ActivityCompat.requestPermissions(this, 
        new String[]{Manifest.permission.RECORD_AUDIO}, 
        MY_PERMISSIONS_REQUEST_AUDIO); 
     } 
    } 
    // ... similar camera permission request ... 

    WebView webView = (WebView) findViewById(R.id.web_view); 
    WebSettings settings = webView.getSettings(); 
    settings.setJavaScriptEnabled(true); 
    settings.setDomStorageEnabled(true); 
    settings.setDatabaseEnabled(true); 
    webView.setWebChromeClient(new WebChromeClient() { 
     @Override 
     public void onPermissionRequest(PermissionRequest request) { 
      request.grant(request.getResources()); 
     } 
    }); 
    webView.loadUrl("https://appr.tc/r/my-room"); 

错在何处?

回答

3

在权限中添加<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />解决了我的问题。

相关问题