前言
隨着物聯網的不斷髮展,Android在設備上的應用也越來越廣泛。在設備和服務器通信時,大部分app都是主動去請求的,基於Mqtt發佈/訂閱的機制可以實現雙向的消息通訊。
搭建windows版的Mqtt服務
下載地址:http://activemq.apache.org/apollo/download.html
1.將下載後的appollo的壓縮包解壓到一個目錄(eg:D:\apollo),使用cmd命令切換到appollo的bin目錄下,
運行“apollo.cmd
”創建服務器實例,會在bin目錄下生成mybroker文件夾create mybroker
2.切換到mybroker的bin目錄執行 “appolo-broker.cmd run” 出現以下內容說明Mqtt服務已經搭建成功啦
3.瀏覽器訪問
Android上實現Mqtt客戶端
標準的mqtt客戶端demo
https://github.com/eclipse/paho.mqtt.android
無法運行的話文章末尾附件下載,本人親測可用
1.運行demo,並配置服務器地址、端口號(mqtt服務已經開啓,手機和電腦處於同一局域網內)
2.連接上服務器,打開瀏覽器便可以查看連接的設備和收發的消息
關鍵代碼類及方法:
連接:
MqttAndroidClient
@Override
public IMqttToken connect(MqttConnectOptions options, Object userContext,
IMqttActionListener callback) throws MqttException {
IMqttToken token = new MqttTokenAndroid(this, userContext,
callback);
connectOptions = options;
connectToken = token;
...............
...............
}
訂閱:
@Override
public IMqttToken subscribe(String topic, int qos) throws MqttException,
MqttSecurityException {
return subscribe(topic, qos, null, null);
}
發送:
@Override
public IMqttDeliveryToken publish(String topic, MqttMessage message)
throws MqttException, MqttPersistenceException {
return publish(topic, message, null, null);
}
標準的Mqtt Demo是基於多個clientId鏈接同一個服務上進行的封裝,如果我們只是單純的單一設備(例如:以uuid還是mac地址作爲clientId)進行連接時,可以直接基於MqttAndroidClient 來進行代碼編寫。在回調中處理響應的業務邏輯,注意斷連問題。
包含windows下的mqtt服務壓縮包和Android mqtt的標準demo
https://download.csdn.net/download/swedne/12466028