Отправка события сочинения в Android xmpp

Я разрабатываю простое приложение для чата.

Я могу общаться с несколькими пользователями одновременно, но моя проблема в том, что я не могу показать статус "набирает..." другому пользователю.

Я ссылался на эту ссылку Как получить уведомление о состоянии ввода в 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("[email protected]"); // my id

            MessageEventManager event=new MessageEventManager(connection);
              //recipient id
            event.sendComposingNotification("[email protected]",msg1.getPacketId());        

если я общаюсь в браузере, то он работает нормально, и я вижу, что статус "печатает", когда другой пользователь печатает в своем окне.

2 ответа

Решение

Привет, я сделал это этим.

Ваш код подходит для отправки индикации ввода. Вам необходимо зарегистрировать индикатор на конце получателя.

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

                    }
                });

Просто добавьте ChatStateManager после инсталляции ChatManager

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

тогда вам нужно добавить ChatStateListener во время 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());
        }
    };
Другие вопросы по тегам