How to know Typing Status in XMPP openfire using Smack

后端 未结 8 1848
既然无缘
既然无缘 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:05

    Create On Class MMessageListener to listen incoming messages

    private class MMessageListener implements MessageListener, ChatStateListener {

        public MMessageListener(Context contxt) {
        }
    
    
        @Override
        public void stateChanged(Chat chat, ChatState chatState) {
    
            mStatus = "Online";
    
            if (ChatState.composing.equals(chatState)) {
    
                mStatus = chat.getParticipant() + " is typing..";
                Log.d("Chat State", chat.getParticipant() + " is typing..");
            } else if (ChatState.gone.equals(chatState)) {
                Log.d("Chat State", chat.getParticipant() + " has left the conversation.");
                mStatus = chat.getParticipant() + " has left the conversation.";
            } else if (ChatState.paused.equals(chatState)){
                Log.d("Chat State", chat.getParticipant() + ": " + chatState.name());
                mStatus = "Paused";
            }else if (ChatState.active.equals(chatState)){
                mStatus = "Online";
            }
    
            // do whatever you want to do once you receive status
    
    
        }
    
    
        @Override
        public void processMessage(Message message) {
    
        }
    
        @Override
        public void processMessage(Chat chat, Message message) {
    
    
        }
    }
    

    Add Listener to your chat object

    Chat Mychat = ChatManager.getInstanceFor(connection).createChat( "user2@localhost"), mMessageListener);

    Send status to receiving user on edittext text change

    ChatStateManager.getInstance(connection).setCurrentState(ChatState.composing, Mychat);

    This works fine for me.

提交回复
热议问题