Jak zaimplementować aplikację VOIP za pomocą pakietu android.net.rtp

Próbuję zaimplementować aplikację VoIP przy użyciu klas AudioGroup i AudioStream pakietu android.net.rtp. Ale moja aplikacja nie działa prawidłowo. Po „Dołączeniu” obiektu klasy „AudioGroup” za pomocą obiektu „AudioStream”, jego pakiety udp zostaną pomyślnie wysłane. Sprawdziłem to za pomocą analizatora pakietów. Ale głos nie słyszy się z telefonu. Używam aplikacji w 2 telefonach i próbuję komunikować się między nimi.

Poniżej podaję mój kod źródłowy.

public class MainActivity extends Activity {
private AudioStream audioStream;
private AudioGroup audioGroup;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

try {
   audioGroup = new AudioGroup();
   audioGroup.setMode(AudioGroup.MODE_NORMAL);        
   audioStream = new AudioStream(InetAddress.getByAddress(new byte[] {(byte)192, (byte)168, (byte)1, (byte)4 }));
   audioStream.setCodec(AudioCodec.PCMU);
   audioStream.setMode(RtpStream.MODE_NORMAL);
   audioStream.associate(InetAddress.getByAddress(new byte[] {(byte)192, (byte)168, (byte)1, (byte)2 }), 5004);
   audioStream.join(audioGroup);
   AudioManager Audio =  (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
   Audio.setMode(AudioManager.MODE_IN_COMMUNICATION);
} 
catch (SocketException e) { e.printStackTrace();} 
catch (UnknownHostException e) { e.printStackTrace();} 
catch (Exception ex) { ex.printStackTrace();}
}

Ustawiłem te uprawnienia w pliku manifestu.

<uses-permission android:name="android.permission.USE_SIP" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.sip.voip" android:required="true" />
<uses-feature android:name="android.hardware.wifi" android:required="true" />
<uses-feature android:name="android.hardware.microphone" android:required="true" />

Używam telefonu Samsung GALAXY S3 z systemem Android 4.0 OS

questionAnswers(3)

yourAnswerToTheQuestion