阿里云MQTT 客户端收发 MQTT 消息(使用一个设备控制另一个设备)

https://help.aliyun.com/document_detail/44874.html?spm=a2c4g.11186623.6.721.qxegRK
1保证只有一组用户AccessKey,怕冲突其他的可暂时禁用
(踩过的坑:域名必须是这个格式tcp://mqtt-cn-4590pc20t03.mqtt.aliyuncs.com:1883)
(踩过的坑:发送的消息分为两种,一是广播的方式:一方发送,多方接收;二是点对点式的(p2p)只能一个设备控制另一个,不可多个,即三级topic,可使用设备的物理地址作为区分,保证唯一即可String p2pTopic = topic + “/p2p/GID_wangyang8110@@@34:0a:ff:52:01:66”)
最大的一个坑:测试接收消息的时候发现总是不执行messageArrived,其实应该先点击接收消息出现messageArrived,此时点击发送消息,即可看到接收端的日志。取出消息的api是new String(mqttMessage.getPayload())
2 发送消息代码,acessKey secretKey 并不真实,已做处理。

public class MainActivity extends AppCompatActivity {
   
   
    /**
     * 设置当前用户私有的MQTT的接入点。例如此处示意使用XXX,实际使用请替换用户自己的接入点。接入点的获取方法是,在控制台申请MQTT实例,每个实例都会分配一个接入点域名。
     */
//        final String broker ="tcp://XXXX.mqtt.aliyuncs.com:1883";
    final String broker = "tcp://mqtt-cn-4590pc20t03.mqtt.aliyuncs.com:1883";
    /**
     * 设置阿里云的AccessKey,用于鉴权
     */
    final String acessKey = "LTAI2jtCdfgOCbJaY1";
    /**
     * 设置阿里云的SecretKey,用于鉴权
     */
    final String secretKey = "FPqp6oQ2JWCEZ6PlxN9eI42wPfnecLZD32";
    /**
     * 发消息使用的一级Topic,需要先在MQ控制台里申请
     */
    final String topic = "wy1";
    /**
     * MQTT的ClientID,一般由两部分组成,GroupID@@@DeviceID
     * 其中GroupID在MQ控制台里申请
     * DeviceID由应用方设置,可能是设备编号等,需要唯一,否则服务端拒绝重复的ClientID连接
     */
//        final String clientId ="GID_XXX@@@ClientID_XXXX";
    String clientId;
    String sign;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        clientId = "GID_wangyang8110@@@" + getWlanId();
        Log.e("1", "clientId: "+ clientId);
    }

    private String getWlanId() {
        WifiManager wm = (WifiManager) getApplicationContext().getSystemService(getApplicationContext().WIFI_SERVICE);
        String m_szWLANMAC = wm.getConnectionInfo().getMacAddress();
        
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值