badaix / snapdroid Goto Github PK
View Code? Open in Web Editor NEWSnapcast client for Android
License: GNU General Public License v3.0
Snapcast client for Android
License: GNU General Public License v3.0
Hi Johannes
How feasible could be to integrate to snapclient mobile the mpd media buttons actions.
In androidOS the active audio app governs the media buttons (think bluetooth). It would be very useful to control the basic media buttons, at least when using mpd stream. This way, user wouldn't require to use the screen as often, not for a simple next. A real scenario would be driving.
-One app to rule all the bluetooth media buttons-
Usually is the case where there is mpd, there is also mpc. a button that tells snapserver to run 'mpc next', ...
Visually it would mean additional settings
field: [mpd host]
switch: toggle mpd buttons [on/off]
switch: toggle play_action to control [snapcast + mpd at same time / only snapcast]
I guess I'm not the first thinking about this, i wait for the feedback.
Thanks a lot, snapcast is great and fun.
Guerman
It's probably normal (it's a development version), but I thought you wanted to know: the latest Android app (Play Store) can't receive audio stream from the latest snapserver (develop branch). I'll have logs for you later.
From @calbee633810 on April 12, 2018 11:55
Click About in the menu to open WebView, scroll article and rotate screen. WebView rolls back to top after screen orientation change, but it should keep it.
Copied from original issue: badaix/snapcast#384
Phone: Samsung Galaxy S10
OS: Android 10, Kernel 4.14.113-18242812, Build QP1A.190711.020.G973FXXS5CTD1, Security patch level May 2020.
Snapcast client for Android: v0.19.0
Back-end: Mopidy 3.0.2-1 / Mopidy-MPD 3.0.0-1 + Extensions.
Mopidy output stream: output = audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! wavenc ! filesink location=/tmp/snapfifo
Symptom: Restarting the Mopidy back-end, changing current playing item (via a Web front-end), or roaming between in-home wifi points often causes the app to emit a continuous buzz until the app's stop button is pressed.
Steps to reproduce:
Sound Sample: https://github.com/linker3000/Resources/blob/master/snapdroid-noise.m4a
Hi! I have a use case that might be useful for others, but I'm not sure how feasible it is. I'd like to have my Android devices act as a stream source for snapcast, so that I can stream whatever audio is on my device.
I considered another option which was to set up a Bluetooth sink and connect that up to snapcast. It's then pretty easy to pipe all audio from android through that, but Bluetooth on linux is a pain.
Just wanted to document this idea, thanks.
Hi there!
I like to do a bit of UI Design in my spare time and would be willing to "modernize" the looks of the app :)
Given that the UI is pretty simple, this shouldn't take too long either! While I'm at it, I could also integrate some of the open issues right-away, like #44, #6 or #37 (potentially also #30 or #18)
I was recently involved in a project where I did a lot of design work for an Android app, so I already have some experience, even though I'm not an actual Android dev :)
(PS: for consistency's sake I'd also be willing to update Snapweb's design so that it matches the "new" design. I am a web dev, so that shouldn't be too hard.)
@badaix I'd love to hear if you're interested or not :D
From @derglaus on April 5, 2018 20:0
In my Android client, only the snapclients in the first group are shown initially on the display. I need to scroll for the other clients, even if there is enough space. (seems like the height of the box to display the clients is calculated based on the first group and not the available space)
I use Android 7.1.1
Copied from original issue: badaix/snapcast#381
Hello, first happy new year and you do really great work on this app.
I have 2 RSPI with balenasound all work perftectly.
When i use snapdroid, i can see mi master player and can mut/unmute and volume +/-.
If i use multiple player, 1 master and 1 client, i can use it for master but mi client dont show on app (android and windows snap.net).
When i publish music on mi master and all mi player is online i can hear sound on all mi room, but i want to volume +/- on each room.
Do you have any idea to how see mi master and client ?
Thx, have a good day.
Have an issue where I can hear no audio on my pixel 3. I have the ability to control all my other clients but the pixel 3 does not show up as one of the devices but the Snapclient is showing running.... when I hit the play button.
Hi,
I am running snapdroid on my Nvidia Shield android TV 2019 -- is there a way that I can start snapdroid so that upon startup it acts as a snapcast client immediately without having to click the "Play"-icon?
When I press play at the top the App closes unexpectedly. The music is then playing perfectly fine while that error dialog ist still open but obviously stops as soon as I choose to close or restart the app.
This is on a oneplus 6 with Android 8.1.0/Oxygen OS 5.1.5
Hi!
I'd like to toggle pause/play through an intent by using Tasker.
If this is possible could you please tell me which intent I can use?
Thank you
Hi!
To allow HTTP connection (for example to run snapdroid on a recent android TV device), clear text as to be allowed through AndroidManifest.xml
It's done by adding :
android:usesCleartextTraffic="true"
Can you give that a look @badaix ?
NB: what an awesome work you've done around snapcast !!
Hi, I've been experiencing a bug ever since upgrading to version 0.20.0 of Snapdroid. I upgraded Snapserver and Snapdroid to 0.20.0 around the same time. However, when using Snapdroid for playback, all I get is a distorted sound similar to TV static. If I rollback Snapdroid to 0.19.0, everything works fine.
The Snapserver is running on a Raspberry Pi 4 under Raspbian.
Snapdroid is running on a Moto X4 running Android 9
Here is a client log captured using adb
.
07-02 13:15:02.293 26610 26610 D Service : Running on a non-TV Device
07-02 13:15:02.295 26610 26610 D Service : startProcess
07-02 13:15:02.296 26610 26610 I Service : Configured engine: Auto, active engine: oboe, sampleformat: 48000:16:*
07-02 13:15:02.700 26610 28892 D Main : onPlayerStart
07-02 13:15:02.701 26610 28892 D Main : [Info] (Connection) Resolving host IP for: 10.0.0.93
07-02 13:15:02.701 26610 26610 D Main : updateStartStopMenuItem: ic_media_stop
07-02 13:15:02.701 26610 28892 D Main : [Info] (Connection) Connecting
07-02 13:15:02.723 26610 28892 D Main : [Notice] (Connection) Connected to 10.0.0.93
07-02 13:15:02.723 26610 28892 D Main : [Info] (Connection) My MAC: "00:00:00:00:00:00", socket: 7
07-02 13:15:02.742 26610 27870 D TCP : Received Message: '{"jsonrpc":"2.0","method":"Client.OnConnect","params":{"client":{"config":{"instance":1,"latency":0,"name":"","volume":{"muted":false,"percent":100}},"connected":true,"host":{"arch":"arm64-v8a","ip":"10.0.0.85","mac":"00:00:00:00:00:00","name":"moto x4","os":"Android 9"},"id":"b6cd8afc-91aa-4839-90f5-261b44352590","lastSeen":{"sec":1593710104,"usec":634210},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.20.0"}},"id":"b6cd8afc-91aa-4839-90f5-261b44352590"}}'
07-02 13:15:02.744 26610 28892 D Main : [Info] (Controller) ServerSettings - buffer: 1880, latency: 0, volume: 100, muted: 0
07-02 13:15:02.754 26610 28892 D Main : [Info] (Controller) Codec: flac, sampleformat: 48000:24:2
07-02 13:15:02.754 26610 28892 D Main : [Info] (Player) Player name: oboe, device: default, description: <none>, idx: -1, sharing mode: shared
07-02 13:15:02.754 26610 28892 D Main : [Info] (Player) Mixer mode: software, parameters: <none>
07-02 13:15:02.754 26610 28892 D Main : [Info] (Player) Sampleformat: 48000:24:2, stream: 48000:24:2
07-02 13:15:02.754 26610 28892 D Main : [Info] (OboePlayer) Init start
07-02 13:15:02.754 26610 28892 D Main : [Info] (OboePlayer) DefaultStreamValues::SampleRate: 48000, DefaultStreamValues::FramesPerBurst: 240
07-02 13:15:02.778 26610 28892 D Main : [Info] (OboePlayer) BufferSizeInFrames: 480, FramesPerBurst: 240
07-02 13:15:02.778 26610 28892 D Main : [Info] (OboePlayer) AudioApi: AAudio
07-02 13:15:02.778 26610 28892 D Main : [Info] (OboePlayer) Init done
07-02 13:15:02.778 26610 28892 D Main : [Info] (OboePlayer) Start
07-02 13:15:02.780 26610 28892 D Main : [Info] (Stream) no chunks available
07-02 13:15:03.162 26610 28892 D Main : [Info] (Controller) diff to server [ms]: -4.25172e+08
07-02 13:15:04.579 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 1 34 0
07-02 13:15:05.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 94 32 0
07-02 13:15:06.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 317 32 0
07-02 13:15:07.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:08.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:09.000 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 31 0
07-02 13:15:10.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:11.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:12.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:13.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:14.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:15.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:16.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:17.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:18.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:19.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:20.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:21.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:22.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:24.004 26610 28892 I chatty : uid=10365(de.badaix.snapcast) Thread-28 identical 2 lines
07-02 13:15:25.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:26.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:27.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:28.004 26610 28892 I chatty : uid=10365(de.badaix.snapcast) Thread-28 identical 1 line
07-02 13:15:29.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:30.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:31.002 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 29 0
07-02 13:15:32.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:33.006 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 30 0
07-02 13:15:34.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:35.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:36.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:37.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:38.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:39.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:40.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:41.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:42.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:43.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:44.004 26610 28892 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 32 0
07-02 13:15:44.637 26610 26610 D Service : stopPlayer
07-02 13:15:44.637 26610 26610 D Service : stopService
07-02 13:15:44.637 26610 26610 D Service : stop
07-02 13:15:44.637 26610 26610 D Service : stopProcess
07-02 13:15:44.638 26610 28892 D Main : [Info] (Snapclient) Received signal 15: Terminated
07-02 13:15:44.638 26610 28892 D Main : [Info] (OboePlayer) Stop
07-02 13:15:44.639 26610 28892 W System.err: java.io.IOException: Stream closed
07-02 13:15:44.639 26610 28892 W System.err: at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:172)
07-02 13:15:44.639 26610 28892 W System.err: at java.io.BufferedInputStream.read(BufferedInputStream.java:338)
07-02 13:15:44.639 26610 28892 W System.err: at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288)
07-02 13:15:44.639 26610 28892 W System.err: at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:351)
07-02 13:15:44.639 26610 28892 W System.err: at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180)
07-02 13:15:44.639 26610 28892 W System.err: at java.io.InputStreamReader.read(InputStreamReader.java:184)
07-02 13:15:44.639 26610 28892 W System.err: at java.io.BufferedReader.fill(BufferedReader.java:172)
07-02 13:15:44.639 26610 28892 W System.err: at java.io.BufferedReader.readLine(BufferedReader.java:335)
07-02 13:15:44.639 26610 28892 W System.err: at java.io.BufferedReader.readLine(BufferedReader.java:400)
07-02 13:15:44.639 26610 28892 W System.err: at de.badaix.snapcast.SnapclientService$1.run(SnapclientService.java:246)
07-02 13:15:44.639 26610 28892 W System.err: at java.lang.Thread.run(Thread.java:764)
07-02 13:15:44.646 26610 26610 D Main : onPlayerStop
07-02 13:15:44.646 26610 26610 D Main : updateStartStopMenuItem: ic_media_play
07-02 13:15:46.425 26610 27870 D TCP : Received Message: '{"jsonrpc":"2.0","method":"Client.OnDisconnect","params":{"client":{"config":{"instance":1,"latency":0,"name":"","volume":{"muted":false,"percent":100}},"connected":false,"host":{"arch":"arm64-v8a","ip":"10.0.0.85","mac":"00:00:00:00:00:00","name":"moto x4","os":"Android 9"},"id":"b6cd8afc-91aa-4839-90f5-261b44352590","lastSeen":{"sec":1593710147,"usec":285714},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.20.0"}},"id":"b6cd8afc-91aa-4839-90f5-261b44352590"}}'
Please add the snapdroid to f-droid repository.
I have this installed on my phone, but was trying to install it on my child's phone and it's no longer available in the Play store. The URL https://play.google.com/store/apps/details?id=de.badaix.snapcast gives me a 404.
When i connect a smartphone to the snapserver, the MAC is recognized as 00:00:00:00:00:00
in /var/lib/snapserver/server.json
. Everything works normally and i can control the volume, but when i connect a second smartphone (same brand/model), the volume control is applied to both devices. They just act as they were one single snapclient, and they are both identified with the same name and are listed as one item.
(v0.17.1 directly installed from google playstore)
Heyo!
I'd really like to have 1-click possibility to switch between 2 or 3 streams. I use 2 different streams for 2 different spotify accounts and we switch between those regularly.
Right now, I need 4 clicks:
Would be nice to have the option to select streams to appear on the main page (extra row below the current stream of the gorup?). That can then be activated with just one click.
I'm not sure how best to troubleshoot this, what to look or even really where to look.
I have Snapserver running on a Ubuntu 18.04 VM (running on ESXi 6.5). There are no audio devices assigned to this VM.
I had Mopidy setup on this VM with Snapcast but it was incredibly unstable so I switched to MDP with Rompr as the frontend.
Currently I have 2 clients connected to the server, both are Android devices, one is a Samsung A5 which is running Snapcast V24.0 and the other is an older Marshmellow based Android device which is still running V22.0.
The Samsung is used for testing and the older Android phone is being used to supply my deck speakers.
I have always experience some audio drops when using Snapcast. Last week I updated the Snap server to: Version 0.24.0, revision 7eff45fd but the audio drops continue and they may have gotten worse.
Apart from the drops, the quality is great. I'd love to get the audio drops sorted out, I'm so close to having a great multi-room setup, but the drops are holding me back.
My snapserver.conf file is:
[server]
[http]
enabled = true
bind_to_address = 0.0.0.0
port = 1780
[tcp]
[stream]
source = pipe:///tmp/snapfifo?name=default
[logging]
I only have the HTTP section set for Rompr control but that isn't working very well on Rompr's end.
Using a Pixel 3 running Android 10 and Snapdroid 0.17.1.2 (apk downloaded from the releases page), playback will not start with 24-bit streams. 16-bit streams (from the same server with the same number of channels and sampling rate) play fine.
I could not find a link to download the apk for the 0.14 release on this project.
Only the "snapcast" project homepage features a link - I wouldn't have found the "release" tab under "code" otherwise.
Thanks for your work!
I have 3 instances of Snapcast running on Raspberry Pi3 with Volumio and Hifiberry dacs and AMP. Snapcast appears to be running fine and all I can find one instance in the other instance as a host. So the hosts seem to be online and working fine.
However: when I use you Android app I can't find any Snapserver host.
All my devices are in the same WIFI network.
Any help would be great!
Hello,
thank you for this nice project. I would love, if it would be possible, to compile snapcast server for android.
Idea/Background:
For University, I have to build an open source android project which uses Wifi-Direct/Bluetooth. My Idea:
Create an app, where you can connect multiple phones together (using Wifi Direct) and play music together.
How it works:
Phone A receives audio via a TCP Stream and acting as a server. Phone A is at the same time a client and connect to itself. Phone B (connected via Wifi) should work fine with snapdroid as it is now.
Problem:
When compiling snapdroid with BUILD_SERVER=ON. I get the Info: snapserver not yet supported for Android.
Question:
Is snapserver not supported because this app current does not make use of them? Or does snapcast in general not supported/compile on android?
If snapcast can be compiled for android, build instructions would be great. In the snapcast build documentation, it's only linked to this project. Therefore, I hope it correct asking here.
Thank you for any help.
From @voltagex on April 28, 2018 6:33
Could you please enable Android TV support in the Store version of the app? I'll probably recompile it for my TV but it'd be nice to be able to just install it.
Copied from original issue: badaix/snapcast#392
I am running the Android client on the Bluestacks Android Emulator.
I noticed a potential bug in the Android SnapClient: I have to re-enter the delay parameter after every restart of Bluestacks. It seems that the stored delay parameter shown in the Snapclient GUI is not taken into account after a system restart.
I installed Snapdroid on an older Phone with Android 7.1.2. My Snapserver seems to be set up ok and starts. Snapdroid finds the server and tries to connect, but always displays the above message. What am I doing wrong?
This is probably the most minor issue ever, so feel free to close it right away, but I've noticed that for some users (n = 1) the play and stop icons are very confusing. It's easy to misunderstand as somehow controlling the music and not spawning a new player, especially if you didn't set up the system yourself (this all stems from me setting up Snapcast for my dad). Unfortunately I personally can't really think of a more appropriate icon, but I thought it's worth letting you know at least.
Hey!
Snapcast is a great project and I am sucessfully using it at home. Thanks for this awesome development!
The Android app though can't be successfully installed. I tried both version 14 and 15 but after trying to install, Android just states "App not installed". Did someone experience the same or similar problems?
I am running Android 8.01 using Lineage OS 15.1 on a FP2.
Any help would be highly appreciated!
Thanks!
This is similar to the issue I had with the first Version of 0.19.0. Which was fixed after installing a Test Version.
With the newest 0.20.0 apk the Playback on my Android 10 Tablet stops after some time. The server still shows the Tablet as connected and playing, but there is no sound coming. Stopping and reconnecting fixes this.
Here is a log from just now:
06-26 08:20:06.020 6784 29500 I chatty : uid=10018(de.badaix.snapcast) Thread-13 identical 4 lines
06-26 08:20:07.020 6784 29500 D Main : [Info] (Stream) no chunks available
06-26 08:20:08.019 6784 29500 D Main : [Info] (Stream) no chunks available
06-26 08:20:09.020 6784 29500 D Main : [Info] (Stream) no chunks available
06-26 08:20:10.021 6784 29500 D Main : [Info] (Stream) no chunks available
06-26 08:20:11.001 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: MSG_RESIZED_REPORT: frame=(0,0,2560,1600) ci=(0,54,0,34) vi=(0,54,0,34) or=2
06-26 08:20:11.018 6784 29500 D Main : [Info] (Stream) no chunks available
06-26 08:20:11.068 6784 6784 E ViewRootImpl@2c404dd[MainActivity]: Surface is not valid.
06-26 08:20:11.081 6784 6807 W badaix.snapcas: Reducing the number of considered missed Gc histogram windows from 149 to 100
06-26 08:20:11.092 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: stopped(false) old=true
06-26 08:20:11.114 6784 18111 D OpenGLRenderer: destroyEglSurface : 0x7ca90a5180
06-26 08:20:11.116 6784 18111 D OpenGLRenderer: ~ReliableSurface : 0x7cb5680cc0
06-26 08:20:11.124 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: Relayout returned: old=(0,0,2560,1600) new=(0,0,2560,1600) req=(2560,1600)0 dur=8 res=0x40001 s={true 535406936064} ch=true
06-26 08:20:11.124 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: RELAYOUT_RES_KEEP_ALIVE_SURFACE on 40001
06-26 08:20:11.125 6784 18111 D OpenGLRenderer: createReliableSurface : 0x7cb5680cc0(0x7ca8bd8000)
06-26 08:20:11.132 6784 18111 D OpenGLRenderer: makeCurrent EglSurface : 0x0 -> 0x7ca90a5c80
06-26 08:20:11.133 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: stopped(false) old=false
06-26 08:20:11.134 6784 6784 D Main : lastRunVersion: 2000, version: 2000
06-26 08:20:11.171 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: Relayout returned: old=(0,0,2560,1600) new=(0,0,2560,1600) req=(2560,1600)0 dur=11 res=0x40001 s={true 535406936064} ch=false
06-26 08:20:11.271 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1
06-26 08:20:11.271 6784 6784 D InputMethodManager: prepareNavigationBarInfo() DecorView@fb6098c[MainActivity]
06-26 08:20:11.271 6784 6784 D InputMethodManager: getNavigationBarColor() -855310
06-26 08:20:11.274 6784 6784 D InputMethodManager: prepareNavigationBarInfo() DecorView@fb6098c[MainActivity]
06-26 08:20:11.274 6784 6784 D InputMethodManager: getNavigationBarColor() -855310
06-26 08:20:11.274 6784 6784 V InputMethodManager: Starting input: tba=de.badaix.snapcast ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
06-26 08:20:11.274 6784 6784 D InputMethodManager: startInputInner - Id : 0
06-26 08:20:11.274 6784 6784 I InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
06-26 08:20:11.283 6784 6784 D InputTransport: Input channel destroyed: 'ClientS', fd=77
06-26 08:20:12.061 6784 29500 D Main : [Info] (Stream) no chunks available
06-26 08:20:14.955 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme pointer 0
06-26 08:20:15.081 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme pointer 1
06-26 08:20:15.081 6784 6784 D AbsListView: onTouchUp() mTouchMode : 1
06-26 08:20:15.911 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme pointer 0
06-26 08:20:16.037 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme pointer 1
06-26 08:20:16.037 6784 6784 D AbsListView: onTouchUp() mTouchMode : 1
06-26 08:20:16.814 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme pointer 0
06-26 08:20:16.931 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme pointer 1
06-26 08:20:16.933 6784 28819 D TCP : Sending: {"jsonrpc":"2.0","method":"Client.SetVolume","id":38,"params":{"id":"26c6d10e-cae9-44a1-ae47-0da4b7a36ea3","volume":{"percent":100,"muted":false}}}
06-26 08:20:16.938 6784 28817 D TCP : Received Message: '{"id":38,"jsonrpc":"2.0","result":{"volume":{"muted":false,"percent":100}}}'
06-26 08:20:16.938 6784 28817 D RC : Response to: Client.SetVolume
06-26 08:20:16.938 6784 29500 D Main : [Info] (Controller) ServerSettings - buffer: 400, latency: -318, volume: 100, muted: 0
06-26 08:20:19.169 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: MSG_RESIZED_REPORT: frame=(0,0,2560,1600) ci=(0,54,0,34) vi=(0,54,0,34) or=2
06-26 08:20:19.190 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: Relayout returned: old=(0,0,2560,1600) new=(0,0,2560,1600) req=(2560,1600)0 dur=7 res=0x40003 s={true 535406936064} ch=false
06-26 08:20:19.190 6784 18111 D OpenGLRenderer: createReliableSurface : 0x7ca900f5c0(0x7ca8bd8000)
06-26 08:20:19.190 6784 18111 D OpenGLRenderer: makeCurrent EglSurface : 0x7ca90a5c80 -> 0x0
06-26 08:20:19.190 6784 18111 D OpenGLRenderer: destroyEglSurface : 0x7ca90a5c80
06-26 08:20:19.193 6784 18111 D OpenGLRenderer: ~ReliableSurface : 0x7cb5680cc0
06-26 08:20:19.199 6784 18111 D OpenGLRenderer: makeCurrent EglSurface : 0x0 -> 0x7cb555c100
06-26 08:20:19.333 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme key 0
06-26 08:20:19.395 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme key 1
06-26 08:20:19.833 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme key 0
06-26 08:20:19.905 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme key 1
06-26 08:20:20.593 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme key 0
06-26 08:20:20.645 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme key 1
06-26 08:20:21.101 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme key 0
06-26 08:20:21.104 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme key 1
06-26 08:20:21.674 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: MSG_RESIZED_REPORT: frame=(0,0,2560,1600) ci=(0,54,0,34) vi=(0,54,0,34) or=2
06-26 08:20:21.696 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: Relayout returned: old=(0,0,2560,1600) new=(0,0,2560,1600) req=(2560,1600)0 dur=4 res=0x40003 s={true 535406936064} ch=false
06-26 08:20:21.696 6784 18111 D OpenGLRenderer: createReliableSurface : 0x7ca8a1e840(0x7ca8bd8000)
06-26 08:20:21.697 6784 18111 D OpenGLRenderer: makeCurrent EglSurface : 0x7cb555c100 -> 0x0
06-26 08:20:21.697 6784 18111 D OpenGLRenderer: destroyEglSurface : 0x7cb555c100
06-26 08:20:21.698 6784 18111 D OpenGLRenderer: ~ReliableSurface : 0x7ca900f5c0
06-26 08:20:21.701 6784 18111 D OpenGLRenderer: makeCurrent EglSurface : 0x0 -> 0x7ca90a5400
06-26 08:20:44.303 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 0 1
06-26 08:20:44.303 6784 6784 D InputMethodManager: prepareNavigationBarInfo() DecorView@fb6098c[MainActivity]
06-26 08:20:44.303 6784 6784 D InputMethodManager: getNavigationBarColor() -855310
06-26 08:20:45.753 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1
06-26 08:20:45.753 6784 6784 D InputMethodManager: prepareNavigationBarInfo() DecorView@fb6098c[MainActivity]
06-26 08:20:45.753 6784 6784 D InputMethodManager: getNavigationBarColor() -855310
06-26 08:20:45.778 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 0 1
06-26 08:20:45.778 6784 6784 D InputMethodManager: prepareNavigationBarInfo() DecorView@fb6098c[MainActivity]
06-26 08:20:45.778 6784 6784 D InputMethodManager: getNavigationBarColor() -855310
06-26 08:20:46.371 6784 18111 D OpenGLRenderer: makeCurrent EglSurface : 0x7ca90a5400 -> 0x0
06-26 08:20:46.372 6784 18111 D OpenGLRenderer: destroyEglSurface : 0x7ca90a5400
06-26 08:20:46.373 6784 18111 D OpenGLRenderer: ~ReliableSurface : 0x7ca8a1e840
06-26 08:20:46.381 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: Relayout returned: old=(0,0,2560,1600) new=(0,0,2560,1600) req=(2560,1600)8 dur=8 res=0x5 s={false 0} ch=true
06-26 08:20:46.396 6784 6784 D InputTransport: Input channel destroyed: 'ClientS', fd=74
06-26 08:20:46.418 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: stopped(true) old=false
06-26 08:20:46.455 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: Relayout returned: old=(0,0,2560,1600) new=(0,0,2560,1600) req=(2560,1600)8 dur=4 res=0x5 s={false 0} ch=false
06-26 08:28:32.696 6784 6784 D InputMethodManager: prepareNavigationBarInfo() DecorView@fb6098c[MainActivity]
06-26 08:28:32.696 6784 6784 D InputMethodManager: getNavigationBarColor() -855310
06-26 08:28:32.696 6784 6784 V InputMethodManager: Starting input: tba=de.badaix.snapcast ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
06-26 08:28:32.696 6784 6784 D InputMethodManager: startInputInner - Id : 0
06-26 08:28:32.696 6784 6784 I InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
06-26 08:28:32.701 6784 6784 D InputTransport: Input channel destroyed: 'ClientS', fd=74
06-26 08:28:33.117 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: stopped(true) old=false
06-26 08:28:33.118 6784 18111 D OpenGLRenderer: makeCurrent EglSurface : 0x7cb555c500 -> 0x0
06-26 08:28:33.516 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 0 1
06-26 08:28:33.516 6784 6784 D InputMethodManager: prepareNavigationBarInfo() DecorView@fb6098c[MainActivity]
06-26 08:28:33.516 6784 6784 D InputMethodManager: getNavigationBarColor() -855310
06-26 08:29:00.616 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: MSG_RESIZED_REPORT: frame=(0,0,2560,1600) ci=(0,54,0,34) vi=(0,54,0,34) or=2
06-26 08:29:00.655 6784 6784 E ViewRootImpl@2c404dd[MainActivity]: Surface is not valid.
06-26 08:29:00.669 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: stopped(false) old=true
06-26 08:29:00.688 6784 18111 D OpenGLRenderer: destroyEglSurface : 0x7cb555c500
06-26 08:29:00.689 6784 18111 D OpenGLRenderer: ~ReliableSurface : 0x7cb52d1800
06-26 08:29:00.696 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: Relayout returned: old=(0,0,2560,1600) new=(0,0,2560,1600) req=(2560,1600)0 dur=6 res=0x40001 s={true 535618355200} ch=true
06-26 08:29:00.696 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: RELAYOUT_RES_KEEP_ALIVE_SURFACE on 40001
06-26 08:29:00.696 6784 18111 D OpenGLRenderer: createReliableSurface : 0x7cb52d1800(0x7cb5578000)
06-26 08:29:00.699 6784 18111 D OpenGLRenderer: makeCurrent EglSurface : 0x0 -> 0x7d02443000
06-26 08:29:00.700 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: stopped(false) old=false
06-26 08:29:00.700 6784 6784 D Main : lastRunVersion: 2000, version: 2000
06-26 08:29:00.718 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: Relayout returned: old=(0,0,2560,1600) new=(0,0,2560,1600) req=(2560,1600)0 dur=4 res=0x40001 s={true 535618355200} ch=false
06-26 08:29:00.732 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1
06-26 08:29:00.732 6784 6784 D InputMethodManager: prepareNavigationBarInfo() DecorView@fb6098c[MainActivity]
06-26 08:29:00.732 6784 6784 D InputMethodManager: getNavigationBarColor() -855310
06-26 08:29:00.733 6784 6784 D InputMethodManager: prepareNavigationBarInfo() DecorView@fb6098c[MainActivity]
06-26 08:29:00.733 6784 6784 D InputMethodManager: getNavigationBarColor() -855310
06-26 08:29:00.733 6784 6784 V InputMethodManager: Starting input: tba=de.badaix.snapcast ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
06-26 08:29:00.733 6784 6784 D InputMethodManager: startInputInner - Id : 0
06-26 08:29:00.733 6784 6784 I InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
06-26 08:29:00.735 6784 6784 D InputTransport: Input channel destroyed: 'ClientS', fd=75
06-26 08:29:02.091 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme pointer 0
06-26 08:29:02.226 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme pointer 1
06-26 08:29:02.649 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme pointer 0
06-26 08:29:02.712 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme pointer 1
06-26 08:29:02.728 6784 6784 D Service : stopPlayer
06-26 08:29:02.729 6784 6784 D Service : stopService
06-26 08:29:02.729 6784 6784 D Service : stop
06-26 08:29:02.729 6784 6784 D Service : stopProcess
06-26 08:29:02.731 6784 29500 W System.err: java.io.InterruptedIOException: read interrupted
06-26 08:29:02.736 6784 29500 W System.err: at libcore.io.Linux.readBytes(Native Method)
06-26 08:29:02.736 6784 29500 W System.err: at libcore.io.Linux.read(Linux.java:190)
06-26 08:29:02.736 6784 29500 W System.err: at libcore.io.ForwardingOs.read(ForwardingOs.java:177)
06-26 08:29:02.736 6784 29500 W System.err: at libcore.io.BlockGuardOs.read(BlockGuardOs.java:303)
06-26 08:29:02.736 6784 29500 W System.err: at libcore.io.ForwardingOs.read(ForwardingOs.java:177)
06-26 08:29:02.736 6784 29500 W System.err: at libcore.io.IoBridge.read(IoBridge.java:513)
06-26 08:29:02.736 6784 29500 W System.err: at java.io.FileInputStream.read(FileInputStream.java:313)
06-26 08:29:02.736 6784 29500 W System.err: at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
06-26 08:29:02.736 6784 29500 W System.err: at java.io.BufferedInputStream.read(BufferedInputStream.java:347)
06-26 08:29:02.736 6784 29500 W System.err: at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:291)
06-26 08:29:02.736 6784 29500 W System.err: at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:355)
06-26 08:29:02.736 6784 29500 W System.err: at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:181)
06-26 08:29:02.736 6784 29500 W System.err: at java.io.InputStreamReader.read(InputStreamReader.java:184)
06-26 08:29:02.736 6784 29500 W System.err: at java.io.BufferedReader.fill(BufferedReader.java:172)
06-26 08:29:02.736 6784 29500 W System.err: at java.io.BufferedReader.readLine(BufferedReader.java:335)
06-26 08:29:02.736 6784 29500 W System.err: at java.io.BufferedReader.readLine(BufferedReader.java:400)
06-26 08:29:02.736 6784 29500 W System.err: at de.badaix.snapcast.SnapclientService$1.run(SnapclientService.java:246)
06-26 08:29:02.736 6784 29500 W System.err: at java.lang.Thread.run(Thread.java:919)
06-26 08:29:02.855 6784 28817 D TCP : Received Message: '{"jsonrpc":"2.0","method":"Client.OnDisconnect","params":{"client":{"config":{"instance":1,"latency":-318,"name":"Bett","volume":{"muted":false,"percent":100}},"connected":false,"host":{"arch":"arm64-v8a","ip":"192.168.10.107","mac":"08:ae:d6:5d:7f:ed","name":"SM-T835","os":"Android 10"},"id":"26c6d10e-cae9-44a1-ae47-0da4b7a36ea3","lastSeen":{"sec":1593152940,"usec":182057},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.20.0"}},"id":"26c6d10e-cae9-44a1-ae47-0da4b7a36ea3"}}'
06-26 08:29:03.395 6784 6784 D Main : onPlayerStop
06-26 08:29:03.403 6784 6784 D Main : updateStartStopMenuItem: ic_media_play
06-26 08:29:03.427 6784 6784 I Choreographer: Skipped 41 frames! The application may be doing too much work on its main thread.
06-26 08:29:03.444 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: Relayout returned: old=(0,0,2560,1600) new=(0,0,2560,1600) req=(2560,1600)0 dur=10 res=0x40001 s={true 535618355200} ch=false
06-26 08:29:04.168 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme pointer 0
06-26 08:29:04.279 6784 6784 D ViewRootImpl@2c404dd[MainActivity]: ViewPostIme pointer 1
06-26 08:29:04.322 6784 6784 D Service : start host: 192.168.1.100, port: 1704
06-26 08:29:04.323 6784 6784 D Service : Running on a non-TV Device
06-26 08:29:04.326 6784 6784 D Service : startProcess
06-26 08:29:04.327 6784 6784 I Service : Configured engine: Auto, active engine: oboe, sampleformat: 48000:16:*
06-26 08:29:04.715 6784 32600 D Main : onPlayerStart
06-26 08:29:04.716 6784 32600 D Main : [Info] (Connection) Resolving host IP for: 192.168.1.100
06-26 08:29:04.716 6784 32600 D Main : [Info] (Connection) Connecting
06-26 08:29:04.716 6784 6784 D Main : updateStartStopMenuItem: ic_media_stop
06-26 08:29:04.720 6784 32600 D Main : [Notice] (Connection) Connected to 192.168.1.100
06-26 08:29:05.996 6784 32600 D Main : [Info] (Connection) My MAC: "08:ae:d6:5d:7f:ed", socket: 7
06-26 08:29:06.001 6784 28817 D TCP : Received Message: '{"jsonrpc":"2.0","method":"Client.OnConnect","params":{"client":{"config":{"instance":1,"latency":-318,"name":"Bett","volume":{"muted":false,"percent":100}},"connected":true,"host":{"arch":"arm64-v8a","ip":"192.168.10.107","mac":"08:ae:d6:5d:7f:ed","name":"SM-T835","os":"Android 10"},"id":"26c6d10e-cae9-44a1-ae47-0da4b7a36ea3","lastSeen":{"sec":1593152943,"usec":327750},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.20.0"}},"id":"26c6d10e-cae9-44a1-ae47-0da4b7a36ea3"}}'
06-26 08:29:06.006 6784 32600 D Main : [Info] (Controller) ServerSettings - buffer: 400, latency: -318, volume: 100, muted: 0
06-26 08:29:06.008 6784 32600 D Main : [Info] (Controller) Codec: flac, sampleformat: 44100:16:2
06-26 08:29:06.008 6784 32600 D Main : [Info] (Player) Player name: oboe, device: default, description: <none>, idx: -1, sharing mode: shared
06-26 08:29:06.008 6784 32600 D Main : [Info] (Player) Mixer mode: software, parameters: <none>
06-26 08:29:06.008 6784 32600 D Main : [Info] (Player) Sampleformat: 44100:16:2, stream: 44100:16:2
06-26 08:29:06.009 6784 32600 D Main : [Info] (OboePlayer) Init start
06-26 08:29:06.009 6784 32600 D Main : [Info] (OboePlayer) DefaultStreamValues::SampleRate: 48000, DefaultStreamValues::FramesPerBurst: 192
06-26 08:29:06.032 6784 32600 D Main : [Info] (OboePlayer) BufferSizeInFrames: 1764, FramesPerBurst: 882
06-26 08:29:06.032 6784 32600 D Main : [Info] (OboePlayer) AudioApi: AAudio
06-26 08:29:06.032 6784 32600 D Main : [Info] (OboePlayer) Init done
06-26 08:29:06.032 6784 32600 D Main : [Info] (OboePlayer) Start
06-26 08:29:06.032 6784 32600 D Main : [Info] (Stream) no chunks available
06-26 08:29:06.296 6784 32600 D Main : [Info] (Controller) diff to server [ms]: 2.0607e+09
06-26 08:29:07.005 6784 32600 D Main : [Debug] (Stats) Chunk: -2 -2 -1 -1 28 89 0
06-26 08:29:08.007 6784 32600 D Main : [Debug] (Stats) Chunk: -2 -2 -2 -2 100 87 0
06-26 08:29:09.005 6784 32600 D Main : [Debug] (Stats) Chunk: 0 0 -2 -2 172 89 3
06-26 08:29:10.005 6784 32600 D Main : [Debug] (Stats) Chunk: -1 -1 0 -1 243 89 1
I don't have the exact point of failure, the log doesn't seem to go back that far.
However, when it happens i get this when playing content (without sound)
06-26 07:46:10.686 6784 28817 D TCP : Received Message: '{"jsonrpc":"2.0","method":"Client.OnVolumeChanged","params":{"id":"26c6d10e-cae9-44a1-ae47-0da4b7a36ea3","volume":{"muted":false,"percent":8}}}'
06-26 07:46:10.689 6784 28836 D Main : [Info] (Controller) ServerSettings - buffer: 400, latency: -318, volume: 8, muted: 0
06-26 07:46:10.696 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:10.836 6784 28836 I chatty : uid=10018(de.badaix.snapcast) identical 10 lines
06-26 07:46:10.836 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:10.855 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:11.576 6784 28836 I chatty : uid=10018(de.badaix.snapcast) identical 51 lines
06-26 07:46:11.576 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:11.596 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:11.616 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:12.556 6784 28836 I chatty : uid=10018(de.badaix.snapcast) identical 68 lines
06-26 07:46:12.576 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:12.596 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:12.836 6784 28836 I chatty : uid=10018(de.badaix.snapcast) identical 18 lines
06-26 07:46:12.855 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:12.876 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:13.575 6784 28836 I chatty : uid=10018(de.badaix.snapcast) identical 50 lines
06-26 07:46:13.576 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:13.595 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:13.635 6784 28836 I chatty : uid=10018(de.badaix.snapcast) identical 2 lines
06-26 07:46:13.635 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:13.655 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:13.675 6784 28836 D Main : [Info] (Stream) outputBufferDacTime > bufferMs: 2147483 > 718
06-26 07:46:13.676 6784 28836 I chatty : uid=10018(de.badaix.snapcast) identical 1 line
After restarting the service it looks normal:
06-26 08:38:10.012 6784 5303 I chatty : uid=10018(de.badaix.snapcast) Thread-16 identical 1 line
06-26 08:38:11.012 6784 5303 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 112 0
06-26 08:38:12.013 6784 5303 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 112 0
06-26 08:38:13.012 6784 5303 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 112 0
06-26 08:38:14.013 6784 5303 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 112 0
06-26 08:38:15.012 6784 5303 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 112 0
06-26 08:38:16.013 6784 5303 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 112 0
06-26 08:38:17.013 6784 5303 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 112 0
06-26 08:38:18.012 6784 5303 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 112 0
06-26 08:38:19.012 6784 5303 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 112 0
06-26 08:38:20.012 6784 5303 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 112 0
06-26 08:38:21.014 6784 5303 D Main : [Debug] (Stats) Chunk: 0 0 0 0 500 112 0
Could it be an issue with the buffer?
Please add support for icon shape
https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive
https://material.io/guidelines/style/icons.html
I recently upgraded my system from an old version and discovered Snapweb for the first time; I am very impressed by it, particularly the ability to change the stream on a client or group with a drop-down menu; this makes it very quick and easy to select different "channels" per client.
I was hoping this feature would also be available in Snapdroid; currently, it takes four taps (gear, current stream, new stream, back) to change stream. So either a dropdown like Snapweb (two taps), or, even better, just a list of streams horizontally as radio buttons at the top, on the left of the gear, where the current stream name is, would make changing very quick.
I'm afraid my Java-foo is non-existent so I'm not sure how much help I could be coding this, but happy to give it a go is someone can point me in the right direction.
Hello,
I have problem when build the Snapdroid in Windows 10
I used :
I have set maven credentials (username and password) and sync the Gradle. but I getting error:
Task :prepareKotlinBuildScriptModel UP-TO-DATE
C/C++: debug|x86 :CMake Error at D:/android-sdk/cmake/3.22.1/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
C/C++: debug|x86 : Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
C/C++: debug|x86 :Call Stack (most recent call first):
C/C++: debug|x86 : D:/android-sdk/cmake/3.22.1/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
C/C++: debug|x86 : D:/android-sdk/cmake/3.22.1/share/cmake-3.22/Modules/FindPkgConfig.cmake:99 (find_package_handle_standard_args)
C/C++: debug|x86 : CMakeLists.txt:151 (find_package)
[CXX1405] error when building with cmake using D:\Workspace Android\snapdroid\Snapcast\src\main\cpp\snapcast\CMakeLists.txt: Build command failed.
Error while executing process D:\android-sdk\cmake\3.22.1\bin\cmake.exe with arguments {-HD:\Workspace Android\snapdroid\Snapcast\src\main\cpp\snapcast -DCMAKE_SYSTEM_NAME=Android -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_SYSTEM_VERSION=19 -DANDROID_PLATFORM=android-19 -DANDROID_ABI=x86 -DCMAKE_ANDROID_ARCH_ABI=x86 -DANDROID_NDK=D:\android-sdk\ndk\24.0.8215888 -DCMAKE_ANDROID_NDK=D:\android-sdk\ndk\24.0.8215888 -DCMAKE_TOOLCHAIN_FILE=D:\android-sdk\ndk\24.0.8215888\build\cmake\android.toolchain.cmake -DCMAKE_MAKE_PROGRAM=D:\android-sdk\cmake\3.22.1\bin\ninja.exe -DCMAKE_CXX_FLAGS=-std=c++14 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\Workspace Android\snapdroid\Snapcast\build\intermediates\cxx\Debug\57n3r2m2\obj\x86 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=D:\Workspace Android\snapdroid\Snapcast\build\intermediates\cxx\Debug\57n3r2m2\obj\x86 -DCMAKE_BUILD_TYPE=Debug -DCMAKE_FIND_ROOT_PATH=D:\Workspace Android\snapdroid\Snapcast.cxx\Debug\57n3r2m2\prefab\x86\prefab -BD:\Workspace Android\snapdroid\Snapcast.cxx\Debug\57n3r2m2\x86 -GNinja -DANDROID_STL=c++_static -DBUILD_SERVER=OFF -DBUILD_TESTS=OFF}
-- Android: Targeting API '19' with architecture 'x86', ABI 'x86', and processor 'i686'
-- Android: Selected unified Clang toolchain
-- The CXX compiler identification is Clang 14.0.1
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/android-sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The C compiler identification is Clang 14.0.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/android-sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Performing Test HAVE_CXX_ATOMICS_WITHOUT_LIB
-- Performing Test HAVE_CXX_ATOMICS_WITHOUT_LIB - Success
-- Configuring incomplete, errors occurred!
See also "D:/Workspace Android/snapdroid/Snapcast/.cxx/Debug/57n3r2m2/x86/CMakeFiles/CMakeOutput.log".
CMake Error at D:/android-sdk/cmake/3.22.1/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
Call Stack (most recent call first):
D:/android-sdk/cmake/3.22.1/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
D:/android-sdk/cmake/3.22.1/share/cmake-3.22/Modules/FindPkgConfig.cmake:99 (find_package_handle_standard_args)
CMakeLists.txt:151 (find_package)
BUILD SUCCESSFUL in 26s
Please help me resolve the error.
Thank you
Hi,
Snapdroid 0.24.0 detects my Snapcast server by its hostname and prefills the host field, and the ports fields (1704+1705). But it can not connect to the server.
Using the IP of the server instead of the hostname works. With other clients such as https://github.com/cristianpb/muse, using the hostname works. Everything else seems fine, though :)
My Snapserver is v0.23.0 (cannot compile the v0.24.0). Previously it was v0.15.0 and Snapdroid 0.24.0 was working with it too.
Also, thanks for this very cool stuff !
From @gerroon on January 16, 2018 17:44
Hi
It would be nice f we have a simple dark theme for Android . The current android features seems to be sufficient for now. We just need a dark theme for night use.
thanks
Copied from original issue: badaix/snapcast#346
The Android app can't play opus audio streams. I guess it's because the opus decoder it's not native to all versions of Android?
I am having trouble with my android clients. If I start the playback on any android device, it plays sound for less then a second und then is silent forever. I have no clue why. This happens with version 0.27 and 0.26 on Android 13 and a five year old android. The sever is only throwing errors, after I hit the stop button in the app.
Here is what the snapserver says on connect:
Sep 21 21:03:37 mopsam snapserver[2130895]: StreamServer::NewConnection: 192.168.0.72
Sep 21 21:03:37 mopsam snapserver[2130895]: Hello from 8c60dc36-671d-4124-9b17-0da45115e3a4, host: SM-S911B, v0.27.0, ClientName: Snapclient, OS: Android 13, Arch: arm64-v8a, Protocol version: 2
And this is shown, after I stop the playback again:
Sep 21 21:04:02 mopsam snapserver[2130895]: Error reading message header of length 0: End of file
Sep 21 21:04:02 mopsam snapserver[2130895]: onDisconnect: 8c60dc36-671d-4124-9b17-0da45115e3a4
Sep 21 21:04:02 mopsam snapserver[2130895]: Error in socket shutdown: Transport endpoint is not connected
Can anyone please help?
When playing some audio with Snapdroid 24.0.0 on my Android 10 (LineageOS), my phone keeps being quiet. The audio perfectly plays on my RaspberryPi with Snapclient.
I started playing while tracing the log of the app with:
adb shell pidof -s de.badaix.snapcast
adb logcat --pid=xxxxx
The Android app cannot successfully contact the Snapserver, although everything is properly configured (see below). After hitting the play button in Snapdroid, it changes to a stop button but nothing else happens.
Does anybody know, what might cause such a problem?
Many thanks!
Nuesel
--------- beginning of main
04-10 19:41:10.401 26506 26506 W main : type=1400 audit(0.0:35480): avc: denied { write } for name="tasks" dev="tmpfs" ino=6046 scontext=u:r:zygote:s0 tcontext=u:object_r:device:s0 tclass=file permissive=0 app=de.badaix.snapcast
04-10 19:41:10.401 26506 26506 W main : type=1300 audit(0.0:35480): arch=40000028 syscall=334 per=8 success=no exit=-13 a0=ffffff9c a1=e7043a40 a2=2 a3=0 items=0 ppid=3439 auid=4294967295 uid=0 gid=10145 euid=0 suid=0 fsuid=0 egid=10145 sgid=10145 fsgid=10145 ses=4294967295 tty=(none) exe="/system/bin/app_process32" subj=u:r:zygote:s0 key=(null) app=de.badaix.snapcast
04-10 19:41:10.510 26506 26506 I MultiDex: VM with version 2.1.0 has multidex support
04-10 19:41:10.510 26506 26506 I MultiDex: Installing application
04-10 19:41:10.510 26506 26506 I MultiDex: VM has multidex support, MultiDex support library is disabled.
04-10 19:41:22.789 26506 26506 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@2af5461
04-10 19:41:24.588 26506 26506 D GroupList: onCreateView: GroupListFragment{85c511a (f380fd66-9b78-42f0-8ea8-23a0564f7216) id=0x7f09008e}
04-10 19:41:24.593 26506 26506 D Main : Samplerate: 8000
04-10 19:41:24.597 26506 26506 D Main : Samplerate: 8000, buffer: 1408
04-10 19:41:24.597 26506 26506 D Main : Samplerate: 11025
04-10 19:41:24.597 26506 26506 D Main : Samplerate: 11025, buffer: 1920
04-10 19:41:24.597 26506 26506 D Main : Samplerate: 16000
04-10 19:41:24.597 26506 26506 D Main : Samplerate: 16000, buffer: 2816
04-10 19:41:24.597 26506 26506 D Main : Samplerate: 22050
04-10 19:41:24.598 26506 26506 D Main : Samplerate: 22050, buffer: 3840
04-10 19:41:24.598 26506 26506 D Main : Samplerate: 44100
04-10 19:41:24.598 26506 26506 D Main : Samplerate: 44100, buffer: 7552
04-10 19:41:24.598 26506 26506 D Main : Samplerate: 48000
04-10 19:41:24.598 26506 26506 D Main : Samplerate: 48000, buffer: 8192
04-10 19:41:24.599 26506 26506 D Main : Samplerate: 48000
04-10 19:41:24.613 26506 26630 D RC : onConnecting
04-10 19:41:24.694 26506 26626 D mali_winsys: EGLint new_window_surface(egl_winsys_display*, void*, EGLSurface, EGLConfig, egl_winsys_surface**, egl_color_buffer_format*, EGLBoolean) returns 0x3000, [1080x1920]-format:1
04-10 19:41:24.700 26506 26626 W Gralloc3: mapper 3.x is not supported
04-10 19:41:24.702 26506 26630 D TCP : Connecting to 192.168.84.20:1705
04-10 19:41:24.704 26506 26626 E ion : ioctl c0044901 failed with code -1: Invalid argument
04-10 19:41:24.708 26506 26630 D RC : onConnected
04-10 19:41:24.710 26506 26646 D TCP : Sending: {"jsonrpc":"2.0","method":"Server.GetStatus","id":0}
04-10 19:41:24.718 26506 26630 D TCP : Received Message: '{"id":0,"jsonrpc":"2.0","result":{"server":{"groups":[{"clients":[{"config":{"instance":1,"latency":0,"name":"","volume":{"muted":false,"percent":100}},"connected":false,"host":{"arch":"aarch64","ip":"192.168.84.149","mac":"e4:5f:01:87:46:59","name":"Musikbox","os":"Debian GNU/Linux 11 (bullseye)"},"id":"e4:5f:01:87:46:59","lastSeen":{"sec":1649612299,"usec":9058},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.26.0"}},{"config":{"instance":1,"latency":0,"name":"Ubuntu Laptop","volume":{"muted":false,"percent":100}},"connected":false,"host":{"arch":"x86_64","ip":"192.168.84.110","mac":"98:2c:bc:39:06:57","name":"ubuntu","os":"Linux Mint 20.3"},"id":"98:2c:bc:39:06:57","lastSeen":{"sec":1644178156,"usec":25267},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.26.0"}}],"id":"59bc600a-2ea4-c332-e1af-b0aa759174fe","muted":false,"name":"","stream_id":"default"}],"server":{"host":{"arch":"x86_64","ip":"","mac":"","name":"george","os":"Ubuntu 20.04.2 LTS"},"snapserver":{"controlProtocolVersion":1,"name":"Snapserver","protocolVersion":1,"version":"0.26.0"}},"streams":[{"id":"default","properties":{"canControl":false,"canGoNext":false,"canGoPrevious":false,"canPause":false,"canPlay":false,"canSeek":false},"status":"playing","uri":{"fragment":"","host":"","path":"/tmp/snapfifo","query":{"chunk_ms":"40","codec":"flac","name":"default","sampleformat":"48000:16:2"},"raw":"pipe:////tmp/snapfifo?chunk_ms=40&codec=flac&name=default&sampleformat=48000:16:2","scheme":"pipe"}}]}}}'
04-10 19:41:24.719 26506 26630 D RC : Response to: Server.GetStatus
04-10 19:41:24.737 26506 26506 D Main : updateStartStopMenuItem: ic_media_play
04-10 19:41:35.009 26506 26506 D Service : start host: 192.168.84.20, port: 1704
04-10 19:41:35.010 26506 26506 D Service : Running on a non-TV Device
04-10 19:41:35.021 26506 26506 D Service : startProcess
04-10 19:41:35.022 26506 26506 I Service : Configured engine: Auto, active engine: oboe, sampleformat: 48000:16:*
04-10 19:41:35.041 26506 26659 D Main : onPlayerStart
04-10 19:41:35.041 26506 26506 D Main : updateStartStopMenuItem: ic_media_stop
I'm running Snapserver on a different network, and I can connect to it fine from another network on both laptop and desktop by running snapclient -h <address of remote server>
. However, when trying to connect my phone from the last network, it just reports "error: Host unreachable". Ports are standard and port forwarded so I'm not sure what's happening. Is there any way I can debug this?
Hey there,
I'm having an issue where playback is fairly choppy over bluetooth on the android app, but plays normally over a wired connection to the same speaker (also plays fine from builtin phone speaker). I have tested this with 3 different bluetooth devices (headphones, and 2 speakers) with the same results. I also verified that spotify plays normally over the bluetooth without snapcast, so it seems snapcast/snapdroid/android is the issue, and not wifi or bluetooth connections.
I realize bluetooth will add latency to the playback, but for my purposes this is not an important feature. is the added bluetooth latency being calculated by the server or client and could this be the cause of the issue. if so, could we get an option to not worry about the sync of certain specified devices, and prioritize smooth playback? I'm just trying to listen to my phonograph in different rooms of the house, and/or on my bluetooth headphones.
server side: phono > rca/usb input(archlinux pc) > parec > fifo.
client side: snapdroid > bluetooth speaker
issue persists with all different codecs. my rca input device only supports 48k, so i haven't tried other rates. s16le
let me know if this is known behavior, or if i should provide any logs, or audio recordings of the issue.
Hello, yesterday i tried the new 19.0 update.
This however, also added some new audio issues.
2 examples:
Both can be fixed by stopping and restarting the connection from the menu.
Hello,
Could I clone this code of yours, to make a very thin client of the snapdroid app, with no other client control, volume control?
I'd like to build a version that I will eventually install my garage with a old Android phone, that does not need the extra volume controls, etc. The plan is to also give my parents the same app, that they can listen to it as well, and not have them meddle around with other client volumes, etc.
Like to dumb it down as far as possible, with only a play/stop button in the app, but keep the other settings screens.
I do have only one server playing music, almost like webradio, so no need to have multi-audio grouping required.
From @gerroon on January 16, 2018 17:41
Hi
I seem to be able to control another android device's volume when I open the android apps . However after initial fiddling with another android device volume, I loose the ability to do so. I restart it works again.
On the otherhand the android client can control the Debian Snapclient no problem. This seems to be an android to android only.
thanks
Copied from original issue: badaix/snapcast#345
Currently the host field is displayed as client name. When running snapcast client in docker it is an alphanumeric string like ad8901j9fd0.
As there is an unused unique id field that defaults to the macadress it shouldn't be hard to add and option to display the id field instead of the host field
or
a really simple approach would be to change the layout to display the ID by default.
Hey there, I really love your project.
I've been using Snapcast for a while now and due to a recent update on my setup I've been wondering if there is a way to control snapdroid with adb commands. I am able to start and stop the app itself but I was hoping I could turn on/off the client as well. I'm planning on building my device into another setup so this would be immensely helpful. Otherwise I would always have to dis- and reassemble everything, if the client stops.
According to the SnapclientService.java
and MainActivity.java
files, I figured the intent must be something like ACTION_START
or ACTION_STOP
, but it doesn't work. The closest reaction I've got, seemed to be reopening the MainActivity on top of the existing one.
adb shell am broadcast -a android.intent.action.ACTION_START -d de.badaix.snapcast/.MainActivity --es "<snapserver-ip>" --ei 1704
Any help on this is highly appreciated.
I currently use the client on a tablet in the bathroom.
Once I'm done and going to bed, I turn of my HTPC and therefore also the snapcast server.
As such, it would be nice if the android client would stop trying to reconnect after some time (a minute sounds reasonable to me) as otherwise I'd imagine the battery would drain a lot more quickly.
This should only apply if Auto connect is not enabled of course.
Hello,
After successfully cloning your repos and stuff to build my own snapcast APK, it breaks when I try to start the snapclient.so binary, it says no such file, running on Android 13 on my Nothing Phone 1.
Lib location: /data/app/~~Rm6FJWhL1HQjzfEctD2Imw==/com.xx.snapdroid-wc7bYVFX2WlWqchndwCfAA==/lib/arm64
2023-04-06 23:10:48.710 10256-10256 System.err com.xx.snapdroid W java.io.IOException: Cannot run program "/data/app/~~Rm6FJWhL1HQjzfEctD2Imw==/com.xx.snapdroid-wc7bYVFX2WlWqchndwCfAA==/lib/arm64/libsnapclient.so": error=2, No such file or directory
I can confirm with binwalk that the APK being built does have the library for all the architectures (x86, armeabi-v7a, x86_64 and arm64-v8a)
Wouldn´t it be great to be able stop a client ?
When using snapclient on less ore more headless Android TV devices, the Android App on another mobile in the same network is perfect as "remote control", except off "stopping" the client. Of course, the client can be muted, but that´s not the same I guess.
Funny thing is, that pressing mute/unmute re-starts the client again. Maybe the "Stop" isn´t far away...
Moreover, an additional Checkbox in the Snapclient Settings like "Auto start Snapclient" like i.e. "Start Snapclient in stopped mode" could be helpful.
A headless device with a snapclient on it auto-starts, but remains in stopped mode, so it can be (re-)activated by another Snapcast App on a mobile, etc.
https://developer.android.com/guide/topics/media/media-controls
Could display meta data, depends on badaix/snapcast#749
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.