Comment implémenter l'application VOIP en utilisant le paquet android.net.rtp
Je suis en train de mise en œuvre de l'application de la VoIP à l'aide de la AudioGroup et AudioStream classes d'android.net.rtp paquet. Mais ma demande de ne pas fonctionner correctement. Après "Rejoindre" la "AudioGroup" objet de classe avec le "AudioStream" objet, leur envoyer des paquets udp avec succès. J'ai vérifié que l'utilisation de l'analyseur de paquets. Mais la voix n'est pas à entendre au téléphone. Je lance mon application dans les 2 téléphones et essayer de communiquer la voix entre eux.
En dessous j'ai oublier mon code source.
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();}
}
Que j'ai mis ce autorisations dans le Manifestfile.
<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" />
Je suis en utilisant le Samsung GALAXY S3 téléphone avec Android 4.0 OS
source d'informationauteur user1576358
Vous devez vous connecter pour publier un commentaire.
L'astuce consiste à obtenir le mappage de port correct. Vous devez utiliser le numéro de port à partir de audioStream.getLocalPort() et send pour ce numéro de port par les pairs dans le SDP paquet comme la signalisation SIP.
Découvrez cet exemple d'application qui implémente la fonctionnalité sip
https://github.com/Mobicents/restcomm-android-sdk/tree/master/Examples/JAIN%20SIP
J'ai utilisé le même code que vous avez soumis, et il a obtenu de travailler avec des modifications mineures. Fondamentalement, j'ai trouvé le problème a été d'obtenir le numéro de port correct.
Lors de la création de la
audioStream
le numéro de port semble être aléatoire. AuAndroid developer
j'ai trouvé:Note that the local port is assigned automatically to conform with RFC 3550.
Ce que j'ai fait, j'ai commencé l'application sur un téléphone et utilisé
audioStream.getLocalPort()
pour trouver le numéro de port. Puis je l'ai connecté à ce port à l'aide de l'autre. Il en est résulté dans les deux sens de communication, même si seulement j'avais le bon numéro de port sur un seul téléphone.Espère que cette aide.
Je pense que vous devriez mettre le haut-parleur sur!
Peut-être vous pouvez utiliser la méthode suivante: