引入mqtt-client-0.4.1.jar包,然后写一个class(里面为mqtt的主要代码),如:
package com.example.htalka.service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.MqttPersistenceException;
import org.eclipse.paho.client.mqttv3.MqttSecurityException;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.eclipse.paho.client.mqttv3.persist.MqttDefaultFilePersistence;
import com.example.htalka.MainActivity;
import com.example.htalka.R;
import com.example.htalka.application.HTalkApplication;
import com.example.htalka.helper.Const;
import com.example.htalka.helper.PrefUtil;
import com.example.htalka.model.Chat;
import com.example.htalka.model.User;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
import android.widget.RemoteViews;
public class MQTTService extends Service implements MqttCallback{
public static String MQTT_HOST = "192.168.13.118";
public static int MQTT_PORT = 1883;
private static final String TAG = "MQTTService";
private static MqttClient client = null;
private MqttConnectOptions options = null;
// MQTT Client 参数
private String host;
private int port;
private String username;
private String password;
private int keepAlive;
private Boolean cleanSession;
private String clientID;
public static String CLINET_ID = "client_id";
public static String USER_ID = "user_id";
public static String TO_USER_ID = "to_user_id";
public static String TO_USER_LIST = "to_user_list";
public MQTTClientCallback clientCallback;
private ArrayList<String> to_user_list;
public static HTalkApplication app;
/**
* 获取整个application
*
* @return
*/
public HTalkApplication getStuffApplication() {
return (HTalkApplication) this.getApplicationContext();
}
/**
* 初始化application
*/
public void initStuffApplication() {
app = getStuffApplication();
}
public void setMQTTClientCallback(MQTTClientCallback l) {
clientCallback = l;
}
/**
* MQTTClient回调
*
* @author Thierry
*/
public interface MQTTClientCallback {
public void connectLostCallBack();
public void msgArrivedCallBack(String topic, String string);
public void deliveryCompleteCallBack(IMqttDeliveryToken token);
}
/**
* Class for clients to access. Because we know this service always runs in
* the same process as its clients, we don't need to deal with IPC.
*/
public class LocalBinder extends Binder {
public MQTTService getService() {