
|
组播通信API
|
友机互联网的目标是促成一组移动设备之间的通信。 一个可能的选择是利用“组播”通信技术,如Java
的组播API 。 然而,对于移动应用程序的开发, “组播”技术有一些严重的缺陷,例如,
数据传输不可靠,电力耗费太大等等。在移动通信的应用中,通常建议只短时间打开“组播”通信,用完后立即关闭,以节省电能。
友机互联网是在TCP连接上建立了简单的“组播”功能:
- “组播”组的识别代号,是一个字符串,而不是由一个D类地址和UDP端口。
- 设备之间的TCP连接,可以通过 友机互联网 的连接管理器来交互式设定,也可以通过 IDL 界面编程设定。
友机互联网 的“组播”API是仿照Java的MulticastSocket API,可归纳为以下4种操作:
- joinGroup(groupId)
- leaveGroup(groupId)
- send(groupId,
message)
- recv(groupId,
message)
使用这个“组播”API的应用程序,需要
在AndroidManifest.xml中添加以下权限:
<uses-permission
android:name="com.xconns.peerdevicenet.permission.REMOTE_MESSAGING"
/>
友机互联网提供了三种类型的异步API,以支持组播通信:
- Intent API
应用程序可以使用 startService()发送以下的 intents
来加入/离开“组播”组,和发送消息:
- ACTION_JOIN_GROUP =“com.xconns.peerdevicenet.JOIN_GROUP”
- ACTION_LEAVE_GROUP =“com.xconns.peerdevicenet.LEAVE_GROUP”
- ACTION_SEND_MSG =“com.xconns.peerdevicenet.SEND_MSG”
应用程序可以使用广播接收器来接受并处理以下信息,包括应用信息和组成员身份更改事件:
- ACTION_RECV_MSG =“com.xconns.peerdevicenet.RECV_MSG”
- ACTION_PEER_JOIN =“com.xconns.peerdevicenet.PEER_JOIN”
- ACTION_PEER_LEAVE =“com.xconns.peerdevicenet.PEER_LEAVE”
- ACTION_SELF_JOIN =“com.xconns.peerdevicenet.SELF_JOIN”
- ACTION_SELF_LEAVE =“com.xconns.peerdevicenet.SELF_LEAVE”
请参考这个使用 intents 的
聊
天应用程序 。
- IDL API
使用AIDL API的应用程序将结合以下服务:
ACTION_GROUP_SERVICE
=“com.xconns.peerdevicenet.GroupService”
这项服务提供下面的界面,用来加入/离开组播组和发送信息:
IRouterGroupService {
oneway void joinGroup(String groupId, in
DeviceInfo[] peers, in IRouterGroupHandler h);
oneway void leaveGroup(String groupId, in
IRouterGroupHandler h);
oneway void send(String groupId, in
DeviceInfo dest, in byte[] msg);
oneway void getPeerDevices(String groupId);
}
加入“组播”组时,应用程序将登记具有以下界面的处理程序,来接受应用信息和组成员身份更改事件:
IRouterGroupHandler {
oneway void onReceive(in DeviceInfo src, in
byte[] msg);
oneway void onPeerJoin(in DeviceInfo device);
oneway void onPeerLeave(in DeviceInfo
device);
oneway void onSelfJoin(in DeviceInfo[]
devices);
oneway void onSelfLeave();
oneway void onGetPeerDevices(in DeviceInfo[]
devices);
oneway void onError(in String errInfo);
}
请参考这个使用IDL接口的
聊
天应用程序。
- Messenger API
如果您的应用程序使用Android标准消息传递模式“信使”
(Messenger),请结合以下服务:
ACTION_MESSENGER_SERVICE
=“com.xconns.peerdevicenet.Messenger”
一旦绑定,返回的Messenger可以用来发送消息,下面是相关的消息ID:
public final static int JOIN_GROUP =
-10400;
public final static int LEAVE_GROUP = -10401;
public final static int SEND_MSG = -10500;
加入“组播”组时,应用程序登记一个接收信息的Messenger,
用来接受应用信息和组成员身份更改事件:
public final static int RECV_MSG =
-10510;
public final static int SELF_JOIN = -10410;
public final static int PEER_JOIN = -10411;
public final static int SELF_LEAVE = -10412;
public final static int PEER_LEAVE = -10413;
请参考这个使用MessengerAPI的聊
天应用程序 。
可以从这里下载聊
天应用程序的完整的源代码,也可以从谷
歌Play下载安装这个应用程序。