Отправка события сочинения в 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());
}
};