android paho订阅主题简单解释

标签 android mqtt

我正在尝试创建一个简单的 Android 应用程序来控制我的机器人。所有通信都是使用 mqtt 和 eclipse paho for android 完成的,但我对协议(protocol)非常陌生。我找不到有关如何从订阅主题获取数据的简单说明。我找到的最好的一个是HiveMQ android tutorial 但这并没有解释如何从回调中获取数据。如有任何帮助,我们将不胜感激。

最佳答案

Android方面我用过Paho Android项目,使用起来非常简单,步骤如下:

初始化客户端,设置所需选项并连接。

MqttAndroidClient mqttClient = new MqttAndroidClient(BaseApplication.getAppContext(), broker, MQTT_CLIENT_ID);
//Set call back class
mqttClient.setCallback(new MqttCallbackHandler(BaseApplication.getAppContext()));
MqttConnectOptions connOpts = new MqttConnectOptions();
IMqttToken token = mqttClient.connect(connOpts);

订阅主题。

token.setActionCallback(new IMqttActionListener() {
  @Override
  public void onSuccess(IMqttToken arg0) {
       mqttClient.subscribe("TOPIC_NAME" + userId, 2, null, new IMqttActionListener() {
            @Override
            public void onSuccess(IMqttToken asyncActionToken) {
                Log.d(LOG_TAG, "Successfully subscribed to topic.");
            }

            @Override
            public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
                Log.d(LOG_TAG, "Failed to subscribed to topic.");
            }
        });
  }

  @Override
  public void onFailure(IMqttToken arg0, Throwable arg1) {
       Log.d(LOG_TAG, errorMsg);
  }
});

定义您的回调处理程序类。

public class MqttCallbackHandler implements MqttCallbackExtended {
    @Override
        public void connectComplete(boolean b, String s) {
            Log.w("mqtt", s);
        }

        @Override
        public void connectionLost(Throwable throwable) {

        }

        @Override
        public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
            Log.w("Anjing", mqttMessage.toString());
        }

        @Override
        public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {

        }
  }

还在 list 文件中设置以下内容。

<service android:name="org.eclipse.paho.android.service.MqttService" >
</service>

建议访问他们在 GitHub 上的项目并在线查看示例。

Eclipse Paho Android

希望这对您有所帮助。如果您有更多问题,请访问 Android step by step guide using Eclipse Paho

干杯!

关于android paho订阅主题简单解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38927374/

相关文章:

javascript - 应用程序可以在 Android 和 IOS 模拟器中运行,但在发布后不能运行

Mqtt:是否需要退订?

java - 从 Firebase 检索数据时出现 NullPointerException

android - API 中的 GridView 填充小于 10

android - 已发布的 expo 应用程序,在 iOS 上的 expo 中运行

c - 向 IOT 中心发布消息 - Eclypse Paho MQTT

java - 如果新连接带有相同的客户端 ID,是否可以在服务器端断开与相同客户端 ID 的旧 mqtt 连接?

android - 创建客户端 ID : "An unexpected error has occurred. We' re looking into it. 时“

android - 安装 MonoDevelop/Xamarin studio 4.0.8 Gtk# 版本 2.12.16

javascript - 为什么 MQTT.js 将 JSON 解析为 Uint8Array?