⚠️ **Please feel free to create issues if it does not run for you.
Android Studio port of the Eclipse paho MQTT sample project. Beside that you can use subscribe/pulish to a MQTT server, sms functionality is added to this project.
If you want to send sms, you have to first subscribe to sms topic in application To set your phone number in messages received via sms topic, The thirteen first characters of your message will be the phone number you want to send example:
message topic: sms
payload: +989375915077 Hello
It is highly recommended to change the default phone number in src\main\java\io\bytehala\eclipsemqtt\sample\MqttCallbackHandler.java
line 141
- OpenJDK Java 11 by Amazon (sdkman 11.0.6-amzn)
- Samsung galaxy mini s5570 SDK version 18 ( OS android, Cyanogen mod )
- Android Studio 4.1.1
I am maintaining this on my own, and as such am unable to test on multiple devices and environments.
You can support me buy contributing code, filing bugs, asking/answering questions, or buying me a coffee.
- Download the code
git clone http://www.github.com/bytehala/android-mqtt-quickstart
- Open the project in Android Studio
- Build and run it.
To test the app, you need an MQTT broker. Luckily, HiveMQ provides a free one which we can use for testing.
After successfully connecting, you can start subscribing and publishing to topics using the app.
MQTT is a messaging protocol which has applications in the Internet of Things (IoT). This sample project uses Eclipse's open-source implementation called the Paho Project. If you go to the original source where I lifted this project from, there are non-Android sample projects that use the Paho library.
This youtube video explains the MQTT for IoT at a very basic level.
Learn more about the other MQTT options such as QOS, Last Will, etc from this really helpful 12 part series by HiveMQ http://www.hivemq.com/blog/mqtt-essentials/
All you need is an MQTT broker.
This app is just piggybacking on HiveMQ's free broker.
Take note of the dependencies in this project.
org.eclipse.paho.android.service
and org.eclipse.paho.client.mqttv3
depend on the old android-support-v4, specifically the LocalBroadcastManager class.
Maybe we can migrate to mqttv5 using the plain Java library at https://github.com/eclipse/paho.mqtt.java
The eclipse sources can be found at: https://github.com/eclipse/paho.mqtt.android
Honestly, when I made an MQTT app for a client, I just built on top of this sample project.
This app was made in 2015-2016, and is a demo of how to use the Eclipse MQTT Libraries, not how to code in Android.
Architecture components are a thing now, and I strongly advise the use of ViewModel and LifecycleHook.
Definitely look at the "jetpacknav" branch which aims to transform everything into a Single-Activity application, which has been the Android recommendation since 2018. It's currently a work in progress but a clear example of how to transform legacy apps from the old Android paradigm (multiple-Activity) to the newer ones (single-Activity Jetpack).
This project uses MQTT v3 and I will be looking into using v3 and v5 in the near future.