<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=MQTT%3A_Android_Studio_MQTT_Test_Client</id>
	<title>MQTT: Android Studio MQTT Test Client - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=MQTT%3A_Android_Studio_MQTT_Test_Client"/>
	<link rel="alternate" type="text/html" href="https://onnocenter.or.id/wiki/index.php?title=MQTT:_Android_Studio_MQTT_Test_Client&amp;action=history"/>
	<updated>2026-04-11T14:04:54Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.4</generator>
	<entry>
		<id>https://onnocenter.or.id/wiki/index.php?title=MQTT:_Android_Studio_MQTT_Test_Client&amp;diff=64885&amp;oldid=prev</id>
		<title>Onnowpurbo: Created page with &quot;==settings.gradle==   pluginManagement {      repositories {          gradlePluginPortal()          google()          mavenCentral()          maven {              url &quot;https:/...&quot;</title>
		<link rel="alternate" type="text/html" href="https://onnocenter.or.id/wiki/index.php?title=MQTT:_Android_Studio_MQTT_Test_Client&amp;diff=64885&amp;oldid=prev"/>
		<updated>2022-04-16T01:15:54Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==settings.gradle==   pluginManagement {      repositories {          gradlePluginPortal()          google()          mavenCentral()          maven {              url &amp;quot;https:/...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==settings.gradle==&lt;br /&gt;
&lt;br /&gt;
 pluginManagement {&lt;br /&gt;
     repositories {&lt;br /&gt;
         gradlePluginPortal()&lt;br /&gt;
         google()&lt;br /&gt;
         mavenCentral()&lt;br /&gt;
         maven {&lt;br /&gt;
             url &amp;quot;https://repo.eclipse.org/content/repositories/paho-snapshots/&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 dependencyResolutionManagement {&lt;br /&gt;
     repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)&lt;br /&gt;
     repositories {&lt;br /&gt;
         google()&lt;br /&gt;
         mavenCentral()&lt;br /&gt;
         maven {&lt;br /&gt;
             url &amp;quot;https://repo.eclipse.org/content/repositories/paho-snapshots/&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 rootProject.name = &amp;quot;ITTS MQTT Test Client&amp;quot;&lt;br /&gt;
 include ':app'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==build.gradle==&lt;br /&gt;
&lt;br /&gt;
 // Top-level build file where you can add configuration options common to all sub-projects/modules.&lt;br /&gt;
 plugins {&lt;br /&gt;
     id 'com.android.application' version '7.1.2' apply false&lt;br /&gt;
     id 'com.android.library' version '7.1.2' apply false&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 task clean(type: Delete) {&lt;br /&gt;
     delete rootProject.buildDir&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==build.gradle app==&lt;br /&gt;
&lt;br /&gt;
 buildscript{&lt;br /&gt;
     repositories {&lt;br /&gt;
         // Add the Maven address.&lt;br /&gt;
         maven { url 'https://developer.huawei.com/repo/' }&lt;br /&gt;
     }&lt;br /&gt;
     dependencies {&lt;br /&gt;
         classpath 'com.android.tools.build:gradle:7.0.3'&lt;br /&gt;
         classpath 'com.huawei.agconnect:agcp:1.5.2.300'&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 plugins {&lt;br /&gt;
     id 'com.android.application'&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 android {&lt;br /&gt;
     compileSdk 32&lt;br /&gt;
 &lt;br /&gt;
     defaultConfig {&lt;br /&gt;
         applicationId &amp;quot;itts.onno.ittsmqtttestclient&amp;quot;&lt;br /&gt;
         minSdk 21&lt;br /&gt;
         targetSdk 32&lt;br /&gt;
         versionCode 1&lt;br /&gt;
         versionName &amp;quot;1.0&amp;quot; &lt;br /&gt;
 &lt;br /&gt;
         testInstrumentationRunner &amp;quot;androidx.test.runner.AndroidJUnitRunner&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     buildTypes {&lt;br /&gt;
         release {&lt;br /&gt;
             minifyEnabled false&lt;br /&gt;
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
     compileOptions {&lt;br /&gt;
         sourceCompatibility JavaVersion.VERSION_1_8&lt;br /&gt;
         targetCompatibility JavaVersion.VERSION_1_8&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 dependencies { &lt;br /&gt;
     implementation 'androidx.appcompat:appcompat:1.4.1'&lt;br /&gt;
     implementation 'com.google.android.material:material:1.5.0'&lt;br /&gt;
     implementation 'androidx.constraintlayout:constraintlayout:2.1.3'&lt;br /&gt;
     testImplementation 'junit:junit:4.13.2'&lt;br /&gt;
     androidTestImplementation 'androidx.test.ext:junit:1.1.3'&lt;br /&gt;
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'&lt;br /&gt;
     implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5'&lt;br /&gt;
     implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'&lt;br /&gt;
     implementation 'org.greenrobot:eventbus:3.3.1'&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==activity_main.xml==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;androidx.constraintlayout.widget.ConstraintLayout xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
     xmlns:app=&amp;quot;http://schemas.android.com/apk/res-auto&amp;quot;&lt;br /&gt;
     xmlns:tools=&amp;quot;http://schemas.android.com/tools&amp;quot;&lt;br /&gt;
     android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
     android:layout_height=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
     tools:context=&amp;quot;.MainActivity&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;EditText&lt;br /&gt;
         android:id=&amp;quot;@+id/mqttserver&amp;quot;&lt;br /&gt;
         android:layout_width=&amp;quot;400dp&amp;quot;&lt;br /&gt;
         android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
         android:layout_marginTop=&amp;quot;132dp&amp;quot;&lt;br /&gt;
         android:ems=&amp;quot;10&amp;quot;&lt;br /&gt;
         android:hint=&amp;quot;MQTT broker server name / IP address&amp;quot;&lt;br /&gt;
         android:inputType=&amp;quot;text&amp;quot;&lt;br /&gt;
         app:layout_constraintEnd_toEndOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintHorizontal_bias=&amp;quot;0.454&amp;quot;&lt;br /&gt;
         app:layout_constraintStart_toStartOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintTop_toTopOf=&amp;quot;parent&amp;quot;/&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;EditText&lt;br /&gt;
         android:id=&amp;quot;@+id/username&amp;quot;&lt;br /&gt;
         android:layout_width=&amp;quot;400dp&amp;quot;&lt;br /&gt;
         android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
         android:layout_marginTop=&amp;quot;30dp&amp;quot;&lt;br /&gt;
         android:ems=&amp;quot;10&amp;quot;&lt;br /&gt;
         android:hint=&amp;quot;MQTT username&amp;quot;&lt;br /&gt;
         android:inputType=&amp;quot;text&amp;quot;&lt;br /&gt;
         app:layout_constraintEnd_toEndOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintHorizontal_bias=&amp;quot;0.4&amp;quot;&lt;br /&gt;
         app:layout_constraintStart_toStartOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintTop_toBottomOf=&amp;quot;@+id/mqttserver&amp;quot;/&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;EditText&lt;br /&gt;
         android:id=&amp;quot;@+id/password&amp;quot;&lt;br /&gt;
         android:layout_width=&amp;quot;400dp&amp;quot;&lt;br /&gt;
         android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
         android:layout_marginTop=&amp;quot;30dp&amp;quot;&lt;br /&gt;
         android:ems=&amp;quot;10&amp;quot;&lt;br /&gt;
         android:hint=&amp;quot;MQTT password&amp;quot;&lt;br /&gt;
         android:inputType=&amp;quot;text&amp;quot;&lt;br /&gt;
         app:layout_constraintEnd_toEndOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintHorizontal_bias=&amp;quot;0.4&amp;quot;&lt;br /&gt;
         app:layout_constraintStart_toStartOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintTop_toBottomOf=&amp;quot;@+id/username&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;EditText&lt;br /&gt;
         android:id=&amp;quot;@+id/mqttclientid&amp;quot;&lt;br /&gt;
         android:layout_width=&amp;quot;400dp&amp;quot;&lt;br /&gt;
         android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
         android:layout_marginTop=&amp;quot;30dp&amp;quot;&lt;br /&gt;
         android:ems=&amp;quot;10&amp;quot;&lt;br /&gt;
         android:hint=&amp;quot;MQTT client id&amp;quot;&lt;br /&gt;
         android:inputType=&amp;quot;text&amp;quot;&lt;br /&gt;
         app:layout_constraintEnd_toEndOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintHorizontal_bias=&amp;quot;0.4&amp;quot;&lt;br /&gt;
         app:layout_constraintStart_toStartOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintTop_toBottomOf=&amp;quot;@+id/password&amp;quot;/&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;Button&lt;br /&gt;
         android:id=&amp;quot;@+id/btnProceed&amp;quot;&lt;br /&gt;
         android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
         android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
         android:text=&amp;quot;Proceed&amp;quot;&lt;br /&gt;
         app:layout_constraintBottom_toBottomOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintEnd_toStartOf=&amp;quot;@+id/btnReset&amp;quot;&lt;br /&gt;
         app:layout_constraintHorizontal_bias=&amp;quot;0.207&amp;quot;&lt;br /&gt;
         app:layout_constraintStart_toStartOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintTop_toTopOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintVertical_bias=&amp;quot;0.963&amp;quot;/&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;Button&lt;br /&gt;
         android:id=&amp;quot;@+id/btnReset&amp;quot;&lt;br /&gt;
         android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
         android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
         android:layout_marginEnd=&amp;quot;16dp&amp;quot;&lt;br /&gt;
         android:text=&amp;quot;Reset&amp;quot;&lt;br /&gt;
         app:layout_constraintBottom_toBottomOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintEnd_toEndOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintTop_toTopOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         app:layout_constraintVertical_bias=&amp;quot;0.963&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/androidx.constraintlayout.widget.ConstraintLayout&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==activity_mqttmain.xml==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;androidx.constraintlayout.widget.ConstraintLayout xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
     xmlns:app=&amp;quot;http://schemas.android.com/apk/res-auto&amp;quot;&lt;br /&gt;
     xmlns:tools=&amp;quot;http://schemas.android.com/tools&amp;quot;&lt;br /&gt;
     android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
     android:layout_height=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
     tools:context=&amp;quot;.MQTTMain&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;Button&lt;br /&gt;
         android:id=&amp;quot;@+id/btnConnect&amp;quot;&lt;br /&gt;
         android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
         android:layout_height=&amp;quot;60dp&amp;quot;&lt;br /&gt;
         android:layout_marginTop=&amp;quot;20dp&amp;quot;&lt;br /&gt;
         android:text=&amp;quot;Connect&amp;quot;&lt;br /&gt;
         app:layout_constraintTop_toTopOf=&amp;quot;parent&amp;quot;&lt;br /&gt;
         tools:layout_editor_absoluteX=&amp;quot;0dp&amp;quot;/&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;EditText&lt;br /&gt;
         android:id=&amp;quot;@+id/mqttsubstopic&amp;quot;&lt;br /&gt;
         android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
         android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
         android:layout_marginTop=&amp;quot;20dp&amp;quot;&lt;br /&gt;
         android:ems=&amp;quot;10&amp;quot;&lt;br /&gt;
         android:hint=&amp;quot;MQTT Subscribe Topic&amp;quot;&lt;br /&gt;
         android:inputType=&amp;quot;text&amp;quot;&lt;br /&gt;
         app:layout_constraintTop_toBottomOf=&amp;quot;@+id/btnConnect&amp;quot;&lt;br /&gt;
         tools:layout_editor_absoluteX=&amp;quot;0dp&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;Button&lt;br /&gt;
         android:id=&amp;quot;@+id/btnSubscribe&amp;quot;&lt;br /&gt;
         android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
         android:layout_height=&amp;quot;60dp&amp;quot;&lt;br /&gt;
         android:layout_marginTop=&amp;quot;10dp&amp;quot;&lt;br /&gt;
         android:text=&amp;quot;Subscribe&amp;quot;&lt;br /&gt;
         app:layout_constraintTop_toBottomOf=&amp;quot;@id/mqttsubstopic&amp;quot;&lt;br /&gt;
         tools:layout_editor_absoluteX=&amp;quot;0dp&amp;quot;/&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;EditText&lt;br /&gt;
         android:id=&amp;quot;@+id/mqttpublishtext&amp;quot;&lt;br /&gt;
         android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
         android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
         android:layout_marginTop=&amp;quot;20dp&amp;quot;&lt;br /&gt;
         android:ems=&amp;quot;10&amp;quot;&lt;br /&gt;
         android:hint=&amp;quot;MQTT Publish Text&amp;quot;&lt;br /&gt;
         android:inputType=&amp;quot;text&amp;quot;&lt;br /&gt;
         app:layout_constraintTop_toBottomOf=&amp;quot;@id/btnSubscribe&amp;quot;&lt;br /&gt;
         tools:layout_editor_absoluteX=&amp;quot;0dp&amp;quot;/&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;Button&lt;br /&gt;
         android:id=&amp;quot;@+id/btnPublish&amp;quot;&lt;br /&gt;
         android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
         android:layout_height=&amp;quot;60dp&amp;quot;&lt;br /&gt;
         android:layout_marginTop=&amp;quot;10dp&amp;quot;&lt;br /&gt;
         android:text=&amp;quot;Publish&amp;quot;&lt;br /&gt;
         app:layout_constraintTop_toBottomOf=&amp;quot;@id/mqttpublishtext&amp;quot;&lt;br /&gt;
         tools:layout_editor_absoluteX=&amp;quot;0dp&amp;quot;/&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;TextView&lt;br /&gt;
         android:id=&amp;quot;@+id/mqttreceivedmessage&amp;quot;&lt;br /&gt;
         android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
         android:layout_height=&amp;quot;70dp&amp;quot;&lt;br /&gt;
         android:layout_marginTop=&amp;quot;10dp&amp;quot;&lt;br /&gt;
         android:hint=&amp;quot;MQTT Message Received from Broker&amp;quot;&lt;br /&gt;
         app:layout_constraintTop_toBottomOf=&amp;quot;@id/btnPublish&amp;quot;&lt;br /&gt;
         tools:layout_editor_absoluteX=&amp;quot;0dp&amp;quot;/&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;Button&lt;br /&gt;
         android:id=&amp;quot;@+id/btndisConnect&amp;quot;&lt;br /&gt;
         android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
         android:layout_height=&amp;quot;60dp&amp;quot;&lt;br /&gt;
         android:layout_marginTop=&amp;quot;20dp&amp;quot;&lt;br /&gt;
         android:text=&amp;quot;Disconnect&amp;quot;&lt;br /&gt;
         app:layout_constraintTop_toBottomOf=&amp;quot;@id/mqttreceivedmessage&amp;quot;&lt;br /&gt;
         tools:layout_editor_absoluteX=&amp;quot;0dp&amp;quot;/&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/androidx.constraintlayout.widget.ConstraintLayout&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MainActivity.java==&lt;br /&gt;
&lt;br /&gt;
 package itts.onno.ittsmqtttestclient;&lt;br /&gt;
 &lt;br /&gt;
 import androidx.appcompat.app.AppCompatActivity;&lt;br /&gt;
 import android.content.Intent;&lt;br /&gt;
 import android.os.Bundle;&lt;br /&gt;
 import android.view.View;&lt;br /&gt;
 import android.widget.Button;&lt;br /&gt;
 import android.widget.EditText;&lt;br /&gt;
 &lt;br /&gt;
 public class MainActivity extends AppCompatActivity {&lt;br /&gt;
 &lt;br /&gt;
     @Override&lt;br /&gt;
     protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
         super.onCreate(savedInstanceState);&lt;br /&gt;
         setContentView(R.layout.activity_main);&lt;br /&gt;
 &lt;br /&gt;
         Button btnProceed = (Button)findViewById(R.id.btnProceed);&lt;br /&gt;
         btnProceed.setOnClickListener(new View.OnClickListener() {&lt;br /&gt;
             @Override&lt;br /&gt;
             public void onClick(View v) {&lt;br /&gt;
 &lt;br /&gt;
                 EditText mqttserver = (EditText) findViewById(R.id.mqttserver);&lt;br /&gt;
                 String smqttserver = mqttserver.getText().toString() ;&lt;br /&gt;
                 EditText mqttusername = (EditText) findViewById(R.id.username);&lt;br /&gt;
                 String smqttusername = mqttusername.getText().toString() ;&lt;br /&gt;
                 EditText mqttpassword = (EditText) findViewById(R.id.password);&lt;br /&gt;
                 String smqttpassword = mqttpassword.getText().toString() ;&lt;br /&gt;
                 EditText mqttclientid = (EditText) findViewById(R.id.mqttclientid);&lt;br /&gt;
                 String smqttclientid = mqttclientid.getText().toString() ; &lt;br /&gt;
 &lt;br /&gt;
                 // String smqttserver = &amp;quot;percobaan testing&amp;quot;;&lt;br /&gt;
                 Intent i = new Intent(MainActivity.this, MQTTMain.class);&lt;br /&gt;
                 i.putExtra(&amp;quot;IDmqttserver&amp;quot;, smqttserver);&lt;br /&gt;
                 i.putExtra(&amp;quot;IDmqttusername&amp;quot;, smqttusername);&lt;br /&gt;
                 i.putExtra(&amp;quot;IDmqttpassword&amp;quot;, smqttpassword);&lt;br /&gt;
                 i.putExtra(&amp;quot;IDmqttclientid&amp;quot;, smqttclientid);&lt;br /&gt;
                 startActivity(i);&lt;br /&gt;
             }&lt;br /&gt;
         }); &lt;br /&gt;
 &lt;br /&gt;
         Button btnReset = (Button)findViewById(R.id.btnReset);&lt;br /&gt;
         btnReset.setOnClickListener(new View.OnClickListener() {&lt;br /&gt;
             @Override&lt;br /&gt;
             public void onClick(View v) {&lt;br /&gt;
                 EditText mqttserver = (EditText) findViewById(R.id.mqttserver);&lt;br /&gt;
                 mqttserver.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
                 EditText mqttusername = (EditText) findViewById(R.id.username);&lt;br /&gt;
                 mqttusername.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
                 EditText mqttpassword = (EditText) findViewById(R.id.password);&lt;br /&gt;
                 mqttpassword.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
                 EditText mqttclientid = (EditText) findViewById(R.id.mqttclientid);&lt;br /&gt;
                 mqttclientid.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
             }&lt;br /&gt;
         });&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MQTTMain.java==&lt;br /&gt;
&lt;br /&gt;
 package itts.onno.ittsmqtttestclient;&lt;br /&gt;
 &lt;br /&gt;
 import androidx.appcompat.app.AppCompatActivity;&lt;br /&gt;
 import android.os.Bundle;&lt;br /&gt;
 import android.widget.EditText;&lt;br /&gt;
 import android.widget.TextView;&lt;br /&gt;
 import android.view.View;&lt;br /&gt;
 &lt;br /&gt;
 import org.eclipse.paho.client.mqttv3.MqttException;&lt;br /&gt;
 import org.eclipse.paho.client.mqttv3.MqttMessage;&lt;br /&gt;
 import org.greenrobot.eventbus.EventBus;&lt;br /&gt;
 import org.greenrobot.eventbus.Subscribe;&lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 public class MQTTMain extends AppCompatActivity {&lt;br /&gt;
     @Override&lt;br /&gt;
     protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
         super.onCreate(savedInstanceState);&lt;br /&gt;
         setContentView(R.layout.activity_mqttmain); &lt;br /&gt;
 &lt;br /&gt;
         String smqttusername = getIntent().getStringExtra( &amp;quot;IDmqttusername&amp;quot;);&lt;br /&gt;
         String smqttpassword = getIntent().getStringExtra( &amp;quot;IDmqttpassword&amp;quot;);&lt;br /&gt;
         String smqttclientid = getIntent().getStringExtra( &amp;quot;IDmqttclientid&amp;quot;);&lt;br /&gt;
         String smqttserver = getIntent().getStringExtra( &amp;quot;IDmqttserver&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
         // smqttserver = &amp;quot;tcp://&amp;quot;+smqttserver+&amp;quot;:1883&amp;quot;;&lt;br /&gt;
         // TextView textView = (TextView) findViewById(R.id.mqttreceivedmessage);&lt;br /&gt;
         // textView.setText( smqttserver); //set text for text view &lt;br /&gt;
 &lt;br /&gt;
         findViewById(R.id.btnConnect).setOnClickListener(new View.OnClickListener() {&lt;br /&gt;
             @Override&lt;br /&gt;
             public void onClick(View v) {&lt;br /&gt;
                 new Thread(new Runnable() {&lt;br /&gt;
                     @Override&lt;br /&gt;
                     public void run() {&lt;br /&gt;
                         boolean b = MqttManager.getInstance().creatConnect( &amp;quot;tcp://&amp;quot;+smqttserver+&amp;quot;:1883&amp;quot;, smqttusername, smqttpassword, smqttclientid);&lt;br /&gt;
                     }&lt;br /&gt;
                 }).start();&lt;br /&gt;
             }&lt;br /&gt;
         });&lt;br /&gt;
 &lt;br /&gt;
         findViewById(R.id.btnPublish).setOnClickListener(new View.OnClickListener() {&lt;br /&gt;
             @Override&lt;br /&gt;
             public void onClick(View v) {&lt;br /&gt;
                 new Thread(new Runnable() {&lt;br /&gt;
                     @Override&lt;br /&gt;
                     public void run() { &lt;br /&gt;
 &lt;br /&gt;
                         EditText mqttsubstopic = (EditText) findViewById(R.id.mqttsubstopic);&lt;br /&gt;
                         String smqttsubstopic = mqttsubstopic.getText().toString() ;&lt;br /&gt;
                         EditText mqttpublishtext = (EditText) findViewById(R.id.mqttpublishtext);&lt;br /&gt;
                         String smqttpublishtext = mqttpublishtext.getText().toString() ; &lt;br /&gt;
 &lt;br /&gt;
                         MqttManager.getInstance().publish( smqttsubstopic, 2, smqttpublishtext.getBytes());&lt;br /&gt;
                     }&lt;br /&gt;
                 }).start();&lt;br /&gt;
             }&lt;br /&gt;
         });&lt;br /&gt;
 &lt;br /&gt;
         findViewById(R.id.btnSubscribe).setOnClickListener(new View.OnClickListener() {&lt;br /&gt;
             @Override&lt;br /&gt;
             public void onClick(View v) {&lt;br /&gt;
                 new Thread(new Runnable() {&lt;br /&gt;
                     @Override&lt;br /&gt;
                     public void run() {&lt;br /&gt;
                         EditText mqttsubstopic = (EditText) findViewById(R.id.mqttsubstopic);&lt;br /&gt;
                         String smqttsubstopic = mqttsubstopic.getText().toString() ; &lt;br /&gt;
 &lt;br /&gt;
                         MqttManager.getInstance().subscribe( smqttsubstopic , 2);&lt;br /&gt;
                     }&lt;br /&gt;
                 }).start();&lt;br /&gt;
             }&lt;br /&gt;
         });&lt;br /&gt;
 &lt;br /&gt;
         findViewById(R.id.btndisConnect).setOnClickListener(new View.OnClickListener() {&lt;br /&gt;
             @Override&lt;br /&gt;
             public void onClick(View v) {&lt;br /&gt;
                 new Thread(new Runnable() {&lt;br /&gt;
                     @Override&lt;br /&gt;
                     public void run() {&lt;br /&gt;
                         try {&lt;br /&gt;
                             MqttManager.getInstance().disConnect();&lt;br /&gt;
                         } catch (MqttException e) {  &lt;br /&gt;
                         }&lt;br /&gt;
                     }&lt;br /&gt;
                 }).start(); &lt;br /&gt;
             }&lt;br /&gt;
         });&lt;br /&gt;
&lt;br /&gt;
        EventBus.getDefault().register(this);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     /**&lt;br /&gt;
      * Subscribe to received messages&lt;br /&gt;
      * The Event type here can be customized as needed, here is only a basic demonstration&lt;br /&gt;
      *&lt;br /&gt;
      * @param message&lt;br /&gt;
      */&lt;br /&gt;
     @Subscribe&lt;br /&gt;
     public void onEvent(MqttMessage message) {&lt;br /&gt;
         TextView textView = (TextView) findViewById(R.id.mqttreceivedmessage);&lt;br /&gt;
         textView.setText( message.toString() ); //set MQTT message as text&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     @Override&lt;br /&gt;
     protected void onResume() {&lt;br /&gt;
         super.onResume();&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     @Override&lt;br /&gt;
     protected void onPause() {&lt;br /&gt;
         super.onPause();&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     @Override&lt;br /&gt;
     protected void onDestroy() {&lt;br /&gt;
         EventBus.getDefault().unregister(this);&lt;br /&gt;
         super.onDestroy();&lt;br /&gt;
     } &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MqttManager.java==&lt;br /&gt;
&lt;br /&gt;
 package itts.onno.ittsmqtttestclient;&lt;br /&gt;
 &lt;br /&gt;
 import org.eclipse.paho.client.mqttv3.MqttCallback;&lt;br /&gt;
 import org.eclipse.paho.client.mqttv3.MqttClient;&lt;br /&gt;
 import org.eclipse.paho.client.mqttv3.MqttConnectOptions;&lt;br /&gt;
 import org.eclipse.paho.client.mqttv3.MqttException;&lt;br /&gt;
 import org.eclipse.paho.client.mqttv3.MqttMessage;&lt;br /&gt;
 import org.eclipse.paho.client.mqttv3.persist.MqttDefaultFilePersistence;&lt;br /&gt;
 &lt;br /&gt;
 public class MqttManager {&lt;br /&gt;
 &lt;br /&gt;
     // instance&lt;br /&gt;
     private static MqttManager mInstance = null;&lt;br /&gt;
 &lt;br /&gt;
     // Private instance variables&lt;br /&gt;
     private MqttClient client;&lt;br /&gt;
     private MqttConnectOptions conOpt;&lt;br /&gt;
     private boolean clean = true; &lt;br /&gt;
 &lt;br /&gt;
     // callback&lt;br /&gt;
     private MqttCallbackBus mCallback;&lt;br /&gt;
     private MqttManager() {&lt;br /&gt;
         mCallback = new MqttCallbackBus();&lt;br /&gt;
     } &lt;br /&gt;
 &lt;br /&gt;
     public static MqttManager getInstance() {&lt;br /&gt;
         if (null == mInstance) {&lt;br /&gt;
             mInstance = new MqttManager();&lt;br /&gt;
         }&lt;br /&gt;
         return mInstance;&lt;br /&gt;
     } &lt;br /&gt;
 &lt;br /&gt;
     /**&lt;br /&gt;
      * Release the instance, and the resources it references&lt;br /&gt;
      */&lt;br /&gt;
     public static void release() {&lt;br /&gt;
         try {&lt;br /&gt;
             if (mInstance != null) {&lt;br /&gt;
                 mInstance.disConnect();&lt;br /&gt;
                 mInstance = null;&lt;br /&gt;
             }&lt;br /&gt;
         } catch (Exception e) {&lt;br /&gt;
         }&lt;br /&gt;
     } &lt;br /&gt;
 &lt;br /&gt;
     /**&lt;br /&gt;
      * Create Mqtt connection&lt;br /&gt;
      *&lt;br /&gt;
      * @param brokerUrl (tcp://xxxxxx:1883)&lt;br /&gt;
      * @param userName&lt;br /&gt;
      * @param password&lt;br /&gt;
      * @param clientId  clientId&lt;br /&gt;
      * @return&lt;br /&gt;
      */&lt;br /&gt;
     public boolean creatConnect(String brokerUrl, String userName, String password, String clientId) {&lt;br /&gt;
         boolean flag = false;&lt;br /&gt;
         String tmpDir = System.getProperty(&amp;quot;java.io.tmpdir&amp;quot;);&lt;br /&gt;
         MqttDefaultFilePersistence dataStore = new MqttDefaultFilePersistence(tmpDir); &lt;br /&gt;
 &lt;br /&gt;
         try {&lt;br /&gt;
             // Construct the connection options object that contains connection parameters&lt;br /&gt;
             // such as cleanSession and LWT&lt;br /&gt;
             conOpt = new MqttConnectOptions();&lt;br /&gt;
             conOpt.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1_1);&lt;br /&gt;
             conOpt.setCleanSession(clean);&lt;br /&gt;
             if (password != null) {&lt;br /&gt;
                 conOpt.setPassword(password.toCharArray());&lt;br /&gt;
             }&lt;br /&gt;
             if (userName != null) {&lt;br /&gt;
                 conOpt.setUserName(userName);&lt;br /&gt;
             } &lt;br /&gt;
 &lt;br /&gt;
             // Construct an MQTT blocking mode client&lt;br /&gt;
             client = new MqttClient(brokerUrl, clientId, dataStore);  &lt;br /&gt;
 &lt;br /&gt;
             // Set this wrapper as the callback handler&lt;br /&gt;
             client.setCallback(mCallback);&lt;br /&gt;
             flag = doConnect();&lt;br /&gt;
         } catch (MqttException e) {&lt;br /&gt;
         }&lt;br /&gt;
         return flag;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     /**&lt;br /&gt;
      * establish connection&lt;br /&gt;
      *&lt;br /&gt;
      * @return&lt;br /&gt;
      */&lt;br /&gt;
     public boolean doConnect() {&lt;br /&gt;
         boolean flag = false;&lt;br /&gt;
         if (client != null) {&lt;br /&gt;
             try {&lt;br /&gt;
                 client.connect(conOpt);&lt;br /&gt;
                 // Logger.d(&amp;quot;Connected to &amp;quot; + client.getServerURI() + &amp;quot; with client ID &amp;quot; + client.getClientId());&lt;br /&gt;
                 flag = true;&lt;br /&gt;
             } catch (Exception e) {&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         return flag;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     /**&lt;br /&gt;
      * Publish / send a message to an MQTT server&lt;br /&gt;
      *&lt;br /&gt;
      * @param topicName the name of the topic to publish to&lt;br /&gt;
      * @param qos       the quality of service to delivery the message at (0,1,2)&lt;br /&gt;
      * @param payload   the set of bytes to send to the MQTT server&lt;br /&gt;
      * @return boolean&lt;br /&gt;
      */&lt;br /&gt;
     public boolean publish(String topicName, int qos, byte[] payload) {&lt;br /&gt;
 &lt;br /&gt;
         boolean flag = false;&lt;br /&gt;
 &lt;br /&gt;
         if (client != null &amp;amp;&amp;amp; client.isConnected()) {&lt;br /&gt;
 &lt;br /&gt;
             // Logger.d(&amp;quot;Publishing to topic \&amp;quot;&amp;quot; + topicName + &amp;quot;\&amp;quot; qos &amp;quot; + qos); &lt;br /&gt;
 &lt;br /&gt;
             // Create and configure a message&lt;br /&gt;
             MqttMessage message = new MqttMessage(payload);&lt;br /&gt;
             message.setQos(qos); &lt;br /&gt;
 &lt;br /&gt;
             // Send the message to the server, control is not returned until&lt;br /&gt;
             // it has been delivered to the server meeting the specified&lt;br /&gt;
             // quality of service.&lt;br /&gt;
             try {&lt;br /&gt;
                 client.publish(topicName, message);&lt;br /&gt;
                 flag = true;&lt;br /&gt;
             } catch (MqttException e) {&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         return flag;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     /**&lt;br /&gt;
      * Subscribe to a topic on an MQTT server&lt;br /&gt;
      * Once subscribed this method waits for the messages to arrive from the server&lt;br /&gt;
      * that match the subscription. It continues listening for messages until the enter key is&lt;br /&gt;
      * pressed.&lt;br /&gt;
      *&lt;br /&gt;
      * @param topicName to subscribe to (can be wild carded)&lt;br /&gt;
      * @param qos       the maximum quality of service to receive messages at for this subscription&lt;br /&gt;
      * @return boolean&lt;br /&gt;
      */&lt;br /&gt;
     public boolean subscribe(String topicName, int qos) {&lt;br /&gt;
 &lt;br /&gt;
         boolean flag = false; &lt;br /&gt;
 &lt;br /&gt;
         if (client != null &amp;amp;&amp;amp; client.isConnected()) {&lt;br /&gt;
             // Subscribe to the requested topic&lt;br /&gt;
             // The QoS specified is the maximum level that messages will be sent to the client at.&lt;br /&gt;
             // For instance if QoS 1 is specified, any messages originally published at QoS 2 will&lt;br /&gt;
             // be downgraded to 1 when delivering to the client but messages published at 1 and 0&lt;br /&gt;
             // will be received at the same level they were published at. &lt;br /&gt;
 &lt;br /&gt;
             // Logger.d(&amp;quot;Subscribing to topic \&amp;quot;&amp;quot; + topicName + &amp;quot;\&amp;quot; qos &amp;quot; + qos);&lt;br /&gt;
             try {&lt;br /&gt;
                 client.subscribe(topicName, qos);&lt;br /&gt;
                 flag = true; &lt;br /&gt;
 &lt;br /&gt;
             } catch (MqttException e) {&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         return flag;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     /**&lt;br /&gt;
      * disconnect the connection&lt;br /&gt;
      *&lt;br /&gt;
      * @throws MqttException&lt;br /&gt;
      */&lt;br /&gt;
     public void disConnect() throws MqttException {&lt;br /&gt;
         if (client != null &amp;amp;&amp;amp; client.isConnected()) {&lt;br /&gt;
             client.disconnect();&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MqttCallbackBus.java==&lt;br /&gt;
&lt;br /&gt;
 package itts.onno.ittsmqtttestclient;&lt;br /&gt;
 &lt;br /&gt;
 import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;&lt;br /&gt;
 import org.eclipse.paho.client.mqttv3.MqttCallback;&lt;br /&gt;
 import org.eclipse.paho.client.mqttv3.MqttMessage;&lt;br /&gt;
 import org.greenrobot.eventbus.EventBus;&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
  * Dispatching events using EventBus&lt;br /&gt;
  *&lt;br /&gt;
  * @author LichFaker on 16/3/25.&lt;br /&gt;
  * @Email lichfaker@gmail.com&lt;br /&gt;
  */&lt;br /&gt;
 public class MqttCallbackBus implements MqttCallback {&lt;br /&gt;
 &lt;br /&gt;
     @Override&lt;br /&gt;
     public void connectionLost(Throwable cause) {&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     @Override&lt;br /&gt;
     public void messageArrived(String topic, MqttMessage message) {&lt;br /&gt;
         EventBus.getDefault().post(message);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     @Override&lt;br /&gt;
     public void deliveryComplete(IMqttDeliveryToken token) {&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pranala Menarik==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/LichFaker/MqttClientAndroid&lt;br /&gt;
* https://github.com/LichFaker&lt;/div&gt;</summary>
		<author><name>Onnowpurbo</name></author>
	</entry>
</feed>