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()