我正在使用 Openfire XMPP 服务器开发聊天应用程序。我可以在两个用户之间进行文本聊天。但是我想知道有人在输入消息时的输入状态。所以我创建了一个类:-
public class typingStatus implements ChatStateListener {
@Override
public void processMessage(Chat arg0, Message arg1) {
// TODO Auto-generated method stub
}
@Override
public void stateChanged(Chat arg0, ChatState arg1) {
// TODO Auto-generated method stub
System.out.println(arg0.getParticipant() + " is " + arg1.name());
}
}
但我很困惑,它是如何工作的?我知道我需要一个可以在 Listener 中找到的数据包。但是我找不到那个数据包。
请任何人提出建议,它将如何工作?
还有 Smack 和 asmack 之间有什么区别?
谢谢!
最佳答案
要启用ChatStateListener
,您需要创建自定义MessageListener
类
public class MessageListenerImpl implements MessageListener,ChatStateListener {
@Override
public void processMessage(Chat arg0, Message arg1) {
System.out.println("Received message: " + arg1);
}
@Override
public void stateChanged(Chat arg0, ChatState arg1) {
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());
}
}
}
然后创建MessageListener
对象
MessageListener messageListener = new MessageListenerImpl();
然后在创建聊天方法中传递这个
Chat newChat = chatmanager.createChat(jabber_id_of_friend, messageListener);
Smack 和 asmack 有什么区别? <-- Check This
关于android - 如何使用 Smack 了解 XMPP openfire 中的键入状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21154833/