MainActivity.java
package com.example.paho_1;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;

import java.nio.charset.StandardCharsets;
import java.util.Random;

public class MainActivity extends AppCompatActivity {

    private MqttClient sampleClient;
    private String broker = "tcp://lukan.sytes.net:1883";
    private String clientId = "titi";
    private String topicSub = "/paho";
    private MqttConnectOptions connOpts;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Random random = new Random();
        clientId += random.nextInt();

        textView = findViewById(R.id.textView2);
        MemoryPersistence persistence = new MemoryPersistence();

        try {
            sampleClient = new MqttClient(broker, clientId, persistence);
        } catch (MqttException e) {
            e.printStackTrace();
        }

        connOpts = new MqttConnectOptions();
        connOpts.setCleanSession(true);
        connOpts.setAutomaticReconnect(true);

        sampleClient.setCallback(new MqttCallback() {

            @Override
            public void connectionLost(Throwable cause) {
                try {
                    sampleClient.connect(connOpts);
                } catch (MqttException e) {
                    e.printStackTrace();
                }

                try {
                    sampleClient.subscribe(topicSub);
                    Toast.makeText(getApplicationContext(), "Subskrybcja",
                            Toast.LENGTH_LONG).show();
                } catch (MqttException e) {
                    e.printStackTrace();
                }

            }

            @Override
            public void messageArrived(String topic, MqttMessage message) throws Exception {
                //Log.v("paho13",message.toString());
                textView.setText(message.getId() +" " + topic + ": " + message.toString() +
                        "\n" + textView.getText());
            }

            @Override
            public void deliveryComplete(IMqttDeliveryToken token) {

            }
        });

        try {
            sampleClient.connect(connOpts);
        } catch (MqttException e) {
            e.printStackTrace();
        }

        try {
            sampleClient.subscribe(topicSub);
            Toast.makeText(this, "Subskrybcja", Toast.LENGTH_LONG).show();
        } catch (MqttException e) {
            e.printStackTrace();
        }
    }

    public void onClickButton2(View view){
        MqttMessage message;
        message = new MqttMessage(((TextView)findViewById(R.id.editTextTextPersonName)).
                getText().toString().getBytes(StandardCharsets.UTF_8));

        try {
            sampleClient.publish("/paho", message);
        } catch (MqttException e) {
            e.printStackTrace();
        }
    }
}