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/