近些天一直在做利用RTMP实现实时语音聊天的Android聊天室,中间遇到不少问题,终于有时间记录一下。
1.关于RTMP
RTMP协议不必多说。http://www.cnblogs.com/haibindev/archive/2011/12/29/2305712.html推荐下这哥们的一篇文章。
2.由于聊天是在频道内进行的,所以需要一个服务器进行支持。Android向C++服务器发消息真是件特别蛋疼的事,由于约定的消息格式,手动将各种字段转换成byte[],还要抓包对比数据格式是否正确。
3.关于非阻塞Socket。
在利用SocketChannel与服务器通讯的过程中, java.net.SocketException: Broken pipe成为了常客,在网上各种搜索都没有找到疑似答案,最后还是通过抓包发现向服务器发送的数据格式不正确导致这一异常。另外,在初始化Socket连接时,建议将socket声明为static(这里是项目逻辑需要,后续消息通信依然通过此socket),不然同样会出现上述异常。
4.关于AlertDialog.Builder使用。
做Demo的时候用到过此控件。为测试方便,需要在此控件上添加两个EditText,但通过SetView(new EditText())的方法似乎并不可以,查看源码发现貌似会有覆盖的情况。