8000 GitHub - kernhu/MQTT: MQTT for Android which develops base on ECLIPSE MQTT5.It fits Android Q/R and resolves any ANR. It applys to IOT.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
/ MQTT Public

MQTT for Android which develops base on ECLIPSE MQTT5.It fits Android Q/R and resolves any ANR. It applys to IOT.

Notifications You must be signed in to change notification settings

kernhu/MQTT

Repository files navigation

MQTT

MQTT5 for Android which develops base on eclipse/paho.mqtt v5 and eclipse/paho.mqtt.android ,It fits android O/P/Q/R and solves any ANR.
MQTT5 基于eclipse/paho.mqtt.android开发,MQTT升级为mqtt-v5版本,适配android 高版本系统,并且解决一些ANR问题;适用于物联网、iot设备;

How to use it?

  1. add the permissions and register the service in the manifest
<!-- permission for MQTT -->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<!-- permission for MQTT -->

<application>

    <!-- service for MQTT -->
    <service android:name="org.cion.eclipse.mqtt5.service.MqttService"/>

</application>
  1. config and init mqtt.
  
 Mqtt5.with(getApplication())
         .setServerURI("your serverURI")
         .setClientId("your clientId")
         .setPublishTopic("your publishTopic")
         .setSubscribeTopic("your subscribeTopic")
         .setConnectionOptions(new MqttConnectionOptionsBuilder()
         .username("your userName")
         .password("your password".getBytes())
         .keepAliveInterval(15)
         .connectionTimeout(10)
         .sessionExpiryInterval(60 * 1000L)
         .cleanStart(true)
         .maximumPacketSize(20 * 1024L)
         .build())
         .setActionListener(mqttActionListener)
         .setTraceHandler(traceHandler)
         .setCallback(mqttCallback)
         .initialize()
         .connect();
         
  1. publish message.
      Mqtt5.with(getApplication()).publishMessage("your message);   
  1. recycle mqtt when activity destroy.
     Mqtt5.with(getApplication()).recycle();
  1. listener and callback intro.

    /**
     * listen mqtt connect status
     */
    MqttActionListener mqttActionListener = new MqttActionListener() {

        @Override
        public void onSuccess(IMqttToken asyncActionToken) {
            Log.i("sos", "onSuccess>>>" + asyncActionToken.getMessageId());
        }

        @Override
        public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
            Log.i("sos", "onFailure>>>" + asyncActionToken.getMessageId());
        }

    };

    /**
     * listen mqtt connect status and receive mqtt message
     */
    MqttCallback mqttCallback = new MqttCallback() {
        @Override
        public void connectionLost(Throwable cause) {
            binding.status.setText("Status: " + "connectionLost");
            Log.i("sos", "connectionLost>>>" + (cause == null));
        }

        @Override
        public void disconnected(MqttDisconnectResponse disconnectResponse) {
            binding.status.setText("Status: " + "disconnected");
            Log.i("sos", "disconnected>>>" + disconnectResponse.getReasonString());
        }

        @Override
        public void mqttErrorOccurred(MqttException exception) {
            Log.i("sos", "mqttErrorOccurred>>>" + exception.getMessage());
        }

        @Override
        public void messageArrived(String topic, MqttMessage message) {
            Log.i("sos", "messageArrived---topic: " + topic + ", msg: " + new String(message.getPayload()));
        }

        @Override
        public void deliveryComplete(IMqttToken token) {
            Log.i("sos", "deliveryComplete>>>" + token.getMessageId());
        }

        @Override
        public void connectComplete(boolean reconnect, String serverURI) {
            Log.i("sos", "connectComplete>>>" + serverURI);
        }

        @Override
        public void authPacketArrived(int reasonCode, MqttProperties properties) {
            Log.i("sos", "authPacketArrived>>>" + reasonCode + ";;;;" + properties.getReasonString());
        }
    };

    /**
     * mqtt error trace
     */
    MqttTraceHandler traceHandler = new MqttTraceHandler() {
        @Override
        public void traceDebug(String tag, String message) {
            Log.i("sos", "traceDebug>>>" + tag + ";;;;" + message);
        }

        @Override
        public void traceError(String tag, String message) {
            Log.i("sos", "traceError>>>" + tag + ";;;;" + message);
        }

        @Override
        public void traceException(String tag, String message, Exception e) {
            Log.i("sos", "traceException>>>" + tag + ";;;;" + message);
        }
    };

5.To get a Git project into your build.

5.1> Add it in your root build.gradle at the end of repositories:


	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}
	

5.2> Add the dependency


dependencies {
        implementation 'com.github.kernhu:MQTT:Tag'
        }
        

Contribute

Welcome to submit and solve bugs for it. Email: vsky580@gmail.com
Facebook: https://www.facebook.com/kern.hu.580
QQ群:43447852

Thanks

eclipse/paho/mqtt
eclipse/paho.mqtt.android

About

MQTT for Android which develops base on ECLIPSE MQTT5.It fits Android Q/R and resolves any ANR. It applys to IOT.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

0