在xmpp android中发送撰写事件

时间:2014-09-10 12:36:28

标签: android xmpp

我正在开发一个简单的聊天应用程序。

我可以同时与多个用户聊天,但我的问题是 我无法向其他用户显示“正在输入...”状态。

我提到了这个链接How to get typing status notification in XMPP,但提示帮助:(

任何帮助将不胜感激。

     my sample code:
            String text = textMessage.getText().toString();
            String to = recipient.getText().toString();
            Log.i("Composing=>", "Sending text " + text + " to " + to);
            Message msg1 = new Message(to, Message.Type.chat);

            msg1.setFrom("user1@192.168.0.98"); // my id

            MessageEventManager event=new MessageEventManager(connection);
              //recipient id
            event.sendComposingNotification("tech1@192.168.0.98",msg1.getPacketId());        

如果我在浏览器中聊天,那么它工作正常,我能够看到状态“正在打字” 当其他用户在他的窗口中输入时。

2 个答案:

答案 0 :(得分:0)

嗨,我已经这样做了。

您的代码可以发送打字指示。 您需要在收件人端注册指标。

sXmppConnection.getChatManager().addChatListener(new ChatManagerListener() {

                    @Override
                    public void chatCreated(Chat arg0, boolean arg1) {

                        Log.d("chatCreated",""+arg1);

                        arg0.addMessageListener(new MessageListener()
                        {

                            @Override
                            public void processMessage(Chat arg0, Message arg1) 
                {Log.d("TYpe Stat", arg0.getParticipant()+" is typing......");
                            }
                        });

                    }
                });

答案 1 :(得分:0)

在ChatManager intalization之后添加ChatStateManager

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

然后你需要在createChat(to,chatMesageListener)

期间添加ChatStateListener
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());
        }
    };