package com.hdl.sdk.hdl_core.HDLDeviceManger.Callback; import android.util.Log; import java.util.Timer; import java.util.TimerTask; import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; import org.eclipse.paho.client.mqttv3.MqttCallbackExtended; import org.eclipse.paho.client.mqttv3.MqttMessage; import com.hdl.sdk.hdl_core.HDLDeviceManger.Core.HDLCommandText; import com.hdl.sdk.hdl_core.HDLDeviceManger.Core.HDLZigbeeMqtt; import com.hdl.sdk.hdl_core.HDLDeviceManger.Core.HandleSearch; import com.hdl.sdk.hdl_core.Util.LogUtil.HDLLog; public class PushCallback implements MqttCallbackExtended { private String host; public void setHost(String host) { this.host = host; } private static boolean isGateway = false; public static void setIsGateway(boolean isGateway) { PushCallback.isGateway = isGateway; } @Override public void connectComplete(boolean reconnect, String serverURI) { if (reconnect){ //当发生断线之后又重新连接的情况,reconnect会返回true,初次连接成功返回的是false } } @Override public void connectionLost(Throwable cause) { // 连接丢失后,一般在这里面进行重连 HDLCommandText.reportError("Connection is broken,Trying to reconnect"); if (isGateway){//搜索网关时候断线,网关重新搜索 HandleSearch.reSearch(); isGateway = false; }else {//搜索设备断线,设备重新连接 new Timer().schedule(new TimerTask() { @Override public void run() { // TODO Auto-generated method stub HDLZigbeeMqtt.connect1(host); Log.d("1111", "正在重连 "); } }, 2000); } } @Override public void deliveryComplete(IMqttDeliveryToken token) { HDLLog.info("deliveryComplete---------" + token.isComplete()); } @Override public void messageArrived(String topic, MqttMessage message) { String messageJson = new String(message.getPayload()); HDLLog.info("接收消息主题 : " + topic); HDLLog.info("接收消息Qos : " + message.getQos()); HDLLog.info("接收消息内容 : " + messageJson); HDLCommandText.handleDeviceInfoReportData(topic, messageJson); } }