2013-03-15 140 views
3

我试图建立一个proyect像PTTDroid,我的意思是一按通或对讲机的应用。Android客户端和服务器的Node.js

的问题是,在这个程序,你不容使用3G接入网络,所以我决定用Node.js的服务器和实现Android客户端用它comunicate。我试图用Phonegap做一个multiplattform proyect,问题是对于音频记录你不能访问缓冲区,你只能启动和停止或暂停录制过程,但不能在捕获时发送数据。所以我的问题是可以通过Socket.IO或类似的方式通过原生Android函数(Audiorecord类)与Node.js服务器实时流式传输音频。

我发现了这个project,Asimi JS,但我不知道是否有人知道更好的方式来做我想做的事。

非常感谢您的帮助!

回答

3

这当然是有可能做到这一点,但因为它使用TCP标准的NodeJS的HTTP服务器都会是不可取的。您希望将UDP用作音频的传输层,因为它会更快,并且可能发生的小包丢失很可能不成问题。

要完全老实跟你说这听起来像你需要写在本机平台的几个演示应用 - 所以不要使用PhoneGap的。您需要本地平台才能访问诸如麦克风之类的东西并通过UDP进行流式传输。

当你有演示工作时,你可以继续尝试其他平台,但从一个简单的设置开始,而不是试图一次完成 - 如果这很容易,别人会做到这一点在你之前。

让我推荐你最舒服的,如(的NodeJS,Java和C,C++,C#)任何一种语言,一个简单的UDP服务器。让UDP服务器接收并将内容保存到一个文件中,然后您可以在台式计算机上播放以验证结果。作为一个简单的客户端,可以在Android或iOS上构建一个客户端,并将您已经记录并包含在应用中的文件进行流式传输。当你有这个设置工作,你可以尝试捕捉麦克风,然后做一个用户界面,然后支持多个电话,然后建立一个记录对话的服务器,然后建立一个用户数据库,等等。但从你的主要特征的原型开始。

3

我终于发现并解决我的问题(至少这是我的想法)...首先我创建了一个服务器来发送和DatagramSocket的,之后收到UDP数据包,以实现服务器和客户机之间的通信,当我通过3G连接时,我需要一个静态端口和IP,这就是为什么我的服务器无法连接到客户端。通过数据连接,用户IP和端口不总是相同的,如果您想要发送和接收,则必须始终打开相同的套接字。另一方面,服务器在连接时必须存储来自客户端的地址和端口。

非常感谢您的帮助ExxKA