How to know Typing Status in XMPP openfire using Smack

后端 未结 8 1815
既然无缘
既然无缘 2020-11-30 01:42

I am developing chat application by using Openfire XMPP server. I can text chat between two user. But i want to know Typing status when some one is typing message. So i crea

相关标签:
8条回答
  • 2020-11-30 02:13

    However you can get it from ProcessPacket also. there you will get a Message object, after you can extract xml portion from there and handle them its contain specific chatstate or not.

        Message message = (Message) packet;
        String msg_xml = message.toXML().toString();
    
        if (msg_xml.contains(ChatState.composing.toString())) {
            //handle is-typing, probably some indication on screen
        } else if (msg_xml.contains(ChatState.paused.toString())) {
            // handle "stopped typing"
        } else {
           // normal msg
        }
    

    now handle as per your requirement.

    0 讨论(0)
  • 2020-11-30 02:16

    Just add ChatStateManager after ChatManager intalization:

    chatManager =  ChatManager.getInstanceFor(getXmpptcpConnection());
    ChatStateManager.getInstance(getXmpptcpConnection());
    

    Then you need to add ChatStateListener during createChat(to,chatMesageListener):

    chatManager.createChat(message.getTo(), chatMessageListener).sendMessage(message);
    
    private ChatStateListener chatMessageListener = new ChatStateListener() {
    
        @Override
        public void stateChanged(Chat chat, ChatState state) {
            //State Change composing,active,paused,gone,etc
            Log.d(TAG, "ChatStateListener:::stateChanged -> " + chat.toString() + " \n -> " + state.toString());
        }
    
        @Override
        public void processMessage(Chat chat, Message message) {
            //Incoming Message
            Log.d(TAG, "ChatStateListener:::processMessage -> " + chat.toString() + " \n -> " + message.toString());
        }
    };
    
    0 讨论(0)
提交回复
热议问题