我想实现聊天状态,以便接收者可以知道其他用户是否正在打字。
我已为创建聊天添加了此代码
Mychat = ChatManager.getInstanceFor(connection).createChat("testadmin@domain.com"), mMessageListener);
我用它来设置 chatState
ChatStateManager.getInstance(connection).setCurrentState(ChatState.composing, Mychat);
以及接收消息并获取 chatState
的最后一个代码private class MMessageListener implements ChatMessageListener, ChatStateListener{
Context ctx;
public MMessageListener(Context context) {
ctx=context;
}
public void processMessage(final org.jivesoftware.smack.chat.Chat chat,
final Message message) {
//message received success..
}
@Override
public void stateChanged(Chat arg0, ChatState arg1) {
Log.d("Chat State","typing status run..");
if (ChatState.composing.equals(arg1)) {
Log.d("Chat State",arg0.getParticipant() + " is typing..");
} else if (ChatState.gone.equals(arg1)) {
Log.d("Chat State",arg0.getParticipant() + " has left the conversation.");
} else {
Log.d("Chat State",arg0.getParticipant() + ": " + arg1.name());
}
}
}
我已经添加了所有代码并且它正在接收组合状态,但是 只有在我发出信息后,国家才会到达 消息本身,这对某人来说并不是很好的打字类型 消息,当有人在发送消息之前打字时,我如何实时输入状态?
我使用smack 4.1.5,openfire作为服务器
最好的考虑。