From 84494ab68d2113cb081ffeb65056242db768e9ba Mon Sep 17 00:00:00 2001 From: Daniel Weschke Date: Sun, 31 Mar 2019 21:44:35 +0200 Subject: [PATCH] add landscape version of main native activity move host string of data servers to resources --- app/src/main/AndroidManifest.xml | 3 +- .../MainNativeActivity.java | 216 +++++-- .../res/layout-land/activity_main_native.xml | 526 ++++++++++++++++++ app/src/main/res/values/strings.xml | 3 + 4 files changed, 702 insertions(+), 46 deletions(-) create mode 100644 app/src/main/res/layout-land/activity_main_native.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 458aecc..f2b2f2d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -32,8 +32,7 @@ + android:label="@string/app_name"> diff --git a/app/src/main/java/de/weseng/wifiweatherstation/MainNativeActivity.java b/app/src/main/java/de/weseng/wifiweatherstation/MainNativeActivity.java index 8ff4106..1f5e7a2 100644 --- a/app/src/main/java/de/weseng/wifiweatherstation/MainNativeActivity.java +++ b/app/src/main/java/de/weseng/wifiweatherstation/MainNativeActivity.java @@ -27,6 +27,9 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.text.ParseException; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; @@ -99,45 +102,170 @@ public class MainNativeActivity extends AppCompatActivity { } }); - TextView tv = findViewById(R.id.textViewWeatherOutdoor); - tv.setText(Html.fromHtml(getString(R.string.weather_outdoor), Html.FROM_HTML_MODE_COMPACT)); + TextView tvo = findViewById(R.id.textViewWeatherOutdoor); + tvo.setText(Html.fromHtml(getString(R.string.weather_outdoor), Html.FROM_HTML_MODE_COMPACT)); - if (savedInstanceState == null) { - String urlPre = ""; - if (SettingsActivity.isLocal(getApplicationContext())) { - //Toast.makeText(getApplicationContext(), "intern", Toast.LENGTH_LONG).show(); - if (urlLocal != null && urlLocal.length() > 0) - urlPre = urlLocal.substring(urlLocal.length() - 1).equals("/") ? urlLocal : urlLocal + "/"; - } else { - //Toast.makeText(getApplicationContext(), "external", Toast.LENGTH_LONG).show(); - if (urlGlobal != null && urlGlobal.length() > 0) - urlPre = urlGlobal.substring(urlGlobal.length() - 1).equals("/") ? urlGlobal : urlGlobal + "/"; - } - executeAsyncTask(new GetData(R.id.textViewTemperatureValue1, R.id.textViewHumidityValue1), - urlPre + "api.php?host=192.168.1.71&last"); - executeAsyncTask(new GetData(R.id.textViewTemperatureValue2, R.id.textViewHumidityValue2), - urlPre + "api.php?host=192.168.1.72&last"); - executeAsyncTask(new GetData(R.id.textViewTemperatureValue3, R.id.textViewHumidityValue3), - urlPre + "api.php?host=192.168.1.73&last"); - - executeAsyncTask(new OpenWeatherMap(R.id.textViewWeatherOutdoor), urlPre + "openweathermap/api.php"); - - endlessTasks.add(new GetData(R.id.textViewTemperatureValue1, R.id.textViewHumidityValue1, - R.id.textViewTemperatureMin1, R.id.textViewTemperatureMax1, R.id.textViewTemperatureDelta1, - R.id.textViewHumidityMin1, R.id.textViewHumidityMax1, R.id.textViewHumidityDelta1, - true, dataListStringTemp1, dataListStringHumidity1)); - endlessTasks.add(new GetData(R.id.textViewTemperatureValue2, R.id.textViewHumidityValue2, - R.id.textViewTemperatureMin2, R.id.textViewTemperatureMax2, R.id.textViewTemperatureDelta2, - R.id.textViewHumidityMin2, R.id.textViewHumidityMax2, R.id.textViewHumidityDelta2, - true, dataListStringTemp2, dataListStringHumidity2)); - endlessTasks.add(new GetData(R.id.textViewTemperatureValue3, R.id.textViewHumidityValue3, - R.id.textViewTemperatureMin3, R.id.textViewTemperatureMax3, R.id.textViewTemperatureDelta3, - R.id.textViewHumidityMin3, R.id.textViewHumidityMax3, R.id.textViewHumidityDelta3, - true, dataListStringTemp3, dataListStringHumidity3)); - executeAsyncTask(endlessTasks.get(0), urlPre + "api.php?host=192.168.1.71&day"); - executeAsyncTask(endlessTasks.get(1), urlPre + "api.php?host=192.168.1.72&day"); - executeAsyncTask(endlessTasks.get(2), urlPre + "api.php?host=192.168.1.73&day"); + String urlPre = ""; + if (SettingsActivity.isLocal(getApplicationContext())) { + //Toast.makeText(getApplicationContext(), "intern", Toast.LENGTH_LONG).show(); + if (urlLocal != null && urlLocal.length() > 0) + urlPre = urlLocal.substring(urlLocal.length() - 1).equals("/") ? urlLocal : urlLocal + "/"; + } else { + //Toast.makeText(getApplicationContext(), "external", Toast.LENGTH_LONG).show(); + if (urlGlobal != null && urlGlobal.length() > 0) + urlPre = urlGlobal.substring(urlGlobal.length() - 1).equals("/") ? urlGlobal : urlGlobal + "/"; } + + /* + * Restore saved state of orientation change + */ + if (savedInstanceState != null) { + CharSequence cs; + String s; + Color color; + TextView tv; + float f; + ArrayList alt = new ArrayList<>(); + alt.add(R.id.textViewTemperatureValue1); + alt.add(R.id.textViewTemperatureValue2); + alt.add(R.id.textViewTemperatureValue3); + for (int i : alt) { + cs = savedInstanceState.getCharSequence(String.valueOf(i)); + tv = findViewById(i); + tv.setText(cs); + s = cs.toString(); + if (!s.equals(getString(R.string.dummy_value))) { + NumberFormat nf = new DecimalFormat("0.#"); + try { + f = nf.parse(s).floatValue(); + color = valueToColor(f, 17, 19, 23, 25, blue, green, red); + tv.setTextColor(color.toArgb()); + } catch (ParseException e) { + e.printStackTrace(); + } + } + } + ArrayList alh = new ArrayList<>(); + alh.add(R.id.textViewHumidityValue1); + alh.add(R.id.textViewHumidityValue2); + alh.add(R.id.textViewHumidityValue3); + for (int i : alh) { + cs = savedInstanceState.getCharSequence(String.valueOf(i)); + tv = findViewById(i); + tv.setText(cs); + s = cs.toString(); + if (!s.equals(getString(R.string.dummy_value))) { + NumberFormat nf = new DecimalFormat("0.#"); + try { + f = nf.parse(s).floatValue(); + color = valueToColor(f, 25, 40, 60, 75, red, green, blue); + tv.setTextColor(color.toArgb()); + } catch (ParseException e) { + e.printStackTrace(); + } + } + } + ArrayList alm = new ArrayList<>(); + alm.add(R.id.textViewTemperatureMin1); + alm.add(R.id.textViewTemperatureMin2); + alm.add(R.id.textViewTemperatureMin3); + alm.add(R.id.textViewTemperatureMax1); + alm.add(R.id.textViewTemperatureMax2); + alm.add(R.id.textViewTemperatureMax3); + alm.add(R.id.textViewTemperatureDelta1); + alm.add(R.id.textViewTemperatureDelta2); + alm.add(R.id.textViewTemperatureDelta3); + alm.add(R.id.textViewHumidityMin1); + alm.add(R.id.textViewHumidityMin2); + alm.add(R.id.textViewHumidityMin3); + alm.add(R.id.textViewHumidityMax1); + alm.add(R.id.textViewHumidityMax2); + alm.add(R.id.textViewHumidityMax3); + alm.add(R.id.textViewHumidityDelta1); + alm.add(R.id.textViewHumidityDelta2); + alm.add(R.id.textViewHumidityDelta3); + alm.add(R.id.textViewWeatherOutdoor); + for (int i : alm) { + cs = savedInstanceState.getCharSequence(String.valueOf(i)); + tv = findViewById(i); + tv.setText(cs); + } + dataListStringTemp1 = savedInstanceState.getStringArrayList(String.valueOf("dataListStringTemp1")); + dataListStringTemp2 = savedInstanceState.getStringArrayList(String.valueOf("dataListStringTemp2")); + dataListStringTemp3 = savedInstanceState.getStringArrayList(String.valueOf("dataListStringTemp3")); + dataListStringHumidity1 = savedInstanceState.getStringArrayList(String.valueOf("dataListStringHumidity1")); + dataListStringHumidity2 = savedInstanceState.getStringArrayList(String.valueOf("dataListStringHumidity2")); + dataListStringHumidity3 = savedInstanceState.getStringArrayList(String.valueOf("dataListStringHumidity3")); + } + + executeAsyncTask(new GetData(R.id.textViewTemperatureValue1, R.id.textViewHumidityValue1), + urlPre + "api.php?host=" + getString(R.string.host_data_server_1) + "&last"); + executeAsyncTask(new GetData(R.id.textViewTemperatureValue2, R.id.textViewHumidityValue2), + urlPre + "api.php?host=" + getString(R.string.host_data_server_2) + "&last"); + executeAsyncTask(new GetData(R.id.textViewTemperatureValue3, R.id.textViewHumidityValue3), + urlPre + "api.php?host=" + getString(R.string.host_data_server_3) + "&last"); + + executeAsyncTask(new OpenWeatherMap(R.id.textViewWeatherOutdoor), urlPre + "openweathermap/api.php"); + + endlessTasks.add(new GetData(R.id.textViewTemperatureValue1, R.id.textViewHumidityValue1, + R.id.textViewTemperatureMin1, R.id.textViewTemperatureMax1, R.id.textViewTemperatureDelta1, + R.id.textViewHumidityMin1, R.id.textViewHumidityMax1, R.id.textViewHumidityDelta1, + true, dataListStringTemp1, dataListStringHumidity1)); + endlessTasks.add(new GetData(R.id.textViewTemperatureValue2, R.id.textViewHumidityValue2, + R.id.textViewTemperatureMin2, R.id.textViewTemperatureMax2, R.id.textViewTemperatureDelta2, + R.id.textViewHumidityMin2, R.id.textViewHumidityMax2, R.id.textViewHumidityDelta2, + true, dataListStringTemp2, dataListStringHumidity2)); + endlessTasks.add(new GetData(R.id.textViewTemperatureValue3, R.id.textViewHumidityValue3, + R.id.textViewTemperatureMin3, R.id.textViewTemperatureMax3, R.id.textViewTemperatureDelta3, + R.id.textViewHumidityMin3, R.id.textViewHumidityMax3, R.id.textViewHumidityDelta3, + true, dataListStringTemp3, dataListStringHumidity3)); + executeAsyncTask(endlessTasks.get(0), urlPre + "api.php?host=" + getString(R.string.host_data_server_1) + "&day"); + executeAsyncTask(endlessTasks.get(1), urlPre + "api.php?host=" + getString(R.string.host_data_server_2) + "&day"); + executeAsyncTask(endlessTasks.get(2), urlPre + "api.php?host=" + getString(R.string.host_data_server_3) + "&day"); + } + + /** + * Save state for orientation change + */ + protected void onSaveInstanceState(Bundle savedInstanceState) { + super.onSaveInstanceState(savedInstanceState); + ArrayList al = new ArrayList<>(); + al.add(R.id.textViewTemperatureValue1); + al.add(R.id.textViewTemperatureValue2); + al.add(R.id.textViewTemperatureValue3); + al.add(R.id.textViewTemperatureMin1); + al.add(R.id.textViewTemperatureMin2); + al.add(R.id.textViewTemperatureMin3); + al.add(R.id.textViewTemperatureMax1); + al.add(R.id.textViewTemperatureMax2); + al.add(R.id.textViewTemperatureMax3); + al.add(R.id.textViewTemperatureDelta1); + al.add(R.id.textViewTemperatureDelta2); + al.add(R.id.textViewTemperatureDelta3); + al.add(R.id.textViewHumidityValue1); + al.add(R.id.textViewHumidityValue2); + al.add(R.id.textViewHumidityValue3); + al.add(R.id.textViewHumidityMin1); + al.add(R.id.textViewHumidityMin2); + al.add(R.id.textViewHumidityMin3); + al.add(R.id.textViewHumidityMax1); + al.add(R.id.textViewHumidityMax2); + al.add(R.id.textViewHumidityMax3); + al.add(R.id.textViewHumidityDelta1); + al.add(R.id.textViewHumidityDelta2); + al.add(R.id.textViewHumidityDelta3); + al.add(R.id.textViewWeatherOutdoor); + TextView tv; + for (int i : al) { + tv = findViewById(i); + savedInstanceState.putCharSequence(String.valueOf(i), tv.getText()); + } + savedInstanceState.putStringArrayList("dataListStringTemp1", dataListStringTemp1); + savedInstanceState.putStringArrayList("dataListStringTemp2", dataListStringTemp2); + savedInstanceState.putStringArrayList("dataListStringTemp3", dataListStringTemp3); + savedInstanceState.putStringArrayList("dataListStringHumidity1", dataListStringHumidity1); + savedInstanceState.putStringArrayList("dataListStringHumidity2", dataListStringHumidity2); + savedInstanceState.putStringArrayList("dataListStringHumidity3", dataListStringHumidity3); } @Override @@ -229,12 +357,12 @@ public class MainNativeActivity extends AppCompatActivity { GetData(int v1, int v2, int min1, int max1, int delta1, int min2, int max2, int delta2) { this(v1, v2); - idMin1 = min1; - idMax1 = max1; - idDelta1 = delta1; - idMin2 = min2; - idMax2 = max2; - idDelta2 = delta2; + this.idMin1 = min1; + this.idMax1 = max1; + this.idDelta1 = delta1; + this.idMin2 = min2; + this.idMax2 = max2; + this.idDelta2 = delta2; } /* @@ -257,7 +385,7 @@ public class MainNativeActivity extends AppCompatActivity { super.onPreExecute(); // Showing progress bar pBar = findViewById(R.id.progressBar); - if (pBar.getVisibility() == View.INVISIBLE) { + if (pBar.getVisibility() == View.INVISIBLE && pBarLockCount != 0) { pBar.setVisibility(View.VISIBLE); } if (endless) { diff --git a/app/src/main/res/layout-land/activity_main_native.xml b/app/src/main/res/layout-land/activity_main_native.xml new file mode 100644 index 0000000..6abae79 --- /dev/null +++ b/app/src/main/res/layout-land/activity_main_native.xml @@ -0,0 +1,526 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 968f13b..40890cb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -59,6 +59,9 @@ Local URL http://inetsrv.no-ip.org/site/wifi-weather-station/ Global URL + 192.168.1.71 + 192.168.1.72 + 192.168.1.73 Sign in Email