Я отправляю данные датчика с датчика Bosch XDK по протоколу MQTT в приложение для Android. Все работает нормально, если частота дискретизации ниже 100 Гц. Однако, когда я увеличиваю эту частоту, приложение зависает и через несколько секунд перестает отвечать на запросы. Я считаю, что это может быть проблема оптимизации кода для приложения.
Это функция для обработки входящего
Это функция для обработки входящего сообщения MQTT:
public void updateSensorValues(String mqttMessage){
try{
JSONArray jsonArray = new JSONArray(mqttMessage);
for(int i = 0;i<jsonArray.length();i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
jsonAccX.put(jsonObject.get("bma280_x"));
jsonAccY.put(jsonObject.get("bma280_y"));
jsonAccZ.put(jsonObject.get("bma280_z"));
jsonGyrX.put(jsonObject.get("bmg160_x"));
jsonGyrY.put(jsonObject.get("bmg160_y"));
jsonGyrZ.put(jsonObject.get("bmg160_z"));
jsonMagX.put(jsonObject.get("bmm150_x"));
jsonMagY.put(jsonObject.get("bmm150_y"));
jsonMagZ.put(jsonObject.get("bmm150_z"));
}
} catch (JSONException e){
System.out.println("Error " + e.getMessage());
}
}
Может кто-нибудь подсказать мне, если это проблема оптимизации в Java, или я должен получать данные реже?
Также важно упомянуть, что датчик XDK позволяет передавать только 997 символов за раз, поэтому я имеюпубликовать данные быстрее.