From cb7db29f875a927e80eb598b289870f05bd01172 Mon Sep 17 00:00:00 2001 From: valentin Date: Sun, 15 Nov 2020 15:27:05 +0100 Subject: [PATCH] Update of all weather Classes (Some deleted, some modified) Setup of Retrofit API and API Interface Added test TextView2 on activity_temparature.xml in order to test API answer Display Paris weather description on any city we click for the moment. --- app/src/main/AndroidManifest.xml | 2 +- .../vj/apps/myweather/ShowTemparature.java | 39 +++++++++++++++++++ .../vj/apps/myweather/network/ApiClient.java | 11 ------ .../vj/apps/myweather/network/Get.java | 4 -- .../myweather/network/JsonApiInterfce.java | 13 +++++++ .../vj/apps/myweather/weather/Coord.java | 16 -------- .../vj/apps/myweather/weather/Temps.java | 17 ++++++++ .../vj/apps/myweather/weather/Weather.java | 32 +++++++++++++-- .../myweather/weather/WeatherDescription.java | 7 ++++ .../main/res/layout/activity_temparature.xml | 10 +++++ 10 files changed, 116 insertions(+), 35 deletions(-) delete mode 100644 app/src/main/java/fr/romanet/vj/apps/myweather/network/ApiClient.java delete mode 100644 app/src/main/java/fr/romanet/vj/apps/myweather/network/Get.java create mode 100644 app/src/main/java/fr/romanet/vj/apps/myweather/network/JsonApiInterfce.java delete mode 100644 app/src/main/java/fr/romanet/vj/apps/myweather/weather/Coord.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aa2b8d9..e72f0a8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,5 +29,5 @@ - + \ No newline at end of file diff --git a/app/src/main/java/fr/romanet/vj/apps/myweather/ShowTemparature.java b/app/src/main/java/fr/romanet/vj/apps/myweather/ShowTemparature.java index 9cf0924..b422529 100644 --- a/app/src/main/java/fr/romanet/vj/apps/myweather/ShowTemparature.java +++ b/app/src/main/java/fr/romanet/vj/apps/myweather/ShowTemparature.java @@ -8,16 +8,25 @@ import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; +import android.widget.TextView; import java.util.ArrayList; import java.util.List; import fr.romanet.vj.apps.myweather.bo.City; +import fr.romanet.vj.apps.myweather.network.JsonApiInterfce; import fr.romanet.vj.apps.myweather.repository.CityRepository; +import fr.romanet.vj.apps.myweather.weather.Weather; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; public class ShowTemparature extends AppCompatActivity { private String currentCityName; + private TextView textView2; @Override protected void onCreate(Bundle savedInstanceState) { @@ -32,6 +41,36 @@ public class ShowTemparature extends AppCompatActivity { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); + + textView2 = (TextView) findViewById(R.id.textView2); + + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("https://api.openweathermap.org/data/2.5/") + .addConverterFactory(GsonConverterFactory.create()) + .build(); + + JsonApiInterfce jsonApiInterfce = retrofit.create(JsonApiInterfce.class); + Call call = jsonApiInterfce.getPost(); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if(! response.isSuccessful()){ + textView2.setText("Code: " + response.code()); + return; + } + + Weather weather = response.body(); + textView2.append(weather.get_weatherDescription().get_description()); + + } + + @Override + public void onFailure(Call call, Throwable t) { + textView2.setText("Error: " + t.getMessage()); + } + }); + } @Override diff --git a/app/src/main/java/fr/romanet/vj/apps/myweather/network/ApiClient.java b/app/src/main/java/fr/romanet/vj/apps/myweather/network/ApiClient.java deleted file mode 100644 index 0960d3b..0000000 --- a/app/src/main/java/fr/romanet/vj/apps/myweather/network/ApiClient.java +++ /dev/null @@ -1,11 +0,0 @@ -package fr.romanet.vj.apps.myweather.network; - -import retrofit2.Retrofit; - -public class ApiClient { - Retrofit retrofit = new Retrofit.Builder() - .baseUrl("https://api.github.com/") - .build(); - - GitHubService service = retrofit.create(GitHubService.class); -} diff --git a/app/src/main/java/fr/romanet/vj/apps/myweather/network/Get.java b/app/src/main/java/fr/romanet/vj/apps/myweather/network/Get.java deleted file mode 100644 index 81c5f17..0000000 --- a/app/src/main/java/fr/romanet/vj/apps/myweather/network/Get.java +++ /dev/null @@ -1,4 +0,0 @@ -package fr.romanet.vj.apps.myweather.network; - -public class Get { -} diff --git a/app/src/main/java/fr/romanet/vj/apps/myweather/network/JsonApiInterfce.java b/app/src/main/java/fr/romanet/vj/apps/myweather/network/JsonApiInterfce.java new file mode 100644 index 0000000..a4414a4 --- /dev/null +++ b/app/src/main/java/fr/romanet/vj/apps/myweather/network/JsonApiInterfce.java @@ -0,0 +1,13 @@ +package fr.romanet.vj.apps.myweather.network; + +import fr.romanet.vj.apps.myweather.weather.Weather; +import retrofit2.Call; +import retrofit2.http.GET; + +public interface JsonApiInterfce { + +// @GET("?q=madrid&units=metric&appid=0ac5802392867db8e1ae4f91529f7890"); + + @GET("weather?q=paris&units=metric&appid=0ac5802392867db8e1ae4f91529f7890") + Call getPost(); +} diff --git a/app/src/main/java/fr/romanet/vj/apps/myweather/weather/Coord.java b/app/src/main/java/fr/romanet/vj/apps/myweather/weather/Coord.java deleted file mode 100644 index 669cf1f..0000000 --- a/app/src/main/java/fr/romanet/vj/apps/myweather/weather/Coord.java +++ /dev/null @@ -1,16 +0,0 @@ -package fr.romanet.vj.apps.myweather.weather; - -import com.google.gson.annotations.SerializedName; - -public class Coord { - - @SerializedName("lon") - private String _lon; - @SerializedName("lat") - private String _lat; - - public Coord(String lon, String lat){ - _lon = lon; - _lat = lat; - } -} diff --git a/app/src/main/java/fr/romanet/vj/apps/myweather/weather/Temps.java b/app/src/main/java/fr/romanet/vj/apps/myweather/weather/Temps.java index 548ee37..0c90d8b 100644 --- a/app/src/main/java/fr/romanet/vj/apps/myweather/weather/Temps.java +++ b/app/src/main/java/fr/romanet/vj/apps/myweather/weather/Temps.java @@ -19,4 +19,21 @@ public class Temps { _temp_min = temp_min; _temp_max = temp_max; } + + + public String get_temp() { + return _temp; + } + + public String get_temp_feels_like() { + return _temp_feels_like; + } + + public String get_temp_min() { + return _temp_min; + } + + public String get_temp_max() { + return _temp_max; + } } diff --git a/app/src/main/java/fr/romanet/vj/apps/myweather/weather/Weather.java b/app/src/main/java/fr/romanet/vj/apps/myweather/weather/Weather.java index 6d49198..c0daf7a 100644 --- a/app/src/main/java/fr/romanet/vj/apps/myweather/weather/Weather.java +++ b/app/src/main/java/fr/romanet/vj/apps/myweather/weather/Weather.java @@ -2,13 +2,39 @@ package fr.romanet.vj.apps.myweather.weather; import com.google.gson.annotations.SerializedName; +import java.util.List; + public class Weather { - @SerializedName("coord") - private Coord _coord; @SerializedName("main") private Temps _temps; @SerializedName("weather") - private WeatherDescription _weatherDescription; + private List _weatherDescription; + @SerializedName("name") + private String _city_name; + @SerializedName("id") + private String _city_id; + public Weather(Temps temps, List weatherDescription, String city_name, String city_id){ + _temps = temps; + _weatherDescription = weatherDescription; + _city_name = city_name; + _city_id = city_id; + } + + public Temps get_temps() { + return _temps; + } + + public WeatherDescription get_weatherDescription() { + return _weatherDescription.get(0); + } + + public String get_city_name() { + return _city_name; + } + + public String get_city_id() { + return _city_id; + } } diff --git a/app/src/main/java/fr/romanet/vj/apps/myweather/weather/WeatherDescription.java b/app/src/main/java/fr/romanet/vj/apps/myweather/weather/WeatherDescription.java index 50386c9..4d0504f 100644 --- a/app/src/main/java/fr/romanet/vj/apps/myweather/weather/WeatherDescription.java +++ b/app/src/main/java/fr/romanet/vj/apps/myweather/weather/WeatherDescription.java @@ -14,4 +14,11 @@ public class WeatherDescription { _icon = icon; } + public String get_description() { + return _description; + } + + public String get_icon() { + return _icon; + } } diff --git a/app/src/main/res/layout/activity_temparature.xml b/app/src/main/res/layout/activity_temparature.xml index fdb549b..cc139bf 100644 --- a/app/src/main/res/layout/activity_temparature.xml +++ b/app/src/main/res/layout/activity_temparature.xml @@ -7,6 +7,7 @@ tools:context=".ShowTemparature"> + + \ No newline at end of file