WEB开发网
开发学院手机开发Ophone 开发 实现基于OPhone 2.0的GTalk客户端 阅读

实现基于OPhone 2.0的GTalk客户端

 2010-10-19 20:56:29 来源:WEB开发网   
核心提示:return linearLayout;}}在ContactsAdapter类中涉及到一个Contact类,该类表示联系人的信息,实现基于OPhone 2.0的GTalk客户端(3),代码如下:public static class Contact{public int iconResourceId;public St

return linearLayout;

}

}

在ContactsAdapter类中涉及到一个Contact类,该类表示联系人的信息,代码如下:

public static class Contact

{

public int iconResourceId;

public String account;

public String nickname;

}

下面的代码创建了ContactsAdapter对象,并将ContactsAdapter对象绑定到ListView组件中。

复制到剪贴板 Java代码

mContactsAdapter = new ContactsAdapter(this);

mlvContacts.setAdapter(mContactsAdapter);

其中mContactsAdapter为ContactsAdapter类型的变量。mlvContacts为ListView类型的变量。

监听联系人是否上线

当某个联系人上线或离线时,GTalk服务端会通知联系人的所有好友。这时Asmack可以通过RosterEntry类的 addRosterListener方法添加监听联系人状态的事件,但经过测试,目前的Asmack版本无法调用该事件方法。所以我们还不能使用该事件来监听联系人的状态。

除了使用监听事件外,还可以使用下面的代码来获得联系人的在线/离线状态。

在调用getPresence方法时要注意,该方法是异步执行的,也就是说,在登录后立刻调用该方法,并不一定返回正确的联系人状态。为此,我们采用了在线程中每隔一定时间调用getPresence的方式来获得联系人的状态。在这里使用了UpdateContactState作为线程类,在该类中每隔 5秒调用一次contactStateChange事件方法,并在该方法中调用getPresence以获得联系人信息。 UpdateContactState类的代码如下:

复制到剪贴板 Java代码

package net.blogjava.mobile.gtalk;

import android.os.Handler;

public class UpdateContactState implements Runnable

{

public boolean flag = true;

private OnContactStateListener mOnContactStateListener;

private Handler handler = new Handler()

{

@Override

public void handleMessage(android.os.Message msg)

{

if (mOnContactStateListener != null)

// 调用contactStateChange事件方法

mOnContactStateListener.contactStateChange();

上一页  1 2 3 4 5 6 7 8  下一页

Tags:实现 基于 OPhone

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接