android - 如何使用 Smack 了解 XMPP openfire 中的键入状态

标签 android xmpp openfire smack asmack

我正在使用 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/

相关文章:

android - 获取当前 GPS 时出现 NullPointerException

java - 关于 Android 上存储的快速问题

java - 我在使用 smack 4.2 Openfire 创建 XMPP 客户端时遇到问题

xmpp - 如何使用 strophe 在 openfire 中创建永久房间?

android构建错误链接资源失败

android - 无法启动服务 Intent : not found

security - 是否可以用 XMPP (Jabber) 协议(protocol)中的数字签名对每条消息进行签名?

android - Asmack中的注册方法

使用smack的android文件传输

xmpp - 如何在smack中从pubsub节点获取脱机消息