in amazonfreertossdk/src/main/java/software/amazon/freertos/amazonfreertossdk/AmazonFreeRTOSDevice.java [867:899]
private void subscribeToIoT(final Subscribe subscribe) {
if (mMqttConnectionState != AmazonFreeRTOSConstants.MqttConnectionState.MQTT_Connected) {
Log.e(TAG, "Cannot subscribe because mqtt state is not connected.");
return;
}
for (int i = 0; i < subscribe.topics.size(); i++) {
try {
String topic = subscribe.topics.get(i);
Log.i(TAG, "Subscribing to IoT on topic : " + topic);
final int QoS = subscribe.qoSs.get(i);
AWSIotMqttQos qos = (QoS == 0 ? AWSIotMqttQos.QOS0 : AWSIotMqttQos.QOS1);
mIotMqttManager.subscribeToTopic(topic, qos, new AWSIotMqttNewMessageCallback() {
@Override
public void onMessageArrived(final String topic, final byte[] data) {
String message = new String(data, StandardCharsets.UTF_8);
Log.i(TAG, " Message arrived on topic: " + topic);
Log.v(TAG, " Message: " + message);
Publish publish = new Publish(
MQTT_MSG_PUBLISH,
topic,
mMessageId,
QoS,
data
);
publishToDevice(publish);
}
});
} catch (Exception e) {
Log.e(TAG, "Subscription error.", e);
}
}
}