【问题标题】:Sending composing event in xmpp android在xmpp android中发送组合事件
【发布时间】:2014-09-10 12:36:27
【问题描述】:

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

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

我提到了这个链接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());        

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

【问题讨论】:

标签: android xmpp


【解决方案1】:

嗨,我已经这样做了。

您的代码适合发送打字指示。 你需要在接收端注册一个指标。

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......");
                            }
                        });

                    }
                });

【讨论】:

    【解决方案2】:

    只需在 ChatManager 初始化后添加 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());
            }
        };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      相关资源
      最近更新 更多