官网:
https://www.eclipse.org/paho/clients/android/
http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.java.git/
https://www.eclipse.org/paho/clients/android/sample/
libs下载链接:
mqtt java 客户端开发涉及到两个lib,分别是
1、org.eclipse.paho.client.mqttv3-1.0.2.jar
2、org.eclipse.paho.android.service-1.0.2.jar
普通的java web工程和Android开发不同。java web只需要使用第1个jar包,而Android开发则两个都要用到,因为Android需要启动后台Service组件来完成消息的发布和订阅。本文章重点讲诉的是android service,即org.eclipse.paho.android.service-1.0.2.jar。
从官网http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.java.git/可以获取到源码包org.eclipse.paho.mqtt.java-1.0.2.zip。
解压缩,里面org.eclipse.paho.mqtt.java-1.0.2\org.eclipse.paho.android.service\org.eclipse.paho.android.service就是android service的源码。org.eclipse.paho.android.service-1.0.2.jar就是通过此源码导出生成的。
一、MqttAndroidClient.java
1、Service组件
工程AndroidManifest.xml文件有Service的定义。
第390行,函数connect(),有startService和bindService的执行,启动和绑定Service与外部的Activity通信。
2、BroadcastReceiver组件
第70行,public class MqttAndroidClient extends BroadcastReceiver和第1251行的函数OnReceive(Context context, Intent intent)是配套的,用于监听广播消息。
第1435行,函数messageArrivedAction()里面有callback.messageArrived(),可以把接收来自Service的数据回调发送到用户界面的Activity里。
第442行的registerReceiver()和第1599行的unregisterReceiver()分别是注册和注销Broadcast。
IntentFilter filter = new IntentFilter();
filter.addAction(MqttServiceConstants.CALLBACK_TO_ACTIVITY);
二、MqttConnection.java
第755行,重写了MqttCallback的函数connectionLost();
第803行,重写了MqttCallback的函数deliveryComplete();
第755行,重写了MqttCallback的函数messageArrived();
该源文件出现了许多回调函数service.callbackToActivity();
三、MqttService.java
第267行,函数callbackToActivity();里面有发送广播sendBroadcast()的实现。
Intent callbackIntent = new Intent(MqttServiceConstants.CALLBACK_TO_ACTIVITY);