I'm using the Smack library v4.1.0 (not aSmack) for Chat feature within an android app. I can't seem to get the following two feature to work:
- User Presence (Online, Last Seen)
- Chat Message Status (Sent, Delivered, Read)
For User Presence, I use the following code which always returns null
.
Presence userPresence = roster.getPresence(toUser);
System.out.println("*** User status: " + userPresence.getStatus());
if (userPresence.getMode() == Presence.Mode.available || userPresence.getMode() == Presence.Mode.chat) {
lblIsTyping.setText("Online");
} else {
lblIsTyping.setText("Offline");
}
For Message status, I use the following code:
private class MessageListenerImpl implements MessageListener, ChatStateListener {
@Override
public void processMessage(Chat chat, Message message) {
processMessageCore(message);
}
@Override
public void stateChanged(Chat chat, ChatState chatState) {
System.out.println("*** chat: " + chat.toString());
if (ChatState.composing.equals(chatState)) {
lblIsTyping.setText("typing...");
System.out.println("Chat State: " + chat.getParticipant() + " is typing..");
}
}
@Override
public void processMessage(Message message) {
processMessageCore(message);
}
}
And use it as:
ChatManager.getInstanceFor(HCSmackService.getInstance().getConnection()).createChat(toUser, mThreadID, new MessageListenerImpl());
but the callback doesn't get invoked ever.
How to get these working on Android with the new Smack Library? Has anybody already implemented these features?
Thanks!