71 lines
2.6 KiB
Plaintext
71 lines
2.6 KiB
Plaintext
|
package de.eclipsemagazin.mqtt.push;
|
||
|
|
||
|
import android.app.Notification;
|
||
|
import android.app.NotificationManager;
|
||
|
import android.app.PendingIntent;
|
||
|
import android.content.Context;
|
||
|
import android.content.ContextWrapper;
|
||
|
import android.content.Intent;
|
||
|
import android.util.Log;
|
||
|
|
||
|
import org.json.JSONException;
|
||
|
import org.json.JSONObject;
|
||
|
|
||
|
import org.eclipse.paho.client.mqttv3.MqttCallback;
|
||
|
import org.eclipse.paho.client.mqttv3.MqttDeliveryToken;
|
||
|
import org.eclipse.paho.client.mqttv3.MqttMessage;
|
||
|
import org.eclipse.paho.client.mqttv3.MqttTopic;
|
||
|
public class PushCallback implements MqttCallback {
|
||
|
|
||
|
private ContextWrapper context;
|
||
|
|
||
|
public PushCallback(ContextWrapper context) {
|
||
|
this.context = context;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void connectionLost(Throwable cause) {
|
||
|
//We should reconnect here
|
||
|
}
|
||
|
|
||
|
@SuppressWarnings("deprecation")
|
||
|
@Override
|
||
|
public void messageArrived(MqttTopic topic, MqttMessage message) throws Exception {
|
||
|
final NotificationManager notificationManager = (NotificationManager)
|
||
|
context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||
|
final Notification notification = new Notification(R.drawable.snow,
|
||
|
"Black Ice Warning!", System.currentTimeMillis());
|
||
|
// Hide the notification after its selected
|
||
|
notification.flags |= Notification.FLAG_AUTO_CANCEL;
|
||
|
final Intent intent = new Intent(context, BlackIceActivity.class);
|
||
|
final PendingIntent activity = PendingIntent.getActivity(context, 0, intent, 0);
|
||
|
notification.setLatestEventInfo(context, "消息", "收到消息: " +
|
||
|
new String(message.getPayload()), activity);
|
||
|
String tag = new String(message.getPayload());
|
||
|
Log.e("tag", "messageArrived: " + new String(message.getPayload(), "utf-8"));
|
||
|
MessageBean bean = parse(tag);
|
||
|
Log.e("tag",bean.toString());
|
||
|
notification.number += 1;
|
||
|
notificationManager.notify(0, notification);
|
||
|
}
|
||
|
|
||
|
private MessageBean parse(String tag) throws JSONException {
|
||
|
MessageBean bean = new MessageBean();
|
||
|
JSONObject obj = new JSONObject(tag);
|
||
|
bean.setContent(obj.getString("content"));
|
||
|
bean.setExtensionNumber(obj.getString("extensionNumber"));
|
||
|
bean.setMessageFlag(obj.getString("messageFlag"));
|
||
|
bean.setRemark(obj.getString("remark"));
|
||
|
bean.setTitle(obj.getString("title"));
|
||
|
bean.setSendTime(obj.getString("sendTime"));
|
||
|
bean.setSextensionState(obj.getString("sextensionState"));
|
||
|
return bean;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void deliveryComplete(MqttDeliveryToken token) {
|
||
|
//We do not need this because we do not publish
|
||
|
}
|
||
|
|
||
|
}
|