赞
踩
现在物联网很多都是使用的MQTT消息,在手机和设备之间通过MQTT协议通信,Android发送MQTT消息就会用得比较多。
你需要在你的build.gradle
文件中添加MQTT客户端库。一个常用的库是Eclipse Paho
,你可以这样添加依赖:
- dependencies {
- implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5'
- }
在AndroidManifest.xml中增加:
- <!--网络权限-->
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
在视图文件中增加按钮。
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:orientation="horizontal">
- <Button
- android:id="@+id/btnTest"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
- android:text="测试"
- android:textAlignment="center" />
- </LinearLayout>
-
- 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;
-
- ... ...
-
- btnTest.setOnClickListener(view -> {
-
- new Thread(() -> {
- String context = "tcp://broker.emqx.io:1883";
- String clientId = "mqttx_20240804-android";
- String username = "username";
- String password = "password";
- String topic = "mqttx_20240804";
- try {
- MqttClient client = new MqttClient(context, clientId, new MemoryPersistence());
- MqttConnectOptions options = new MqttConnectOptions();
- options.setCleanSession(true);
- options.setUserName(username);
- options.setPassword(password.toCharArray());
- client.connect(options);
-
- String action = "hello";
- MqttMessage message = new MqttMessage(action.getBytes());
- message.setQos(0);
- client.publish(topic, message);
-
- Message handlerMsg = new Message();
- handlerMsg.what = 1;
- handlerMsg.obj = action;
- handler.sendMessage(handlerMsg);
-
- } catch (MqttException e) {
- Message message = new Message();
- message.what = 2;
- message.obj = e.getMessage();
- handler.sendMessage(message);
- }
- }).start();
-
- });
- public Handler handler = new Handler() {
- @SuppressLint("HandlerLeak")
- @Override
- public void handleMessage(Message msg) {
- String text = msg.obj.toString();
- switch (msg.what) {
- case 1:
- Toast.makeText(ConfigActivity.this, "发送成功", Toast.LENGTH_SHORT).show();
- break;
- case 2:
- Toast.makeText(ConfigActivity.this, "抱歉,发送异常:" + text, Toast.LENGTH_SHORT).show();
- break;
- }
- }
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。