实现基于OPhone 2.0的GTalk客户端
2010-10-19 20:56:29 来源:WEB开发网super.handleMessage(msg);
}
};
@Override
public void run()
{
while (flag)
{
try
{
// 每隔5秒调用一次contactStateChange方法
Thread.sleep(5000);
handler.sendEmptyMessage(0);
}
catch (Exception e)
{
}
}
}
public void setOnContactStateListener(OnContactStateListener listener)
{
mOnContactStateListener = listener;
}
}
其中OnContactStateListener是一个事件接口,代码如下:
复制到剪贴板 Java代码
package net.blogjava.mobile.gtalk;
public interface OnContactStateListener
{
public void contactStateChange();
}
由于UpdateContactState类主要用来监听联系人的状态,因此,需要在GTalk类中创建UpdateContactState类的对象实例。GTalk类需要实现OnContactStateListener接口。在GTalk类中的contactStateChange方法的代码如下:
复制到剪贴板 Java代码
public void contactStateChange()
{
if (mConnection == null)
return;
Collection rosterEntries = mConnection.getRoster().getEntries();
for (RosterEntry rosterEntry : rosterEntries)
{
// 获得当前联系人的状态(Presence对象)
Presence presence = mConnection.getRoster().getPresence(rosterEntry.getUser());
if (presence != null)
{
if (presence.isAvailable())
// 如果联系人在线,将图标资源ID换成online
mContactsAdapter.setContactIcon(rosterEntry.getUser(), R.drawable.online);
else
// 如果联系人离线,将图标资源ID换成offline
mContactsAdapter.setContactIcon(rosterEntry.getUser(), R.drawable.offline);
}
}
}
现在启动Gtalk客户端,并使用读者自己的GMail帐号进行登录。如果这时某些联系人在线。联系人列表中的某些图标会在5秒后变成彩色的。
更多精彩
赞助商链接