RadioDroid icon indicating copy to clipboard operation
RadioDroid copied to clipboard

Could not connect to the radio directory server

Open saligari opened this issue 5 years ago • 13 comments

Hello! I was using a previous version of lineage (no gapps) and at some point the radiodroid app wouldn't play any stations and produced a message saying: cannot connect to radio station.

Now I flashed a different version of lineage, installed everything again (from fdroid) and now I get no stations showing up, only the message: could not connect to the radio directory server (both are rough translations from Spanish so in English it may not be exactly the same).

I thought it was something wrong on my phone, but now I fear it may have been a bug?

saligari avatar Apr 03 '20 18:04 saligari

Hi, there were changes in server selection recently. Could you get logs of RadioDroid from the logcat?

CC: @segler-alex

werman avatar Apr 03 '20 18:04 werman

Sure thing! I've limited it to ~200 lines (which I believe are the relevant ones) in this .txt. radiodroid_log.txt

Thanks for the immediate answer!

saligari avatar Apr 03 '20 18:04 saligari

Thanks, as I suspected...

04-03 21:17:53.722 26668 26701 D SRV     : Selected new default server: 95.179.139.106
04-03 21:17:53.722 26668 26701 I DOWN    : Url=https://95.179.139.106/json/stations/bycountrycodeexact/gr?order=clickcount&reverse=true
04-03 21:17:53.724 26668 26701 I DOWN    : Url=https://95.179.139.106/json/stations/bycountrycodeexact/gr?order=clickcount&reverse=true (not cached)
04-03 21:17:57.281 26668 26701 E UTIL    : downloadFeed() javax.net.ssl.SSLPeerUnverifiedException: Hostname 95.179.139.106 not verified:
04-03 21:17:57.281 26668 26701 E UTIL    :     certificate: sha256/uyvrPqzasG/i1pTfEbOspE00SV7Rh4tOLLK1o17x1pM=
04-03 21:17:57.281 26668 26701 E UTIL    :     DN: CN=nl1.api.radio-browser.info
04-03 21:17:57.281 26668 26701 E UTIL    :     subjectAltNames: [nl1.api.radio-browser.info]

I presume you have RadioDroid 0.82?

Anyway, we should wait for segler-alex since it him who runs the servers.

werman avatar Apr 03 '20 18:04 werman

I presume you have RadioDroid 0.82?

You presume correctly. That's what's on f-droid. Does the previous version work?

saligari avatar Apr 03 '20 18:04 saligari

Does the previous version work?

0.79 may work since it uses deprecated server. I just asked to have a full picture.

This looks somewhat different from similar issues before.

E.g. I have: Found: /45.77.62.161 -> fr1.api.radio-browser.info And in your log: Found: /45.77.62.161 -> 45.77.62.161

Host name is not being resolved. However it is being resolved later in OkHttp: DN: CN=fr1.api.radio-browser.info

werman avatar Apr 03 '20 18:04 werman

I've got the same symptom (no stations found) starting with 0.80 (up to 0.82) on four different devices (LOS16 ARM with Gapps, LOS 16.0 ARM with MicroG, but also plain Android 7.x ARM and 8.x Android x86 emulator). Version 0.79 still works.

For my case, the root cause seems to be an issue with DNS reverse lookup (this source code line).

My relevant logcat excerpt:

D STATIONS: onCreateView()
D STATIONS: onCreateView()
I DNS     : Found: /45.77.62.161 -> all.api.radio-browser.info
I DNS     : Found: /91.132.145.114 -> all.api.radio-browser.info
I DNS     : Found: /95.179.139.106 -> all.api.radio-browser.info
D DNS     : doDnsServerListing() Found servers: 0
E SRV     : no servers found

I think the issue is that getCanonicalHostName only returns a single DNS entry (by design), but the relevant DNS entries are additional ones. See:

$ dig all.api.radio-browser.info

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> all.api.radio-browser.info
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14399
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;all.api.radio-browser.info.    IN      A

;; ANSWER SECTION:
all.api.radio-browser.info. 20  IN      A       95.179.139.106
all.api.radio-browser.info. 20  IN      A       45.77.62.161
all.api.radio-browser.info. 20  IN      A       91.132.145.114

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sat Apr 04 18:38:01 CEST 2020
;; MSG SIZE  rcvd: 103

$ host 95.179.139.106
106.139.179.95.in-addr.arpa domain name pointer all.api.radio-browser.info.
$ host 45.77.62.161
161.62.77.45.in-addr.arpa domain name pointer all.api.radio-browser.info.
$ host 91.132.145.114
114.145.132.91.in-addr.arpa domain name pointer all.api.radio-browser.info.
114.145.132.91.in-addr.arpa domain name pointer de1.api.radio-browser.info.

So the reverse DNS lookup most likely returns the all.api... FQDN but the code expects to get the de1.api... one. Fortunately segler-alex has recently committed a fall-back (to the German server) here so the next release will work again, but that only works around the symptom. Though I still like it as I'm usually spoofing the country code on my Android devices (XprivacyLua) to avoid being tracked ;-)

hseipp avatar Apr 04 '20 17:04 hseipp

@hseipp Yeah, fallback will help, but why some dns return correct name, some return all.api.radio-browser.info and for some java think that the name is spoofed and return plain ip...

E.g. I have:

host 95.179.139.106
106.139.179.95.in-addr.arpa domain name pointer nl1.api.radio-browser.info.

This part of network stack is too far away from my expertise. So I'm not sure why all of this happens. It looks like dns servers have different records, maybe they didn't update cached data, I don't know how it works...

werman avatar Apr 04 '20 17:04 werman

You may know but for whatever reason, https://github.com/segler-alex/RadioDroid/blob/828b7e57898b2561f2bf91af5361160d850f9bcc/app/src/main/java/net/programmierecke/radiodroid2/RadioBrowserServerManager.java#L40

If I change this this to

   if (true){

then everything works.

        // should we inform people that their internet provider is not able to do reverse lookups? (= is shit)

Is it possible all these happen because the server all.api.radio-browser.info has NO https?

bmrz2019 avatar Apr 25 '20 08:04 bmrz2019

@treble2019 have you tested version 0.83 and does it work for you? it is stil in beta channel on google play.

segler-alex avatar Apr 25 '20 10:04 segler-alex

@treble2019 if listResult.size() does NOT equal 0 means, that he was able to find something. it would be interesting to know, what it is exactly, and why it does not work.

segler-alex avatar Apr 25 '20 10:04 segler-alex

@segler-alex I compiled the master - and it failed finding any stations "Could not connect to the radio directory server". So I then changedif listResult.size()(Sorry I do not have google play to test 0.83)

bmrz2019 avatar Apr 26 '20 07:04 bmrz2019

could you pull the latest master and try again? i added a new log message which should output all things that he adds to the list. please search in the log for entries that begin with "Added entry" and post the result here. there has to be at least one entry

segler-alex avatar Apr 30 '20 16:04 segler-alex

From the master. It just works now (thanks) but I cannot find any "Added entry" in the log...

? I/art: Late-enabling -Xcheck:jni
? W/System: ClassLoader referenced unknown path: /data/app/net.programmierecke.radiodroid2-1/lib/arm
net.programmierecke.radiodroid2 I/MultiDex: VM with version 2.1.0 has multidex support
net.programmierecke.radiodroid2 I/MultiDex: Installing application
net.programmierecke.radiodroid2 I/MultiDex: VM has multidex support, MultiDex support library is disabled.
net.programmierecke.radiodroid2 I/HLP: Google helper not installed because compiled as FREE version.
net.programmierecke.radiodroid2 D/NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true
net.programmierecke.radiodroid2 W/SAVE: Load() no stations to load
net.programmierecke.radiodroid2 W/SAVE: Load() no stations to load
net.programmierecke.radiodroid2 D/ALARM: load()
net.programmierecke.radiodroid2 W/ALARM: empty load() string
net.programmierecke.radiodroid2 E/Recordings: could not create dir:/storage/emulated/0/Music/Recordings
net.programmierecke.radiodroid2 D/Recordings: Updating recordings from /storage/emulated/0/Music/Recordings
net.programmierecke.radiodroid2 E/Recordings: Could not enumerate files in recordings directory
net.programmierecke.radiodroid2 W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
net.programmierecke.radiodroid2 I/art: Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
net.programmierecke.radiodroid2 I/art:     at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener) (ViewCompat.java:2436)
net.programmierecke.radiodroid2 I/art:     at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:779)
net.programmierecke.radiodroid2 I/art:     at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:659)
net.programmierecke.radiodroid2 I/art:     at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:552)
net.programmierecke.radiodroid2 I/art:     at void androidx.appcompat.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:161)
net.programmierecke.radiodroid2 I/art:     at void net.programmierecke.radiodroid2.ActivityMain.onCreate(android.os.Bundle) (ActivityMain.java:146)
net.programmierecke.radiodroid2 I/art:     at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6684)
net.programmierecke.radiodroid2 I/art:     at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1119)
net.programmierecke.radiodroid2 I/art:     at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2637)
net.programmierecke.radiodroid2 I/art:     at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2751)
net.programmierecke.radiodroid2 I/art:     at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
net.programmierecke.radiodroid2 I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1496)
net.programmierecke.radiodroid2 I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
net.programmierecke.radiodroid2 I/art:     at void android.os.Looper.loop() (Looper.java:154)
net.programmierecke.radiodroid2 I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6186)
net.programmierecke.radiodroid2 I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
net.programmierecke.radiodroid2 I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:889)
net.programmierecke.radiodroid2 I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:779)
net.programmierecke.radiodroid2 I/art: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file "/data/app/net.programmierecke.radiodroid2-1/base.apk"],nativeLibraryDirectories=[/data/app/net.programmierecke.radiodroid2-1/lib/arm, /system/lib, /vendor/lib]]
net.programmierecke.radiodroid2 I/art:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
net.programmierecke.radiodroid2 I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
net.programmierecke.radiodroid2 I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
net.programmierecke.radiodroid2 I/art:     at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener) (ViewCompat.java:2436)
net.programmierecke.radiodroid2 I/art:     at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:779)
net.programmierecke.radiodroid2 I/art:     at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:659)
net.programmierecke.radiodroid2 I/art:     at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:552)
net.programmierecke.radiodroid2 I/art:     at void androidx.appcompat.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:161)
net.programmierecke.radiodroid2 I/art:     at void net.programmierecke.radiodroid2.ActivityMain.onCreate(android.os.Bundle) (ActivityMain.java:146)
net.programmierecke.radiodroid2 I/art:     at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6684)
net.programmierecke.radiodroid2 I/art:     at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1119)
net.programmierecke.radiodroid2 I/art:     at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2637)
net.programmierecke.radiodroid2 I/art:     at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2751)
net.programmierecke.radiodroid2 I/art:     at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
net.programmierecke.radiodroid2 I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1496)
net.programmierecke.radiodroid2 I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
net.programmierecke.radiodroid2 I/art:     at void android.os.Looper.loop() (Looper.java:154)
net.programmierecke.radiodroid2 I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6186)
net.programmierecke.radiodroid2 I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
net.programmierecke.radiodroid2 I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:889)
net.programmierecke.radiodroid2 I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:779)
net.programmierecke.radiodroid2 W/TabLayout: MODE_SCROLLABLE + GRAVITY_FILL is not supported, GRAVITY_START will be used instead
net.programmierecke.radiodroid2 W/BottomSheetBehavior: BottomSheetBehavior now supports multiple callbacks. `setBottomSheetCallback()` removes all existing callbacks, including ones set internally by library authors, which may result in unintended behavior. This may change in the future. Please use `addBottomSheetCallback()` and `removeBottomSheetCallback()` instead to set your own callbacks.
net.programmierecke.radiodroid2 I/art: Do partial code cache collection, code=31KB, data=30KB
net.programmierecke.radiodroid2 I/art: After code cache collection, code=29KB, data=29KB
net.programmierecke.radiodroid2 I/art: Increasing code cache capacity to 128KB
net.programmierecke.radiodroid2 D/MAIN: Found countrycode de
net.programmierecke.radiodroid2 D/RadioDroid: RESUMED
net.programmierecke.radiodroid2 D/MAIN: received search request for tag 1: null
net.programmierecke.radiodroid2 D/FragmentBase: Download relativeUrl:json/stations/bycountrycodeexact/de?order=clickcount&reverse=true
net.programmierecke.radiodroid2 D/UTIL: File last modified : Thu Jan 01 01:00:00 GMT+01:00 1970 secs=1589474526  mins=26491242 hours=441520
net.programmierecke.radiodroid2 D/UTIL: do not use cache, because too old:json/stations/bycountrycodeexact/de?order=clickcount&reverse=true
net.programmierecke.radiodroid2 D/DNS: doDnsServerListing()
net.programmierecke.radiodroid2 D/FragmentBase: Download relativeUrl:json/stations/topclick/100
net.programmierecke.radiodroid2 D/UTIL: File last modified : Thu Jan 01 01:00:00 GMT+01:00 1970 secs=1589474526  mins=26491242 hours=441520
net.programmierecke.radiodroid2 D/UTIL: do not use cache, because too old:json/stations/topclick/100
net.programmierecke.radiodroid2 D/STATIONS: onCreateView()
net.programmierecke.radiodroid2 I/DNS: Found: /45.77.62.161 -> all.api.radio-browser.info
net.programmierecke.radiodroid2 I/DNS: Found: /95.179.139.106 -> all.api.radio-browser.info
net.programmierecke.radiodroid2 I/DNS: Found: /91.132.145.114 -> all.api.radio-browser.info
net.programmierecke.radiodroid2 W/DNS: Fallback to de1.api.radio-browser.info because dns call did not work.
net.programmierecke.radiodroid2 D/DNS: doDnsServerListing() Found servers: 1
net.programmierecke.radiodroid2 D/SRV: Selected new default server: de1.api.radio-browser.info
net.programmierecke.radiodroid2 I/DOWN: Url=https://de1.api.radio-browser.info/json/stations/bycountrycodeexact/de?order=clickcount&reverse=true
net.programmierecke.radiodroid2 D/UTIL: File last modified : Thu Jan 01 01:00:00 GMT+01:00 1970 secs=1589474526  mins=26491242 hours=441520
net.programmierecke.radiodroid2 D/UTIL: do not use cache, because too old:https://de1.api.radio-browser.info/json/stations/bycountrycodeexact/de?order=clickcount&reverse=true
net.programmierecke.radiodroid2 I/DOWN: Url=https://de1.api.radio-browser.info/json/stations/bycountrycodeexact/de?order=clickcount&reverse=true (not cached)
net.programmierecke.radiodroid2 D/FragmentStations: refreshing the stations list.
net.programmierecke.radiodroid2 D/FragmentStations: station count:0
net.programmierecke.radiodroid2 D/STATIONS: onCreateView()
net.programmierecke.radiodroid2 D/FragmentStations: refreshing the stations list.
net.programmierecke.radiodroid2 D/FragmentStations: station count:0
net.programmierecke.radiodroid2 I/Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: EGL 1.4 QUALCOMM build: Nondeterministic_AU_msm8916_32_LA.BR.1.2.9_RB1__release_AU (I750f7f2fa6)
    OpenGL ES Shader Compiler Version: XE031.09.00.03
    Build Date: 02/18/17 Sat
    Local Branch: 
    Remote Branch: quic/LA.BR.1.2.9_rb1.12
    Local Patches: NONE
    Reconstruct Branch: NOTHING
net.programmierecke.radiodroid2 I/OpenGLRenderer: Initialized EGL, version 1.4
net.programmierecke.radiodroid2 D/OpenGLRenderer: Swap behavior 1
net.programmierecke.radiodroid2 W/RenderThread: type=1400 audit(0.0:6546): avc: denied { read } for uid=10076 name="gpuclk" dev="sysfs" ino=11479 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0
net.programmierecke.radiodroid2 W/Adreno-ES20: <get_gpu_clk:229>: open failed: errno 13
net.programmierecke.radiodroid2 D/PLAYER: Service came online
net.programmierecke.radiodroid2 V/MediaRouter: Adding route: RouteInfo{ name=Phone, description=null, status=null, category=RouteCategory{ name=null types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO  groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , presentationDisplay=null }
net.programmierecke.radiodroid2 V/MediaRouter: Updating audio routes: AudioRoutesInfo{ type=SPEAKER }
net.programmierecke.radiodroid2 V/MediaRouter: Selecting route: RouteInfo{ name=Phone, description=null, status=null, category=RouteCategory{ name=null types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO  groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , presentationDisplay=null }
net.programmierecke.radiodroid2 I/MediaRouter: Found default route: MediaRouter.RouteInfo{ uniqueId=android/androidx.mediarouter.media.SystemMediaRouteProvider:DEFAULT_ROUTE, name=Phone, description=null, iconUri=null, enabled=true, connectionState=0, canDisconnect=false, playbackType=0, playbackStream=3, deviceType=0, volumeHandling=1, volume=0, volumeMax=15, presentationDisplayId=-1, extras=null, settingsIntent=null, providerPackageName=android }
net.programmierecke.radiodroid2 I/MediaRouter: Unselecting the current route because it is no longer selectable: null
net.programmierecke.radiodroid2 I/art: Do partial code cache collection, code=51KB, data=62KB
net.programmierecke.radiodroid2 I/art: After code cache collection, code=50KB, data=62KB
net.programmierecke.radiodroid2 I/art: Increasing code cache capacity to 256KB
net.programmierecke.radiodroid2 V/MediaRouter: Selecting route: RouteInfo{ name=Phone, description=null, status=null, category=RouteCategory{ name=null types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO  groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , presentationDisplay=null }
net.programmierecke.radiodroid2 D/UTIL: wrote cache file for:https://de1.api.radio-browser.info/json/stations/bycountrycodeexact/de?order=clickcount&reverse=true
net.programmierecke.radiodroid2 D/FragmentBase: Download relativeUrl finished:json/stations/bycountrycodeexact/de?order=clickcount&reverse=true
net.programmierecke.radiodroid2 D/FragmentBase: Download relativeUrl OK:json/stations/bycountrycodeexact/de?order=clickcount&reverse=true
net.programmierecke.radiodroid2 D/FragmentStations: refreshing the stations list.
net.programmierecke.radiodroid2 I/DOWN: Url=https://de1.api.radio-browser.info/json/stations/topclick/100
net.programmierecke.radiodroid2 D/UTIL: File last modified : Thu Jan 01 01:00:00 GMT+01:00 1970 secs=1589474527  mins=26491242 hours=441520
net.programmierecke.radiodroid2 D/UTIL: do not use cache, because too old:https://de1.api.radio-browser.info/json/stations/topclick/100
net.programmierecke.radiodroid2 I/DOWN: Url=https://de1.api.radio-browser.info/json/stations/topclick/100 (not cached)
net.programmierecke.radiodroid2 D/UTIL: wrote cache file for:https://de1.api.radio-browser.info/json/stations/topclick/100
net.programmierecke.radiodroid2 D/FragmentStations: station count:2768
net.programmierecke.radiodroid2 D/FragmentBase: Download relativeUrl finished:json/stations/topclick/100
net.programmierecke.radiodroid2 D/FragmentBase: Download relativeUrl OK:json/stations/topclick/100
net.programmierecke.radiodroid2 D/FragmentStations: refreshing the stations list.
net.programmierecke.radiodroid2 D/FragmentStations: station count:100
net.programmierecke.radiodroid2 I/art: Background partial concurrent mark sweep GC freed 280416(11MB) AllocSpace objects, 15(768KB) LOS objects, 39% free, 13MB/22MB, paused 4.008ms total 114.085ms

bmrz2019 avatar May 14 '20 16:05 bmrz2019