- Сообщения
- 465
- Реакции
- 909
- Баллы
- 208
- Ваше "умное" устройство
- Amazfit Bip
Пытаюсь ковырять получение данных о погоде в Мифит и изменение их значений.
Нашел в классе com.xiaomi.hm.health.r.j метод, который получает текущую погоду с серверов Xiaomi:
Как видно, метод a возвращает строку с результатом обращения к
Выхлоп в таком виде:
Заменил с помощью xposed значение температуры. В отладке я вижу, что выхлоп метода изменилсятак как мне надо. Но на часах я все равно вижу погоду, которая пришла от сервера Xiaomi. Спрашивается какого фига. Может я не там копаю? Вообщем, хотелось бы услышать мнение компетентных людей.
Так пока отбой.
Похоже мой код где-то сбоит. Обрезал "сложный" код получения данных с Яндекса и записал значение 100 напрямую в выхлоп. На часах увидел тоже 100. Ну по крайне мере буду знать, что место правильное. Тему можно удалить..
Нашел в классе com.xiaomi.hm.health.r.j метод, который получает текущую погоду с серверов Xiaomi:
Java:
private static String b() {
return "https://weatherapi.market.xiaomi.com/wtr-v3/weather/current?appKey=watch20161010&sign=j9PMzsOIAw0bN8eE";
}
static com.xiaomi.hm.health.r.a.e a(String str, boolean z) {
HashMap hashMap = new HashMap();
hashMap.put("locationKey", str);
hashMap.put("isGlobal", Boolean.toString(z));
hashMap.put("locale", g());
Object a = a(b(), hashMap);
if (!TextUtils.isEmpty(a)) {
try {
return (com.xiaomi.hm.health.r.a.e) new e().a(a, com.xiaomi.hm.health.r.a.e.class);
} catch (Exception e) {
a.c("WeatherWebAPI", "getWeatherRealtime:" + e.getMessage());
}
}
return null;
}
private static String a(final String str, HashMap<String, String> hashMap) {
final StringBuilder stringBuilder = new StringBuilder();
a.get(str, new RequestParams(hashMap), new AsyncHttpResponseHandler() {
public void onSuccess(int i, Header[] headerArr, byte[] bArr) {
a.c("WeatherWebAPI", "=========================onSuccess=========================");
a.c("WeatherWebAPI", "url : " + str);
a.c("WeatherWebAPI", "statusCode : " + i);
if (!(i == 200 || a.a() == null)) {
com.huami.mifit.a.a.a(a.a(), "Weather_Request_Fail", String.valueOf(i));
}
try {
stringBuilder.append(new String(bArr));
a.d("WeatherWebAPI", "responseBody : " + stringBuilder.toString());
} catch (Exception e) {
a.c("WeatherWebAPI", "exception : " + e.getMessage());
}
a.c("WeatherWebAPI", "=========================onSuccess=========================");
}
public void onFailure(int i, Header[] headerArr, byte[] bArr, Throwable th) {
a.c("WeatherWebAPI", "=========================onFailure=========================");
a.c("WeatherWebAPI", "url : " + str);
a.c("WeatherWebAPI", "statusCode : " + i);
a.c("WeatherWebAPI", "error : " + th.getMessage());
a.c("WeatherWebAPI", "=========================onFailure=========================");
if (a.a() != null) {
com.huami.mifit.a.a.a(a.a(), "Weather_Request_Fail", String.valueOf(i));
}
}
});
return stringBuilder.toString();
}
Выхлоп в таком виде:
JSON:
{
"feelsLike":{
"unit":"℃",
"value":"-0.4"
},
"humidity":{
"unit":"%",
"value":"51"
},
"pressure":{
"unit":"mb",
"value":"1011.3"
},
"pubTime":"2018-05-03T10:20:00-07:00",
"temperature":{
"unit":"℃",
"value":"2"
},
"uvIndex":"1",
"visibility":{
"unit":"km",
"value":""
},
"weather":"1",
"wind":{
"direction":{
"unit":"°",
"value":"203"
},
"speed":{
"unit":"km/h",
"value":"13.6"
}
}
}
Авто объединение сообщений:
Так пока отбой.

Последнее редактирование модератором: