我正在尝试创建一个简单的 Android 应用程序来控制我的机器人。所有通信都是使用 mqtt 和 eclipse paho for android 完成的,但我对该协议非常陌生。我找不到如何从订阅主题获取数据的简单解释。我发现的最好的一个是HiveMQ android 教程 ,但它没有解释如何从回调中获取数据。任何援助将不胜感激。
对于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);
Run Code Online (Sandbox Code Playgroud)
订阅主题。
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);
}
});
Run Code Online (Sandbox Code Playgroud)
定义您的回调处理程序类。
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) {
}
}
Run Code Online (Sandbox Code Playgroud)
还在清单文件中设置以下内容。
<service android:name="org.eclipse.paho.android.service.MqttService" >
</service>
Run Code Online (Sandbox Code Playgroud)
建议访问他们在 GitHub 上的项目并在线查看示例。
希望这有帮助。如果您有更多问题,请访问 使用 Eclipse Paho 的 Android 分步指南
干杯!
| 归档时间: |
|
| 查看次数: |
4016 次 |
| 最近记录: |