我正在开发一个简单的聊天应用程序。
我可以同时与多个用户聊天,但我的问题是 我无法向其他用户显示“正在输入...”状态。
我提到了这个链接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());
如果我在浏览器中聊天,那么它工作正常,我能够看到状态“正在打字” 当其他用户在他的窗口中输入时。
答案 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)
期间添加ChatStateListenerchatManager.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());
}
};