建立一个GTalk连接和启动一个IM会话
一个GTalk连接代表着设备和GTalk服务器之间的管道。一个IM会话是消息通道,用于处理所有的即时消息的交通;在一个会话中的所有的即时消息都在这个管道中流动。
你可以创建一些不同的连接和很多的IM会话,来连接不同的GTalk服务器或者IM提供商。
在默认情况下,一个设备需要单一的GTalk连接来支持单一的IM会话,并且这个会话使用设备所有者的用户名。你可以使用GTalk服务的getDefaultConnection和默认连接的getDefaultSession方法分别得到默认连接和会话,如下面的片段所示:
IGTalkConnection gTalkConnection = gtalkService.getDefaultConnection();
IImSession imSession = gTalkConnection.getDefaultImSession();
IM会话用于发送文本和数据消息,设定用户状态,管理IM联系人名单和管理组聊等。
在Android应用程序中,IM会话是处理即时消息的最基本的接口。因此,接下来的代码片段显示了应用程序中ServiceConnection绑定GTalk服务的更加典型的实现。它确保了IM会话对象总是有效的。
private IGTalkConnection gTalkConnection = null;
private IImSession imSession = null;
private ServiceConnection gTalkServiceConnection = new ServiceConnection() {
// When the service connects, get the default GTalk session.
public void onServiceConnected(ComponentName className, IBinder service)
{
IGTalkService gtalkService = IGTalkService.Stub.asInterface(service);
try {
gTalkConnection = gtalkService.getDefaultConnection();
imSession = gTalkConnection.getDefaultImSession();
} catch (RemoteException e) { }
}
// When the service disconnects, clear the GTalk session.
public void onServiceDisconnected(ComponentName className) {
gTalkConnection = null;
imSession = null;
}
};