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

实现基于OPhone 2.0的GTalk客户端

 2010-10-19 20:56:29 来源:WEB开发网   
核心提示:}}}public void setOnMessageListener(OnMessageListener listener){mOnMessageListener = listener;}}在编写MessageReceiver类时需要注意如下两点,MessageReceiver和UpdateContactState一

}

}

}

public void setOnMessageListener(OnMessageListener listener)

{

mOnMessageListener = listener;

}

}

在编写MessageReceiver类时需要注意如下两点。

MessageReceiver和UpdateContactState一样,并不直接处理聊天消息,而是通过调用一个processMessage事件方法进行处理。

获得聊天消息要通过PacketCollector.nextResult方法。如果当前没有聊天消息,nextResult方法会被阻塞。

有两个地方需要接收消息。一个是在聊天界面(ChatRoom类),另一个是在联系人列表界面(GTalk类)。在ChatRoom类中接收到消息后会直接显示在聊天记录中(EditText组件),代码如下:

复制到剪贴板 Java代码

@Override

public void processMessage(Message message)

{

metMessageList.append(GTalk.mUtil.getLeftString(from, "/") + ": ");

metMessageList.append(msg + " ");

}

GTalk 类处理聊天消息的过程要复杂一些。当第一次接收到某个联系人的聊天消息后,会自动显示聊天界面。如果再次接收到该联系人的聊天消息时,就不再显示与该联系人聊天的界面了。而在显示聊天界面时,会将聊天消息和联系人的帐号传入聊天界面。在聊天界面(ChatRoom类)的onCreate方法中会将第一次的聊天消息添加到聊天记录中。GTalk类中接收聊天消息的事件方法如下:

复制到剪贴板 Java代码

public void processMessage(Message message)

{

String account = mUtil.getLeftString(message.getFrom(), "/");

// 是否第一次接到该联系人的聊天消息

Boolean isChatting = mChattingContactMap.get(account);

// 是第一次接收到该联系人的聊天消息

if (isChatting == null)

{

isChatting = false;

}

// 设置标志,表示已不再是第一次接收到该联系人的聊天消息

mChattingContactMap.put(account, true);

// 是第一次接收到该联系人的聊天消息

if (!isChatting)

{

// 显示聊天界面

Intent intent = new Intent(this, ChatRoom.class);

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

Tags:实现 基于 OPhone

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