2016-02-06 6 views
0

Я внедрил приложение для Android, которое использует Voip для Android.net.rtp. Он просто получает голос от микрофона устройства и отправляет его в Voip (на другой Android или на ПК-приемник). Проблема в том, что на некоторых устройствах передача voip начинается через 2-3 секунды. Я не имею в виду, что при доставке пакетов есть 2-3-3 секунды, я имею в виду, что первые 2-3 секунды голоса не отменяются. После этих 2-3 секунд все работает правильно. Странно, что это происходит только на некоторых устройствах Android, и это не проблема производительности устройства или версии Android. Например, это происходит на очень старом устройстве и в новом, в то время как это не происходит в другом очень старом устройстве и в другом новом ... Я подумал о некоторых услугах и функциях Android, которые задерживают захват микрофона, но я не сделал этого, т найти что-нибудь в данный момент ...Несколько секунд задержки при отправке Voip с Android.net.rtp

ниже код я использую, чтобы отправить Voip, это классический код:

myAudioStream = new AudioStream(myIPAddress); 
myAudioStream.setCodec(AudioCodec.PCMU); 
myAudioGroup = new AudioGroup(); 
myAudioManager = (AudioManager) myContext.getSystemService(Context.AUDIO_SERVICE); 

myAudioGroup.setMode(RtpStream.MODE_SEND_ONLY); 
myAudioStream.join(null); 
myAudioStream.setMode(RtpStream.MODE_SEND_ONLY); 
myAudioStream.associate(ipAddress_Receiver, port_Receiver); 
myAudioStream.join(myAudioGroup); 
myAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); 
myAudioManager.setSpeakerphoneOn(false); 
myAudioManager.setMicrophoneMute(false); 

ответ

0

после некоторых отладки я обнаружил, что AudioManager вводит задержку вызова SetMode:

myAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION)) 

Самое странное в том, что это зависит от устройства. С некоторыми устройствами он может вводить и 2-3 секунды, с другими устройствами не вводится никаких задержек.

Смотреть аналогичный ответ на: Is there any significant delay in initializing AudioTrack on Android?

Наконец я нашел это решение, установка:

myAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); 

в costructor моего класса, то только один раз. Я вызываю конструктор затрат при запуске моего приложения, когда я еще не запускал голос TX. Таким образом, когда я должен говорить, мне не нужно терять эти секунды ...

Надеюсь быть полезным для somobedy else.

0

Проверить, если вы можете отключить ICE и/или STUN в Android. net.rtp. Обычно они отвечают за задержку при настройке носителя.

+0

Привет, Я вижу ваш ответ только сейчас, но дело в том, как я могу отключить их в Android? – Fausto70