1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-11-29 13:26:50 +01:00

actually get weather, seems to be the only way

This commit is contained in:
Andreas Shimokawa 2015-12-28 20:55:59 +01:00
parent aa1014f51c
commit af9ee90383
2 changed files with 72 additions and 66 deletions

View File

@ -1,68 +1,18 @@
package nodomain.freeyourgadget.gadgetbridge.externalevents; package nodomain.freeyourgadget.gadgetbridge.externalevents;
import android.app.Activity;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ru.gelin.android.weather.notification.ParcelableWeather2;
public class WeatherNotificationReceiver extends BroadcastReceiver { public class WeatherNotificationReceiver extends BroadcastReceiver {
private static final Logger LOG = LoggerFactory.getLogger(WeatherNotificationReceiver.class); private static final Logger LOG = LoggerFactory.getLogger(WeatherNotificationReceiver.class);
static class Weather implements Parcelable {
// getters and setters suck ;)
public long time = 0;
public long queryTime = 0;
public int version = 0;
public String location = "";
int currentTemp = 0;
private Weather(Parcel in) {
int version = in.readInt();
if (version != 2) {
LOG.info("wrong version" + version);
return;
}
Bundle bundle = in.readBundle();
location = bundle.getString("weather_location");
time = bundle.getLong("weather_time");
queryTime = bundle.getLong("weather_query_time");
int conditions = bundle.getInt("weather_conditions");
if (conditions > 0) {
currentTemp = bundle.getInt("weather_current_temp");
}
}
public static final Creator<Weather> CREATOR = new Creator<Weather>() {
@Override
public Weather createFromParcel(Parcel in) {
return new Weather(in);
}
@Override
public Weather[] newArray(int size) {
return new Weather[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// we do not really want to use this at all
}
}
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
@ -70,22 +20,16 @@ public class WeatherNotificationReceiver extends BroadcastReceiver {
LOG.info("Wrong action"); LOG.info("Wrong action");
return; return;
} }
Bundle bundle = intent.getExtras(); ParcelableWeather2 weather = null;
try {
/* for (String key : bundle.keySet()) { weather = intent.getParcelableExtra("ru.gelin.android.weather.notification.EXTRA_WEATHER");
Object value = bundle.get(key); } catch (RuntimeException e) {
LOG.info(String.format("%s %s (%s)", key, e.printStackTrace();
value.toString(), value.getClass().getName()));
} }
if (!intent.hasExtra("ru.gelin.android.weather.notification.EXTRA_WEATHER")) {
LOG.info("no weather extra");
return;
}
Weather weather = intent.getParcelableExtra("ru.gelin.android.weather.notification.EXTRA_WEATHER");
if (weather != null) { if (weather != null) {
LOG.info("weather in " + weather.location + " is " + weather.currentTemp); LOG.info("weather in " + weather.location + " is " + (weather.currentTemp - 273) + "°C");
}*/ }
} }
} }

View File

@ -0,0 +1,62 @@
package ru.gelin.android.weather.notification;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ParcelableWeather2 implements Parcelable {
private static final Logger LOG = LoggerFactory.getLogger(ParcelableWeather2.class);
// getters and setters suck ;)
public long time = 0;
public long queryTime = 0;
public int version = 0;
public String location = "";
public int currentTemp = 0;
private ParcelableWeather2(Parcel in) {
int version = in.readInt();
if (version != 2) {
return;
}
Bundle bundle = in.readBundle(this.getClass().getClassLoader());
location = bundle.getString("weather_location");
time = bundle.getLong("weather_time");
queryTime = bundle.getLong("weather_query_time");
bundle.getString("weather_forecast_url");
int conditions = bundle.getInt("weather_conditions");
if (conditions > 0) {
Bundle conditionBundle = in.readBundle(this.getClass().getClassLoader());
conditionBundle.getString("weather_condition_text");
conditionBundle.getStringArray("weather_condition_types");
currentTemp = conditionBundle.getInt("weather_current_temp");
}
}
public static final Creator<ParcelableWeather2> CREATOR = new Creator<ParcelableWeather2>() {
@Override
public ParcelableWeather2 createFromParcel(Parcel in) {
return new ParcelableWeather2(in);
}
@Override
public ParcelableWeather2[] newArray(int size) {
return new ParcelableWeather2[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// we do not really want to use this at all
}
}