2015-07-27 11 views
5

Sto usando l'app APPRTCdemo su Android. Sto provando a far suonare il suono proveniente dall'altro peer tanto forte quanto il volume è impostato nelle impostazioni di Android. Quindi, se l'utente ha disattivato il dispositivo, l'audio non viene ascoltato. Ho provato praticamente tutte le chiamate API Android, ma nulla sembra avere alcun effetto sul volume. Queste sono le cose che ho provato: AudioManager audioManager = (AudioManager) _context.getSystemService (Context.AUDIO_SERVICE); int volume = audioManager.getStreamVolume (AudioManager.STREAM_VOICE_CALL);volume audio webRTC Android

volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
    volume =audioManager.getStreamVolume(AudioManager.STREAM_RING); 
    volume =audioManager.getStreamVolume(AudioManager.STREAM_ALARM); 
    volume =audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION); 
    volume =audioManager.getStreamVolume(AudioManager.STREAM_SYSTEM); 

    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE); 
    audioManager.setStreamVolume(AudioManager.MODE_IN_COMMUNICATION, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE); 
    audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, 0,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE); 
    audioManager.setStreamMute(AudioManager.MODE_IN_COMMUNICATION, true); 
    audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true); 
    audioManager.setStreamMute(AudioManager.STREAM_RING, true); 
    audioManager.setStreamMute(AudioManager.STREAM_MUSIC, true); 
    audioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true); 

risposta

0

se si desidera solo per disattivare l'audio è possibile utilizzare smth come la seguente costruzione:

inputMediaStream.audioTracks.getFirst().setEnabled(false); 

nel codice sorgente di WebRTC è possibile trovare src/WebRTC/modules/audio_device/android/java/src/org/WebRTC/voiceengine/WebRtcAudioTrack.java che utilizza

audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, volume, 0); 

codice per modificare il volume (e penso che dovrebbe funziona bene). Quindi il tuo problema potrebbe essere altrove.

+1

Grazie Alexey per la risposta. Come ho menzionato nella domanda, l'ho provato e non ha funzionato. –

0

Mi trovavo di fronte allo stesso problema. Non ho trovato alcuna documentazione al riguardo, ma ho capito che non è possibile disattivare l'audio del flusso AudioManager.STREAM_VOICE_CALL. Anche se imposti il ​​volume su 0, puoi ancora sentirlo.

Non so se questa parte di Android o una modifica apportata dai produttori, ma ho provato diversi telefoni e tablet con lo stesso comportamento.

Questo può essere facilmente testato se si tenta di disattivare l'audio durante una chiamata telefonica, è possibile premere il tasto di riduzione del volume per quanto desiderato, ma non consente di disattivarlo completamente.

Immagino che l'idea alla base di tutto ciò impedisca agli utenti di pensare che le chiamate non funzionino correttamente quando l'unico problema è che l'audio è disattivato.

2

Se si desidera disattivare il flusso è possibile effettuare le seguenti operazioni:

RemoteStream.audioTracks.get(0).setEnabled(false); //in case you have only one audio track 

Nel caso in cui si dispone di più di un tracce audio nel flusso si può mettere sotto loop. Questo è il codice testato e l'audio/silenziamento funziona perfettamente.