Back to project page mmx-starter-android.
The source code is released under:
Apache License
If you think the Android project mmx-starter-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.magnet.demo.mmx.starter; //from w w w . jav a 2 s .com import android.app.Notification; import android.app.NotificationManager; import android.content.Context; import android.media.RingtoneManager; import android.util.Log; import com.magnet.mmx.MMXClient; import com.magnet.mmx.client.MMXMessage; import com.magnet.mmx.client.PubSubManager; import com.magnet.mmx.util.XIDUtil; import java.util.ArrayList; /** * This is the singleton MMXListener that should be passed to * MMXClient.connect(). The reason for this is that the application developer needs to implement * these methods to handle situations where messages arrive even when there is no UI shown to the developer. * * In this implementation, messages are dropped if no additional listeners are registered. In an ideal * situation, the application will decide how to handle messages when there are no listeners by overriding * the onMessageReceived and onPubsubItemReceived methods. */ public class MyMMXListener implements MMXClient.MMXListener { private static final String TAG = MyMMXListener.class.getSimpleName(); private static MyMMXListener sInstance = null; private ArrayList<MMXClient.MMXListener> mListeners = new ArrayList<MMXClient.MMXListener>(); private Context mApplicationContext = null; private int mNoteId = 0; private MyMMXListener(Context context) { mApplicationContext = context.getApplicationContext(); }; public synchronized static MyMMXListener getInstance(Context context) { if (sInstance == null) { sInstance = new MyMMXListener(context); } return sInstance; } public void onConnectionEvent(MMXClient mmxClient, MMXClient.ConnectionEvent connectionEvent) { Log.d(TAG, "onConnectionEvent(): start. event=" + connectionEvent); synchronized (mListeners) { for (MMXClient.MMXListener listener : mListeners) { listener.onConnectionEvent(mmxClient, connectionEvent); } } } public void onMessageReceived(MMXClient mmxClient, MMXMessage mmxMessage, String receiptId) { Log.d(TAG, "onMesasgeReceived(): start. "); synchronized (mListeners) { for (MMXClient.MMXListener listener : mListeners) { listener.onMessageReceived(mmxClient, mmxMessage, receiptId); } } doNotify(mmxMessage); } public void onSendFailed(MMXClient mmxClient, String messageId) { Log.d(TAG, "onSendFailed(): start. "); synchronized (mListeners) { for (MMXClient.MMXListener listener : mListeners) { listener.onSendFailed(mmxClient, messageId); } } } public void onMessageDelivered(MMXClient mmxClient, String recipient, String messageId) { Log.d(TAG, "onMessageDelivered(): messageId=" + messageId); synchronized (mListeners) { for (MMXClient.MMXListener listener : mListeners) { listener.onMessageDelivered(mmxClient, recipient, messageId); } } } public void onPubsubItemReceived(MMXClient mmxClient, PubSubManager.MMXTopic mmxTopic, MMXMessage mmxMessage) { Log.d(TAG, "onPubsubItemReceived(): topic=" + mmxTopic); synchronized (mListeners) { for (MMXClient.MMXListener listener : mListeners) { listener.onPubsubItemReceived(mmxClient, mmxTopic, mmxMessage); } } } public void registerListener(MMXClient.MMXListener listener) { synchronized (mListeners) { MMXClient.MMXListener existingListener = null; for (MMXClient.MMXListener curListener : mListeners) { if (curListener == listener) { existingListener = listener; break; } } if (existingListener == null) { mListeners.add(0, listener); } } } public void unregisterListener(MMXClient.MMXListener listener) { synchronized (mListeners) { for (int i=mListeners.size(); --i >= 0;) { if (mListeners.get(i) == listener) { mListeners.remove(i); break; } } } } public void doNotify(MMXMessage message) { String messageText = message.getPayload().getDataAsString(); String from = XIDUtil.getUserId(message.getFrom()); NotificationManager noteMgr = (NotificationManager) mApplicationContext.getSystemService(Context.NOTIFICATION_SERVICE); Notification note = new Notification.Builder(mApplicationContext).setAutoCancel(true) .setSmallIcon(R.drawable.ic_launcher).setWhen(System.currentTimeMillis()) .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)) .setContentTitle("Message from " + from).setContentText(messageText).build(); noteMgr.notify(mNoteId++, note); } }