2016-06-16 12 views
1

Ich entwickelte eine einfache Android-App, die ein WebView zu apprtc.appspot.com verbinden. Die WebRTC-Sitzung wird erfolgreich eingerichtet, Video-Streams werden sowohl in der App als auch im Peer (einem Chrome-Browser auf einem Mac) angezeigt, der Ton ist in der App zu hören, aber der Mac erhält kein Audio. chrome: // webrtc-internals im Chrome-Browser des Mac zeigt keinen Fehler. WebRTCing von Chrome im Android-Gerät bis Chrome im Mac funktioniert gut mit Audio. Ich habe auch eine Testaktivität in der App geschrieben, um MediaRecorder und MediaPlayer zu verwenden, die erfolgreich Audio aufgenommen und wiedergegeben haben.Kein Audio in WebRTC über WebView in Android-App

Meine Erlaubnis einrichten sieht aus wie

<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" /> 

Die App Codes aussehen

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"); 

Was schief geht?

Antwort

3

Hinzufügen von <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> in der Erlaubnis löste das Problem für mich.