diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index be6bcbb2..d1b4ae06 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -318,6 +318,7 @@ Please preserve the xml tags and the utf8 encoding. WLAN Verbindung benötigt Falls aktiviert, wird der Radiowecker nur mit einer WLAN-Verbindung gestartet. Suchen + Der Server ist nicht erreichbar. Der Sender ist nicht erreichbar. Bewertung abgeben Über eine Bewertung der App würden wir uns freuen. diff --git a/res/values/strings.xml b/res/values/strings.xml index 36281090..a22c3204 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -316,6 +316,7 @@ OR require WiFi connection If on, alarms will play web radio streams only with an established WiFi connection. Search + The Server is not reachable. The URL is not reachable. Illuminance threshold The screen is reactivated if the threshold value of illuminance is exceeded. diff --git a/src/com/firebirdberlin/nightdream/ui/RadioStreamDialog.java b/src/com/firebirdberlin/nightdream/ui/RadioStreamDialog.java index d9d2ff0f..68555696 100644 --- a/src/com/firebirdberlin/nightdream/ui/RadioStreamDialog.java +++ b/src/com/firebirdberlin/nightdream/ui/RadioStreamDialog.java @@ -1,7 +1,9 @@ package com.firebirdberlin.nightdream.ui; +import android.app.Activity; import android.content.Context; +import android.content.ContextWrapper; import android.content.res.Resources; import android.graphics.Color; import android.graphics.drawable.GradientDrawable; @@ -19,6 +21,7 @@ import android.widget.ListView; import android.widget.Spinner; import android.widget.TextView; +import android.widget.Toast; import androidx.core.widget.ContentLoadingProgressBar; @@ -28,6 +31,7 @@ import com.firebirdberlin.radiostreamapi.StationRequestTask; import com.firebirdberlin.radiostreamapi.models.Country; import com.firebirdberlin.radiostreamapi.models.RadioStation; +import com.google.android.material.snackbar.Snackbar; import java.util.ArrayList; import java.util.Collections; @@ -196,6 +200,7 @@ public void onRequestFinished(List stations) { @Override public void onCountryRequestFinished(List countries) { + Log.d(TAG,"onCountryRequestFinished()"); // sort countries alphabetically Collections.sort(countries, (lhs, rhs) -> { if (lhs.name == null) { @@ -207,6 +212,16 @@ public void onCountryRequestFinished(List countries) { return lhs.name.compareTo(rhs.name); }); + if (countries.size() == 0) { + Activity activity = (Activity) ((ContextWrapper) context).getBaseContext(); + Snackbar snackbarCountriesError = Snackbar + .make((View) activity.findViewById(android.R.id.content), R.string.radio_stream_unreachable_server, Snackbar.LENGTH_LONG); + snackbarCountriesError.setTextColor(context.getResources().getColor(R.color.material_red)); + snackbarCountriesError.show(); + + //Toast.makeText(context, R.string.radio_stream_unreachable_server, Toast.LENGTH_LONG).show(); + } + updateCountryNameToCodeMap(countries); updateCountrySpinner(countries, preferredCountry); } diff --git a/src/com/firebirdberlin/radiostreamapi/RadioBrowserApi.java b/src/com/firebirdberlin/radiostreamapi/RadioBrowserApi.java index 77caf8cd..8ca4185d 100644 --- a/src/com/firebirdberlin/radiostreamapi/RadioBrowserApi.java +++ b/src/com/firebirdberlin/radiostreamapi/RadioBrowserApi.java @@ -41,7 +41,9 @@ public class RadioBrowserApi { private static int CONNECT_TIMEOUT = 10000; private static String getRandomServer() { + Log.d(TAG, "getRandomServer()"); List servers = new ArrayList<>(); + try { // add all round robin servers one by one to select them separately InetAddress[] list = InetAddress.getAllByName("all.api.radio-browser.info"); @@ -51,7 +53,13 @@ private static String getRandomServer() { } catch (UnknownHostException e) { e.printStackTrace(); } - return servers.get(new Random().nextInt(servers.size())); + + if (servers.size() > 0) { + return servers.get(new Random().nextInt(servers.size())); + } + else { + return ""; + } } public static List fetchStations(String queryString, String countryCode) { @@ -144,6 +152,7 @@ private static String getCountriesPath() { } private static Uri.Builder getPathBuilder(String endpoint) { + Log.d(TAG, "getPathBuilder()"); String server = getRandomServer(); Log.d(TAG, server); return Uri.parse("https://" + server).buildUpon()