diff --git a/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/adapter/WeatherListAdapter.java b/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/adapter/WeatherListAdapter.java index 8b8ee05..115f9da 100644 --- a/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/adapter/WeatherListAdapter.java +++ b/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/adapter/WeatherListAdapter.java @@ -24,10 +24,9 @@ import java.util.List; import at.fhj.swd.dailyhelper.R; import at.fhj.swd.dailyhelper.model.Weather; +import at.fhj.swd.dailyhelper.network.DownloadImageTask; public class WeatherListAdapter extends RecyclerView.Adapter { - private ImageView imageView; - private List weathers; @@ -58,7 +57,7 @@ public class WeatherListAdapter extends RecyclerView.Adapter { - ImageView bmImage; - public DownloadImageTask(ImageView bmImage) { - this.bmImage = bmImage; - } - - protected Bitmap doInBackground(String... urls) { - String urldisplay = urls[0]; - Bitmap bmp = null; - try { - InputStream in = new java.net.URL(urldisplay).openStream(); - bmp = BitmapFactory.decodeStream(in); - } catch (Exception e) { - Log.e("Error", e.getMessage()); - e.printStackTrace(); - } - return bmp; - } - protected void onPostExecute(Bitmap result) { - bmImage.setImageBitmap(result); - } - } - - } diff --git a/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/network/DownloadImageTask.java b/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/network/DownloadImageTask.java new file mode 100644 index 0000000..056ac28 --- /dev/null +++ b/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/network/DownloadImageTask.java @@ -0,0 +1,32 @@ +package at.fhj.swd.dailyhelper.network; + +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.os.AsyncTask; +import android.util.Log; +import android.widget.ImageView; + +import java.io.InputStream; + +public class DownloadImageTask extends AsyncTask { + ImageView bmImage; + public DownloadImageTask(ImageView bmImage) { + this.bmImage = bmImage; + } + + protected Bitmap doInBackground(String... urls) { + String urldisplay = urls[0]; + Bitmap bmp = null; + try { + InputStream in = new java.net.URL(urldisplay).openStream(); + bmp = BitmapFactory.decodeStream(in); + } catch (Exception e) { + Log.e("Error", e.getMessage()); + e.printStackTrace(); + } + return bmp; + } + protected void onPostExecute(Bitmap result) { + bmImage.setImageBitmap(result); + } + } \ No newline at end of file diff --git a/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/service/LocationService.java b/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/service/LocationService.java index 82a6432..968b42c 100644 --- a/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/service/LocationService.java +++ b/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/service/LocationService.java @@ -53,6 +53,7 @@ public class LocationService extends Service { .putFloat("speed", locationResult.getLocations().get(0).getSpeed()).apply(); } + } }; diff --git a/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/ui/activity/MainActivity.java b/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/ui/activity/MainActivity.java index e4e8b52..f568681 100644 --- a/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/ui/activity/MainActivity.java +++ b/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/ui/activity/MainActivity.java @@ -44,8 +44,9 @@ public class MainActivity extends AppCompatActivity private ProgressDialog progressDialog; private SharedPreferences preferences; private WeatherFragment weatherFragment; + private HomeFragment homeFragment; private WeatherDB database; - + private NavigationView navigationView; @Override protected void onCreate(Bundle savedInstanceState) { @@ -56,6 +57,7 @@ public class MainActivity extends AppCompatActivity setSupportActionBar(toolbar); weatherFragment = new WeatherFragment(); + homeFragment = new HomeFragment(); progressDialog = new ProgressDialog(this); preferences = PreferenceManager.getDefaultSharedPreferences(this); @@ -64,7 +66,7 @@ public class MainActivity extends AppCompatActivity drawer = findViewById(R.id.drawer_layout); - NavigationView navigationView = findViewById(R.id.nav_view); + navigationView = findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( @@ -73,10 +75,13 @@ public class MainActivity extends AppCompatActivity toggle.syncState(); if(savedInstanceState == null) { - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment()).commit(); + getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,homeFragment).commit(); navigationView.setCheckedItem(R.id.nav_home); } + startLocationService(); + fetchWeather(); + } @@ -105,6 +110,8 @@ public class MainActivity extends AppCompatActivity if(requestCode == 12435){ if(grantResults[0] == PackageManager.PERMISSION_GRANTED){ startLocationService(); + fetchWeather(); + updateFragments(); } } } @@ -127,7 +134,7 @@ public class MainActivity extends AppCompatActivity switch (item.getItemId()){ case R.id.nav_home: - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment()).commit(); + getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, homeFragment).commit(); break; case R.id.nav_map: getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new MapFragment()).commit(); @@ -155,7 +162,7 @@ public class MainActivity extends AppCompatActivity return true; case R.id.action_refresh: - // fetchLocations(); + fetchWeather(); return true; @@ -168,7 +175,10 @@ public class MainActivity extends AppCompatActivity private void updateFragments() { runOnUiThread(() -> { weatherFragment.refresh(); + homeFragment.refresh(); + }); + } private void dismissProgressDialog() { @@ -176,14 +186,14 @@ public class MainActivity extends AppCompatActivity } - private void fetchWeather() { + public void fetchWeather() { HttpsGetTask httpsGetTask = new HttpsGetTask(this); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); float latitude = preferences.getFloat("latitude", -1000); float longitude = preferences.getFloat("longitude", -1000); if (latitude == -1000 || longitude == -1000) { - httpsGetTask.execute("https://api.openaq.org/v1/locations?country=AT&limit=200"); + httpsGetTask.execute("https://api.openweathermap.org/data/2.5/forecast?q=Vienna&limit=10&appid=030cadd0e9d6bdb9ae54ff0f841258ea&lang=de&units=metric"); } else { httpsGetTask.execute("https://api.openweathermap.org/data/2.5/forecast?lat="+ latitude +"&lon=" + longitude + "&appid=030cadd0e9d6bdb9ae54ff0f841258ea&lang=de&units=metric"); } @@ -217,8 +227,6 @@ public class MainActivity extends AppCompatActivity //notify fragments dismissProgressDialog(); - //TODO - updateFragments(); }).start(); diff --git a/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/ui/fragemnt/HomeFragment.java b/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/ui/fragemnt/HomeFragment.java index d7c427b..be7254e 100644 --- a/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/ui/fragemnt/HomeFragment.java +++ b/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/ui/fragemnt/HomeFragment.java @@ -2,6 +2,8 @@ package at.fhj.swd.dailyhelper.ui.fragemnt; import android.content.Context; import android.content.SharedPreferences; +import android.content.pm.PackageManager; +import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.preference.PreferenceManager; @@ -12,11 +14,14 @@ import android.support.v7.widget.CardView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import android.widget.TextView; import at.fhj.swd.dailyhelper.R; +import at.fhj.swd.dailyhelper.adapter.WeatherListAdapter; import at.fhj.swd.dailyhelper.db.room.WeatherDB; import at.fhj.swd.dailyhelper.model.Weather; +import at.fhj.swd.dailyhelper.network.DownloadImageTask; import at.fhj.swd.dailyhelper.service.LocationService; public class HomeFragment extends Fragment { @@ -40,6 +45,27 @@ public class HomeFragment extends Fragment { view = inflater.inflate(R.layout.fragment_home, container, false); context = this.getContext(); + loadPosition(); + + loadWether(); + + return view; + } + + @Override + public void onResume() { + super.onResume(); + } + + @Override + public void onPause() { + + handler.removeCallbacks(runnableCode); + super.onPause(); + } + + private void loadPosition () { + preferences = PreferenceManager.getDefaultSharedPreferences(this.getContext()); tvLongitude = view.findViewById(R.id.tv_longitude); @@ -62,40 +88,28 @@ public class HomeFragment extends Fragment { tvAltitude.setText(context.getString(R.string.altitude) +": "+ preferences.getFloat("altitude", -1000)); tvAccuracy.setText(context.getString(R.string.accuracy) +": "+ preferences.getFloat("accuracy", -1000)); + handler.postDelayed(this, 2000); } }; // Start the initial runnable task by posting through the handler handler.post(runnableCode); - - getWeather(); - - return view; } - @Override - public void onResume() { - super.onResume(); - - } - - @Override - public void onPause() { - - handler.removeCallbacks(runnableCode); - super.onPause(); - } - - private void getWeather (){ + private void loadWether (){ Weather weather; + CardView cvCardView; TextView tvDate; + ImageView imageView; TextView tvDescription; TextView tvTemperature; TextView tvHumity; + cvCardView = view.findViewById(R.id.incWeather); tvDate = view.findViewById(R.id.tvDate); + imageView = view.findViewById(R.id.card_view_image); tvDescription = view.findViewById(R.id.tvDescription); tvTemperature = view.findViewById(R.id.tvTemperature); tvHumity = view.findViewById(R.id.tvHumity); @@ -103,11 +117,24 @@ public class HomeFragment extends Fragment { weather = WeatherDB.getDatabase(getContext()).weatherDAO().getFirst(); if (weather != null) { + + cvCardView.setCardElevation(0); tvDate.setText(weather.getDate()); + + new DownloadImageTask(imageView).execute("https://openweathermap.org/img/w/" + weather.getIcon() + ".png"); + + tvDescription.setText(weather.getDescription()); tvTemperature.setText(context.getString(R.string.temperature) + ": " + weather.getTemp() + "°C"); tvHumity.setText(context.getString(R.string.humidity) + ": " + weather.getHumidity() + "%"); } } + + public void refresh(){ + loadPosition(); + loadWether(); + } + + } diff --git a/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/ui/fragemnt/WeatherFragment.java b/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/ui/fragemnt/WeatherFragment.java index 3c05b06..9161605 100644 --- a/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/ui/fragemnt/WeatherFragment.java +++ b/DailyHelper/app/src/main/java/at/fhj/swd/dailyhelper/ui/fragemnt/WeatherFragment.java @@ -44,7 +44,9 @@ public class WeatherFragment extends Fragment implements WeatherListAdapter.Item private void fetchLoctions() { WeatherListAdapter adapter = new WeatherListAdapter(WeatherDB.getDatabase(getContext()).weatherDAO().getAll(), this); - weatherList.setAdapter(adapter); + if (weatherList != null) { + weatherList.setAdapter(adapter); + } } diff --git a/DailyHelper/app/src/main/res/drawable/border.xml b/DailyHelper/app/src/main/res/drawable/border.xml index 6ac7039..284d764 100644 --- a/DailyHelper/app/src/main/res/drawable/border.xml +++ b/DailyHelper/app/src/main/res/drawable/border.xml @@ -1,7 +1,9 @@ + + android:color="@android:color/darker_gray" /> + \ No newline at end of file diff --git a/DailyHelper/app/src/main/res/layout/fragment_home.xml b/DailyHelper/app/src/main/res/layout/fragment_home.xml index f14236d..6651fb4 100644 --- a/DailyHelper/app/src/main/res/layout/fragment_home.xml +++ b/DailyHelper/app/src/main/res/layout/fragment_home.xml @@ -2,8 +2,7 @@ + android:orientation="vertical"> @@ -75,7 +74,7 @@ + layout="@layout/weather_list_item" + /> diff --git a/DailyHelper/app/src/main/res/layout/weather_list_item.xml b/DailyHelper/app/src/main/res/layout/weather_list_item.xml index 40a2f9c..4508718 100644 --- a/DailyHelper/app/src/main/res/layout/weather_list_item.xml +++ b/DailyHelper/app/src/main/res/layout/weather_list_item.xml @@ -1,5 +1,6 @@ + android:layout_height="wrap_content" + android:padding="5dp"> - - + android:layout_height="match_parent" + android:gravity="center_horizontal" + > - + + + + + @@ -42,7 +51,6 @@ @@ -50,7 +58,6 @@ diff --git a/DailyHelper/app/src/main/res/values/strings.xml b/DailyHelper/app/src/main/res/values/strings.xml index 457e7bf..0d58cd2 100644 --- a/DailyHelper/app/src/main/res/values/strings.xml +++ b/DailyHelper/app/src/main/res/values/strings.xml @@ -24,5 +24,6 @@ Position: Temp: Feuchtigkeit: + Aktuelles Wetter: - +