AndroidManifest.xml
<!-- Permissions the Application Requires --> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!--<uses-permission android:name="android.permission.READ_PHONE_STATE" />--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" />
And register our MQTT Android Service in our app before the closing tag by adding this line:
<service android:name="org.eclipse.paho.android.service.MqttService" />
Java
public class MqttManager { MqttAndroidClient mqtt=null; public void publishTest() throws MqttException { try { String clientId= MqttClient.generateClientId(); mqtt=new MqttAndroidClient(CachePupli.context,"tcp://192.168.1.2:1883",clientId); MqttConnectOptions connectOptions=new MqttConnectOptions(); connectOptions.setAutomaticReconnect(true); connectOptions.setCleanSession(true); IMqttToken token= mqtt.connect(connectOptions); token.setActionCallback(onConnect); } catch (Exception ex) { ex.printStackTrace(); } } private IMqttActionListener onConnect=new IMqttActionListener() { @Override public void onSuccess(IMqttToken asyncActionToken) { MqttMessage message=new MqttMessage("Hello World".getBytes()); try { mqtt.publish("test",message); } catch (MqttException e) { e.printStackTrace(); } } @Override public void onFailure(IMqttToken asyncActionToken, Throwable exception) { } }; }
References
https://www.eclipse.org/paho/clients/android/
https://wildanmsyah.wordpress.com/2017/05/11/mqtt-android-client-tutorial/