小编Fau*_*o70的帖子

VoIP RTP从/到服务器(在Java中)到/从android流式传输

我的目标是在GSM/UMTS/LTE网络中建立一个即按即说聊天应用程序; 最初我想使用多播地址和点对点而不会使服务器过载; 不幸的是,经过深入调查,我发现GSM/UMTS/LTE网络中不允许多播,因此我必须使用服务器来反弹VoIP数据包.我不太喜欢这个解决方案,因为我不得不重载服务器,但我找不到更好的解决方案.如果你有一个替代解决方案非常适应...

因此,我必须将VoIP从Android客户端发送到服务器(PC),反之亦然.服务器是Java,它必须接收VoIP数据包然后将VoIP数据包发送到其他N个客户端; 服务器是VoIP数据包的保护者.

我开发了代码,但它不起作用; 我没有任何错误,只是我有非常糟糕的VoIP服务:我丢失了很多碎片,我听到的是非常多的声音......错误在哪里?我想它应该在服务器代码中; 服务器只需获取数据包并重新发送,而不知道它们是RTP上的VoIP.

如下请见

  • 我用来将VoIP数据包发送到服务器的代码.它的工作原理是因为当我将它用于将VoIP数据包直接从Android发送到Android的个人呼叫时我没有问题; 在android中接收来自服务器的数据包的代码非常相似,所以我不重新复制它.如你所见,我使用android.net.rtp.
  • 我在Java服务器上用来反弹VoIP数据包的代码

先谢谢你,福斯托

//使用ANDROID代码向服务器发送VOIP

//Attribute definition
private static final AudioCodec myAudioCodec_COSTANTE = AudioCodec.PCMU ; 
private static final int myAudioGroupTX_COSTANTE = AudioGroup.MODE_NORMAL ; 
private static final int myAudioGroupRX_COSTANTE = AudioGroup.MODE_NORMAL ;
private static final int myRtpStreamTX_COSTANTE = RtpStream.MODE_SEND_ONLY ;
private static final int myRtpStreamRX_COSTANTE = RtpStream.MODE_RECEIVE_ONLY ; 
private static final int myAudioManagerTX_COSTANTE = AudioManager.MODE_IN_COMMUNICATION;
private static final int myAudioManagerRX_COSTANTE = AudioManager.MODE_IN_COMMUNICATION; 

//Method called for VoIP trasmission
myAudioStream = new AudioStream(localClientIP);
myAudioGroup …
Run Code Online (Sandbox Code Playgroud)

java android voip datagram rtp

7
推荐指数
1
解决办法
2753
查看次数

Android - 如何获取运行我的应用程序的智能手机设备的硬件按钮列表

根据(当然)应用程序可以在不同设备上运行的事实,我正在寻找一种方法来列出智能手机上可用的硬件按钮。

通常音量、功率总是存在的。有时存在启动相机的按钮,有时存在启动“Google Now”的按钮,等等......我的应用程序如何知道哪些可用?

我的最终目标是使用硬件按钮来执行我的应用程序的精确操作。我用音量按钮实现了它,但它仅在屏幕打开且我的应用程序位于前台时才有效,而当屏幕关闭且我的应用程序位于后台时我也需要这样做。

java android android-hardware

5
推荐指数
0
解决办法
449
查看次数

标签 统计

android ×2

java ×2

android-hardware ×1

datagram ×1

rtp ×1

voip ×1