MQTT在Android中的使用

本文介绍了MQTT协议在Android中的使用,包括MQTT的基本概念、如何配置相关依赖、以及如何进行客户端封装,强调了配置MQTT服务器地址和权限的重要性,并提供了启动服务的方法。
摘要由CSDN通过智能技术生成
MQTT简介

MQTT 是一种基于发布订阅模型的即时通讯协议,主要应用于物联网设备中

配置
  • 添加依赖
    在project的gradle中添加远程maven仓库
repositories {
    maven {
        url "https://repo.eclipse.org/content/repositories/paho-snapshots/"
    }
}
dependencies {
    implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'
    implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
}
  • 添加必要的权限
<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" />
封装

MQTT主要需要MQ服务器地址、用户名、密码、发布主题和响应主题,以及客户端唯一标识

需要注意的是服务器地址如果是IP地址的话,格式是tcp://192.168.168.101:1883,由tcp协议+ip地址+端口号
组成。若为域名的方式则只需要tcp协议+域名,端口号可忽略,默认端口是1883。

使用方法:

1.注册Service。

为了防止内存泄漏,我们使用Application的Context

2.MyMqttService.startService(BaseApplication.getContext()); //开启服务

public class MyMqttService extends Service {
   

    public final static String TAG = MyMqttService.class.getSimpleName();
    public static MqttAndroidClient mqttAndroidClient;
    private static MqttConnectOptions mMqttConnectOptions;
    public static String HOST = Config.getMqHost();//服务器地址(协议+地址+端口号)
    public String USERNAME = Config.getMqUserName();//用户名
    public String PASSWORD = Config.getMqPassWord();//密码
    public static String PUBLISH_TOPIC = Config.getMqResponseTopic();//发布主题
    public static String RESPONSE_TOPIC = Config.getMqResponseTopic();//响应主题
    public String CLIENTID = DeviceUtils.getIMEI();//设备唯一标识

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
   
        init();
        return START_NOT_STICKY;//非粘性的 service强制杀死后,不会尝试重新启动service
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
   
        return null;
    }

    /**
     * 开启服务
     */
    public static void startService(Context mContext) {
   
        mContext.startService(new Intent(mContext, MyMqttService.class));
    }

    /**
     * 发布 (模拟其他客户端发布消息)
     *
     * @param message 消息
     */
    public static void publish(String message) {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值