Skip to content

Commit

Permalink
2.221
Browse files Browse the repository at this point in the history
  • Loading branch information
WangDaYeeeeee committed Jan 18, 2019
1 parent 01c69f0 commit 79d391d
Show file tree
Hide file tree
Showing 17 changed files with 58 additions and 121 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ android {
applicationId "wangdaye.com.geometricweather"
minSdkVersion 19
targetSdkVersion 28
versionCode 2219
versionName "2.219"
versionCode 2221
versionName "2.221"
}
buildTypes {
release {
Expand Down
2 changes: 1 addition & 1 deletion app/release/output.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":2219,"versionName":"2.219","enabled":true,"outputFile":"GeometricWeather 2.219.apk","fullName":"release","baseName":"release"},"path":"GeometricWeather 2.219.apk","properties":{}}]
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":2221,"versionName":"2.221","enabled":true,"outputFile":"GeometricWeather 2.221.apk","fullName":"release","baseName":"release"},"path":"GeometricWeather 2.221.apk","properties":{}}]
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ private void initialize() {

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
chineseSource = sharedPreferences.getString(getString(R.string.key_chinese_source), "accu");
locationService = sharedPreferences.getString(getString(R.string.key_location_service), "native");
locationService = sharedPreferences.getString(getString(R.string.key_location_service), "baidu");
darkMode = sharedPreferences.getString(getString(R.string.key_dark_mode), "auto");
cardOrder = sharedPreferences.getString(getString(R.string.key_card_order), "daily_first");
colorNavigationBar = sharedPreferences.getBoolean(getString(R.string.key_navigationBar_color), false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public void buildAqi(Context c, @Nullable AccuAqiResult result) {
so2 = (int) result.SulfurDioxide;
no2 = (int) result.NitrogenDioxide;
o3 = (int) result.Ozone;
co = (int) result.CarbonMonoxide;
co = (float) result.CarbonMonoxide;
}
}

Expand All @@ -65,7 +65,11 @@ public void buildAqi(Context c, CNWeatherResult result) {
so2 = result.pm25.so2;
no2 = result.pm25.no2;
o3 = result.pm25.o3;
co = Float.parseFloat(result.pm25.co);
try {
co = Float.parseFloat(result.pm25.co);
} catch (Exception e) {
co = -1;
}
}

public void buildAqi(Context c, CaiYunMainlyResult result) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,7 @@

public class AccuWeatherService extends WeatherService {

private AccuWeatherApi weatherApi;
private AccuWeatherApi locationApi;
private AccuWeatherApi api;

private Call[] weatherCalls = new Call[6];
private Call locationCall;
Expand All @@ -62,22 +61,12 @@ public AccuWeatherService() {
// .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
.build();
client.dispatcher().setMaxRequestsPerHost(1);
this.weatherApi = new Retrofit.Builder()
.baseUrl(BuildConfig.ACCU_WEATHER_BASE_URL)
.addConverterFactory(GsonConverterFactory.create(
new GsonBuilder().setLenient().create()))
.client(client)
.build()
.create((AccuWeatherApi.class));

this.locationApi = new Retrofit.Builder()
this.api = new Retrofit.Builder()
.baseUrl(BuildConfig.ACCU_WEATHER_BASE_URL)
.addConverterFactory(GsonConverterFactory.create(
new GsonBuilder().setLenient().create()))
.client(getClientBuilder()
.addInterceptor(new GzipInterceptor())
// .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
.build())
.client(client)
.build()
.create((AccuWeatherApi.class));
}
Expand All @@ -102,7 +91,7 @@ public void requestWeather(Context context, Location location, @NonNull RequestW
public void requestLocation(Context context, final String query,
@NonNull final RequestLocationCallback callback) {
this.languageCode = LanguageUtils.getLanguageCode(context);
Call<List<AccuLocationResult>> getAccuLocation = locationApi.getWeatherLocation(
Call<List<AccuLocationResult>> getAccuLocation = api.getWeatherLocation(
"Always",
BuildConfig.ACCU_WEATHER_KEY,
query,
Expand Down Expand Up @@ -136,7 +125,7 @@ public void requestLocation(Context context, String[] queries, @NonNull RequestL
public void requestLocation(Context context, final String lat, final String lon,
@NonNull final RequestLocationCallback callback) {
this.languageCode = LanguageUtils.getLanguageCode(context);
Call<AccuLocationResult> getAccuLocationByGeoPosition = locationApi.getWeatherLocationByGeoPosition(
Call<AccuLocationResult> getAccuLocationByGeoPosition = api.getWeatherLocationByGeoPosition(
"Always",
BuildConfig.ACCU_WEATHER_KEY,
lat + "," + lon,
Expand Down Expand Up @@ -196,7 +185,7 @@ private void loadFailed(Location location, RequestWeatherCallback callback) {
@SuppressLint("SimpleDateFormat")
private void requestRealtime(final Context c, final Location location,
final RequestWeatherCallback callback) {
Call<List<AccuRealtimeResult>> getAccuRealtime = weatherApi.getRealtime(
Call<List<AccuRealtimeResult>> getAccuRealtime = api.getRealtime(
location.cityId,
BuildConfig.ACCU_CURRENT_KEY,
languageCode,
Expand Down Expand Up @@ -250,7 +239,7 @@ public void onFailure(Call<List<AccuRealtimeResult>> call, Throwable t) {

private void requestDaily(final Context c, final Location location,
final RequestWeatherCallback callback) {
Call<AccuDailyResult> getAccuDaily = weatherApi.getDaily(
Call<AccuDailyResult> getAccuDaily = api.getDaily(
location.cityId,
BuildConfig.ACCU_WEATHER_KEY,
languageCode,
Expand Down Expand Up @@ -287,7 +276,7 @@ public void onFailure(Call<AccuDailyResult> call, Throwable t) {

private void requestHourly(final Context c, final Location location,
final RequestWeatherCallback callback) {
Call<List<AccuHourlyResult>> getAccuHourly = weatherApi.getHourly(
Call<List<AccuHourlyResult>> getAccuHourly = api.getHourly(
location.cityId,
BuildConfig.ACCU_WEATHER_KEY,
languageCode,
Expand Down Expand Up @@ -321,7 +310,7 @@ public void onFailure(Call<List<AccuHourlyResult>> call, Throwable t) {

private void requestMinute(final Location location,
final RequestWeatherCallback callback) {
Call<AccuMinuteResult> getAccuMinute = weatherApi.getMinute(
Call<AccuMinuteResult> getAccuMinute = api.getMinute(
BuildConfig.ACCU_WEATHER_KEY,
languageCode,
true,
Expand Down Expand Up @@ -353,7 +342,7 @@ public void onFailure(Call<AccuMinuteResult> call, Throwable t) {

private void requestAlert(final Context c, final Location location,
final RequestWeatherCallback callback) {
Call<List<AccuAlertResult>> getAccuAlert = weatherApi.getAlert(
Call<List<AccuAlertResult>> getAccuAlert = api.getAlert(
location.cityId,
BuildConfig.ACCU_WEATHER_KEY,
languageCode,
Expand Down Expand Up @@ -387,7 +376,7 @@ public void onFailure(Call<List<AccuAlertResult>> call, Throwable t) {

private void requestAqi(final Context c, final Location location,
final RequestWeatherCallback callback) {
Call<AccuAqiResult> getAccuAqi = weatherApi.getAqi(
Call<AccuAqiResult> getAccuAqi = api.getAqi(
location.cityId,
BuildConfig.ACCU_AQI_KEY);
getAccuAqi.enqueue(new Callback<AccuAqiResult>() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public class CMWeatherProviderService extends WeatherProviderService
private LocationHelper.OnRequestLocationListener locationListener
= new LocationHelper.OnRequestLocationListener() {
@Override
public void requestLocationSuccess(Location requestLocation, boolean locationChanged) {
public void requestLocationSuccess(Location requestLocation) {
if (request != null) {
weatherHelper.requestWeather(
CMWeatherProviderService.this,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -622,7 +622,7 @@ public void onScrollChange(NestedScrollView v,
// on request location listener.

@Override
public void requestLocationSuccess(Location requestLocation, boolean locationChanged) {
public void requestLocationSuccess(Location requestLocation) {
if (!requestLocation.isUsable()) {
requestLocationFailed(requestLocation);
} else if (locationNow.equals(requestLocation)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public void onCreate(Bundle savedInstanceState) {
PreferenceManager.getDefaultSharedPreferences(getActivity())
.getString(
getString(R.string.key_location_service),
"native")));
"baidu")));
locationService.setOnPreferenceChangeListener(this);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,17 @@ protected void onRender(long interval) {
lastScrollRate = scrollRate;
} else if (isRunning() && implementor != null && rotators != null) {
lastScrollRate = scrollRate;
canvas = holder.lockCanvas();
if (canvas != null) {
implementor.draw(
MaterialWeatherView.this, canvas,
displayRate, scrollRate,
(float) rotators[0].getRotate(), (float) rotators[1].getRotate());
holder.unlockCanvasAndPost(canvas);
try {
canvas = holder.lockCanvas();
if (canvas != null) {
implementor.draw(
MaterialWeatherView.this, canvas,
displayRate, scrollRate,
(float) rotators[0].getRotate(), (float) rotators[1].getRotate());
holder.unlockCanvasAndPost(canvas);
}
} catch (Exception ignored) {
// do nothing.
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package wangdaye.com.geometricweather.utils.helpter;

import android.content.Context;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.annotation.NonNull;
Expand Down Expand Up @@ -32,12 +31,6 @@ public class LocationHelper {
private LocationService locationService;
private WeatherService weatherService;

private static final String PREFERENCE_LOCAL = "LOCAL_PREFERENCE";
private static final String KEY_OLD_DISTRICT = "OLD_DISTRICT";
private static final String KEY_OLD_CITY = "OLD_CITY";
private static final String KEY_OLD_PROVINCE = "OLD_PROVINCE";
private static final String KEY_OLD_KEY = "OLD_KEY";

private class RequestLocationListener implements LocationService.LocationCallback {
// data
private Context c;
Expand Down Expand Up @@ -81,41 +74,26 @@ public void onCompleted(@Nullable LocationService.Result result) {
}

private class AccuLocationCallback implements WeatherService.RequestLocationCallback {
// data
private Context context;

private Location location;
private OnRequestLocationListener listener;

AccuLocationCallback(Context c, Location location, @NonNull OnRequestLocationListener l) {
this.context = c;
AccuLocationCallback(Location location, @NonNull OnRequestLocationListener l) {
this.location = location;
this.listener = l;
}

@Override
public void requestLocationSuccess(String query, List<Location> locationList) {
if (locationList.size() > 0) {
if (!TextUtils.isEmpty(locationList.get(0).cityId)) {
context.getSharedPreferences(PREFERENCE_LOCAL, Context.MODE_PRIVATE)
.edit()
.putString(KEY_OLD_KEY, locationList.get(0).cityId)
.apply();
}
listener.requestLocationSuccess(locationList.get(0).setLocal(), true);
listener.requestLocationSuccess(locationList.get(0).setLocal());
} else {
requestLocationFailed(query);
}
}

@Override
public void requestLocationFailed(String query) {
context.getSharedPreferences(PREFERENCE_LOCAL, Context.MODE_PRIVATE)
.edit()
.putString(KEY_OLD_DISTRICT, "")
.putString(KEY_OLD_CITY, "")
.putString(KEY_OLD_PROVINCE, "")
.putString(KEY_OLD_KEY, "")
.apply();
listener.requestLocationFailed(location);
}
}
Expand All @@ -133,13 +111,10 @@ private class CNLocationCallback implements WeatherService.RequestLocationCallba
@Override
public void requestLocationSuccess(String query, List<Location> locationList) {
if (locationList.size() > 0) {
String oldId = location.cityId;
location.cityId = locationList.get(0).cityId;
location.city = locationList.get(0).city;
location.setLocal();
listener.requestLocationSuccess(
location,
TextUtils.isEmpty(oldId) || !oldId.equals(location.cityId));
listener.requestLocationSuccess(location);
} else {
requestLocationFailed(query);
}
Expand Down Expand Up @@ -188,41 +163,19 @@ public void requestLocation(Context c, Location location, @NonNull OnRequestLoca
private void requestAvailableWeatherLocation(Context c,
Location location,
@NonNull OnRequestLocationListener l) {
SharedPreferences sharedPreferences = c.getSharedPreferences(
PREFERENCE_LOCAL, Context.MODE_PRIVATE);
if (!location.canUseChineseSource()
|| GeometricWeather.getInstance().getChineseSource().equals("accu")) {
// use accu as weather service api.
location.source = "accu";

String oldDistrict = sharedPreferences.getString(KEY_OLD_DISTRICT, "");
String oldCity = sharedPreferences.getString(KEY_OLD_CITY, "");
String oldProvince = sharedPreferences.getString(KEY_OLD_PROVINCE, "");
String oldKey = sharedPreferences.getString(KEY_OLD_KEY, "");

if (queryEquals(location.district, oldDistrict)
&& queryEquals(location.city, oldCity)
&& queryEquals(location.province, oldProvince)
&& queryEquals(location.cityId, oldKey)) {
l.requestLocationSuccess(location, false);
return;
}

sharedPreferences.edit()
.putString(KEY_OLD_DISTRICT, location.district)
.putString(KEY_OLD_CITY, location.city)
.putString(KEY_OLD_PROVINCE, location.province)
.apply();

weatherService = new AccuWeatherService();
if (GeometricWeather.getInstance().getLocationService().equals("baidu_ip")) {
weatherService.requestLocation(
c,
TextUtils.isEmpty(location.district) ? location.city : location.district,
new AccuLocationCallback(c, location, l));
new AccuLocationCallback(location, l));
} else {
weatherService.requestLocation(
c, location.lat, location.lon, new AccuLocationCallback(c, location, l));
c, location.lat, location.lon, new AccuLocationCallback(location, l));
}
} else if (GeometricWeather.getInstance().getChineseSource().equals("cn")) {
// use cn weather net as the weather service api.
Expand Down Expand Up @@ -252,20 +205,10 @@ public void cancel() {
}
}

private boolean queryEquals(String a, String b) {
if (TextUtils.isEmpty(a) && TextUtils.isEmpty(b)) {
return true;
}
if (!TextUtils.isEmpty(a) && !TextUtils.isEmpty(b)) {
return a.equals(b);
}
return false;
}

// interface.

public interface OnRequestLocationListener {
void requestLocationSuccess(Location requestLocation, boolean locationChanged);
void requestLocationSuccess(Location requestLocation);
void requestLocationFailed(Location requestLocation);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,16 @@ public void cancel() {
}

private void requestData(int position, boolean located) {
Weather old = DatabaseHelper.getInstance(context).readWeather(locationList.get(position));
if (old != null && old.isValid(0.15F)) {
new RequestWeatherCallback(old, position)
.requestWeatherSuccess(old, null, locationList.get(position));
return;
}
if (locationList.get(position).isLocal() && !located) {
locationHelper.requestLocation(
context, locationList.get(position), new RequestLocationCallback(position));
} else {
Weather old = DatabaseHelper.getInstance(context).readWeather(locationList.get(position));
if (old != null && old.isValid(0.15F)) {
new RequestWeatherCallback(old, position)
.requestWeatherSuccess(old, null, locationList.get(position));
return;
}
weatherHelper.requestWeather(
context, locationList.get(position), new RequestWeatherCallback(old, position));
}
Expand Down Expand Up @@ -123,16 +123,9 @@ private class RequestLocationCallback implements LocationHelper.OnRequestLocatio
}

@Override
public void requestLocationSuccess(Location requestLocation, boolean locationChanged) {
public void requestLocationSuccess(Location requestLocation) {
locationList.set(position, requestLocation);

Weather old = DatabaseHelper.getInstance(context).readWeather(locationList.get(position));
if (old != null && old.isValid(0.15F) && !locationChanged) {
new RequestWeatherCallback(old, position)
.requestWeatherSuccess(old, null, locationList.get(position));
return;
}

if (requestLocation.isUsable()) {
requestData(position, true);
} else {
Expand Down
Loading

0 comments on commit 79d391d

Please sign in to comment.