gpt4 book ai didi

android - 如何使用android.net.rtp包实现VOIP应用

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:41:34 25 4
gpt4 key购买 nike

我正在尝试使用 android.net.rtp 包的 AudioGroup 和 AudioStream 类来实现 VoIP 应用程序。但是我的应用程序无法正常运行。在将“AudioGroup”类对象与“AudioStream”对象“加入”后,它成功发送了udp数据包。我使用数据包分析器进行了检查。但是电话里听不到声音。我在 2 部手机上运行我的应用程序并尝试在它们之间进行语音通信。

在下面我提到了我的源代码。

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();}
}

我在 list 文件中设置了这个权限。

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

我使用的是 Android 4.0 操作系统的三星 GALAXY S3 手机

最佳答案

诀窍是让端口映射正确。您需要使用来自 audioStream.getLocalPort() 的端口号,并将此端口号作为 SIP 信令发送到 SDP 数据包中的对等方。

查看这个实现 sip 功能的示例应用程序 https://github.com/Mobicents/restcomm-android-sdk/tree/master/Examples/JAIN%20SIP

关于android - 如何使用android.net.rtp包实现VOIP应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11884713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com