Thanks for adding the Android TV features in the newest beta, works nicely now!
Though, the big leftover issue is all the crashing issues I have on multiple devices (Motorola Edge+ 2023, TCL Q7 55Q750G with Google TV, Nvidia Shield TV 2017, RockTek G2, Onn 4K Streaming Box, Amazon Fire HD 10 Plus tablet, etc.), with full app crashes when using Exo and semi-soft crashes (server disconnects) when using Android System. I was hoping when I created a new MC server (and left all settings default) it would stop, but alas it didn't. Anyways, I did get adb and logcat up and running (on my Motorola Edge+ 2023 running Android 14) and have been using them to log the crashes when playing back audio and rapidly switching tracks when using Exo and it's been getting some interesting data. Here's a tidbit of the end of the logcat log when using Exo and rapidly changing tracks and a full app crash occurs...
02-28 06:06:03.188 4015 5091 V Avrcp_ext: updateCurrentMediaState: mMediaController: MediaController (dancingtree.mo4media@e0e6228) Open Car, Porcupine Tree, Deadwing
02-28 06:06:03.188 4015 5091 D Avrcp_ext: isPackageNameValid: browsedPackage = dancingtree.mo4mediaisValid = true
02-28 06:06:03.188 4015 5091 V Avrcp_ext: isBrowseSupported for dancingtree.mo4media: false
02-28 06:06:03.222 2945 6310 I MediaSessionStack: removeSession | record: dancingtree.mo4media/MO4media (userId=0)
02-28 06:06:03.224 4015 5091 D Avrcp_ext: updateCurrentController: MediaController (dancingtree.mo4media@e0e6228) Open Car, Porcupine Tree, Deadwing to null
02-28 06:06:03.225 4015 5091 W McpService: updatePlayerName pkg dancingtree.mo4media removed true
02-28 06:06:03.233 4015 5093 I Avrcp_ext: onMediaKeyEventSessionChanged: packageName = dancingtree.mo4media
02-28 06:06:03.233 4015 5093 W McpService: updatePlayerName pkg dancingtree.mo4media removed false
02-28 06:06:03.233 4015 5093 D McpService: MediaPlayerNameUpdate name: dancingtree.mo4media
02-28 06:06:03.233 4015 5093 W Avrcp_ext: Changing addressed media session to dancingtree.mo4media
02-28 06:06:03.233 4015 5093 V Avrcp_ext: getMediaPlayerInfo: Found dancingtree.mo4media
02-28 06:06:03.233 4015 5093 V Avrcp_ext: Set addressed #7 MediaPlayerInfo dancingtree.mo4media (as 'MO 4Media') Type = 1, SubType = 0, Status = 0 Feature Bits [40 41 42 44 45 47 48 58] Controller: null
02-28 06:06:03.234 4015 5163 V McpService: MEDIA_PLAYER_NAME_UPDATE msg: dancingtree.mo4media
02-28 06:06:03.234 4015 5163 I bt_stack: [INFO:btif_mcp.cc(83)] MediaPlayerName: namedancingtree.mo4media
02-28 06:06:03.321 2945 6313 I MediaFocusControl: requestAudioFocus() from uid/pid 10387/26765 AA=USAGE_MEDIA/CONTENT_TYPE_MUSIC clientId=android.media.AudioManager@3a1de56crc64fc68bfe11eb03c38.b@2935071 callingPack=dancingtree.mo4media req=1 flags=0x2 sdk=33
02-28 06:06:03.322 2945 6309 I WifiService: acquireWifiLock uid=10387 lockMode=1 packageName=dancingtree.mo4media
02-28 06:06:03.326 26765 26765 E AndroidRuntime: Process: dancingtree.mo4media, PID: 26765
02-28 06:06:03.332 2945 6313 W ActivityTaskManager: Force finishing activity dancingtree.mo4media/crc64fc68bfe11eb03c38.MainActivity
02-28 06:06:03.379 2945 6310 I ActivityManager: appDiedLocked: app=ProcessRecord{4fda0a4 26765:dancingtree.mo4media/u0a387} thread=android.os.BinderProxy@9642e3b fromBinderDied=true isKilledByAm=false reason=null
02-28 06:06:03.379 2945 6310 I ActivityManager: Process dancingtree.mo4media (pid 26765) has died: fg TOP
02-28 06:06:03.381 2945 6310 W ActivityManager: Scheduling restart of crashed service dancingtree.mo4media/crc64fc68bfe11eb03c38.SimpleService in 1000ms for start-requested
02-28 06:06:03.381 2945 6310 D RestartModeController: markWaitRestartAppIsSuicided null processName=dancingtree.mo4media
02-28 06:06:03.381 2945 6309 I ImeTracker: dancingtree.mo4media:80b8e1ca: onRequestHide at ORIGIN_SERVER_HIDE_INPUT reason HIDE_REMOVE_CLIENT
02-28 06:06:03.382 2945 6309 I ImeTracker: dancingtree.mo4media:80b8e1ca: onCancelled at PHASE_SERVER_SHOULD_HIDE
02-28 06:06:03.385 2945 3836 I WindowManager: WIN DEATH: Window{bd55450 u0 dancingtree.mo4media/crc64fc68bfe11eb03c38.MainActivity}
02-28 06:06:03.385 2945 3836 W InputManager-JNI: Input channel object 'bd55450 dancingtree.mo4media/crc64fc68bfe11eb03c38.MainActivity (client)' was disposed without first being removed with the input manager!
02-28 06:06:03.400 2945 3013 W WindowManager: Failed to deliver inset control state change to w=Window{bd55450 u0 dancingtree.mo4media/crc64fc68bfe11eb03c38.MainActivity EXITING}
02-28 06:06:03.411 2945 3009 V WindowManager: info={id=1642 t=CLOSE f=0x10 trk=0 r=[0@Point(0, 0)] c=[{WCT{RemoteToken{8d41dab Task{205ff34 #190 type=home}}} m=TO_FRONT f=SHOW_WALLPAPER|MOVE_TO_TOP leash=Surface(name=Task=190)/@0xa21b6ee sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) d=0},{WCT{RemoteToken{87b4797 Task{822b5f9 #449 type=standard A=10387:dancingtree.mo4media}}} m=CLOSE f=NONE leash=Surface(name=Task=449)/@0x5102b31 sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) d=0},{null m=TO_FRONT f=IS_WALLPAPER leash=Surface(name=WallpaperWindowToken{2fed831 token=android.os.Binder@4e0ecd8})/@0x54b0de0 sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) d=0}]}
02-28 06:06:03.422 2945 3013 W WindowManager: Failed to deliver inset control state change to w=Window{bd55450 u0 dancingtree.mo4media/crc64fc68bfe11eb03c38.MainActivity EXITING}
02-28 06:06:03.651 2945 6313 W WindowManager: Exception thrown during dispatchAppVisibility Window{bd55450 u0 dancingtree.mo4media/crc64fc68bfe11eb03c38.MainActivity EXITING}
02-28 06:06:03.658 19183 19387 E music : onNotificationRemoved... StatusBarNotification(pkg=com.arn.scrobble user=UserHandle{0} id=0 tag=dancingtree.mo4media key=0|com.arn.scrobble|0|dancingtree.mo4media|10380: Notification(channel=noti_scrobbling shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0x0 color=0xffffb0cd category=transport actions=3 vis=SECRET))
02-28 06:06:03.731 19183 19387 E music : onNotificationRemoved... StatusBarNotification(pkg=dancingtree.mo4media user=UserHandle{0} id=10000 tag=null key=0|dancingtree.mo4media|10000|null|10387: Notification(channel=MO1 shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0x0 color=0x00000000 category=transport vis=PRIVATE))
02-28 06:06:03.733 19183 19387 E music : dancingtree.mo4media
02-28 06:06:03.833 2945 3012 W ActivityTaskManager: Activity top resumed state loss timeout for ActivityRecord{693c643 u0 dancingtree.mo4media/crc64fc68bfe11eb03c38.MainActivity t-1 f}}
02-28 06:06:04.401 2945 3020 I ActivityManager: Start proc 27741:dancingtree.mo4media/u0a387 for service {dancingtree.mo4media/crc64fc68bfe11eb03c38.SimpleService}
02-28 06:06:04.429 27741 27741 D nativeloader: Configuring clns-4 for other apk /system/framework/org.apache.http.legacy.jar. target_sdk_version=33, uses_libraries=ALL, library_path=/data/app/~~Z7PfOyGKcsUSymglsHibHw==/dancingtree.mo4media-CHEWefeOUHwYvPHubFlNqA==/lib/arm64:/data/app/~~Z7PfOyGKcsUSymglsHibHw==/dancingtree.mo4media-CHEWefeOUHwYvPHubFlNqA==/base.apk!/lib/arm64-v8a:/data/app/~~Z7PfOyGKcsUSymglsHibHw==/dancingtree.mo4media-CHEWefeOUHwYvPHubFlNqA==/split_config.arm64_v8a.apk!/lib/arm64-v8a:/data/app/~~Z7PfOyGKcsUSymglsHibHw==/dancingtree.mo4media-CHEWefeOUHwYvPHubFlNqA==/split_config.en.apk!/lib/arm64-v8a:/data/app/~~Z7PfOyGKcsUSymglsHibHw==/dancingtree.mo4media-CHEWefeOUHwYvPHubFlNqA==/split_config.xxhdpi.apk!/lib/arm64-v8a, permitted_path=/data:/mnt/expand:/data/user/0/dancingtree.mo4media
02-28 06:06:04.436 27741 27741 W ziparchive: Unable to open '/data/app/~~Z7PfOyGKcsUSymglsHibHw==/dancingtree.mo4media-CHEWefeOUHwYvPHubFlNqA==/split_config.arm64_v8a.dm': No such file or directory
02-28 06:06:04.436 27741 27741 W ziparchive: Unable to open '/data/app/~~Z7PfOyGKcsUSymglsHibHw==/dancingtree.mo4media-CHEWefeOUHwYvPHubFlNqA==/split_config.arm64_v8a.dm': No such file or directory
02-28 06:06:04.437 27741 27741 W ziparchive: Unable to open '/data/app/~~Z7PfOyGKcsUSymglsHibHw==/dancingtree.mo4media-CHEWefeOUHwYvPHubFlNqA==/split_config.en.dm': No such file or directory
02-28 06:06:04.437 27741 27741 W ziparchive: Unable to open '/data/app/~~Z7PfOyGKcsUSymglsHibHw==/dancingtree.mo4media-CHEWefeOUHwYvPHubFlNqA==/split_config.en.dm': No such file or directory
02-28 06:06:04.438 27741 27741 W ziparchive: Unable to open '/data/app/~~Z7PfOyGKcsUSymglsHibHw==/dancingtree.mo4media-CHEWefeOUHwYvPHubFlNqA==/split_config.xxhdpi.dm': No such file or directory
02-28 06:06:04.438 27741 27741 W ziparchive: Unable to open '/data/app/~~Z7PfOyGKcsUSymglsHibHw==/dancingtree.mo4media-CHEWefeOUHwYvPHubFlNqA==/split_config.xxhdpi.dm': No such file or directory
Here's a tidbit of the end when using Android System when rapidly switching tracks, the app disconnects from the server however it doesn't fully crash (I guess you could call it a soft crash)...
02-28 06:14:14.833 2945 4491 I MediaFocusControl: requestAudioFocus() from uid/pid 10387/27741 AA=USAGE_MEDIA/CONTENT_TYPE_MUSIC clientId=android.media.AudioManager@b45b2decrc64fc68bfe11eb03c38.b@970219 callingPack=dancingtree.mo4media req=1 flags=0x2 sdk=33
02-28 06:14:14.834 4015 5091 V Avrcp_ext: updateCurrentMediaState: mMediaController: MediaController (dancingtree.mo4media@4fb78d4) Prodigal, Porcupine Tree, In Absentia
02-28 06:14:14.839 4015 5091 D Avrcp_ext: isPackageNameValid: browsedPackage = dancingtree.mo4mediaisValid = true
02-28 06:14:14.839 4015 5091 V Avrcp_ext: isBrowseSupported for dancingtree.mo4media: false
02-28 06:14:14.842 4015 5091 V Avrcp_ext: updateCurrentMediaState: mMediaController: MediaController (dancingtree.mo4media@4fb78d4) Prodigal, Porcupine Tree, In Absentia
02-28 06:14:14.842 4015 5091 D Avrcp_ext: isPackageNameValid: browsedPackage = dancingtree.mo4mediaisValid = true
02-28 06:14:14.842 4015 5091 V Avrcp_ext: isBrowseSupported for dancingtree.mo4media: false
02-28 06:14:14.844 19183 19387 E music : Blocked onNotificationPosted StatusBarNotification(pkg=com.arn.scrobble user=UserHandle{0} id=0 tag=dancingtree.mo4media key=0|com.arn.scrobble|0|dancingtree.mo4media|10380: Notification(channel=noti_scrobbling shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0x0 color=0xffffb0cd category=transport actions=3 vis=SECRET))
02-28 06:14:14.864 7170 7170 D NotificationMonitorService: onNotificationPosted: dancingtree.mo4media
02-28 06:14:14.876 2945 2977 I MediaSessionStack: removeSession | record: dancingtree.mo4media/MO4media (userId=0)
02-28 06:14:14.877 4015 5093 I Avrcp_ext: onMediaKeyEventSessionChanged: packageName = dancingtree.mo4media
02-28 06:14:14.877 4015 5093 W McpService: updatePlayerName pkg dancingtree.mo4media removed false
02-28 06:14:14.877 4015 5093 D McpService: player name is same no need to update dancingtree.mo4media
02-28 06:14:14.877 4015 5093 V Avrcp_ext: Player 7 package: dancingtree.mo4media
02-28 06:14:14.878 4015 5091 D Avrcp_ext: updateCurrentController: MediaController (dancingtree.mo4media@4fb78d4) Prodigal, Porcupine Tree, In Absentia to null
02-28 06:14:14.910 4015 5091 W McpService: updatePlayerName pkg dancingtree.mo4media removed true
02-28 06:14:14.910 19183 19387 E music : onNotificationPosted...StatusBarNotification(pkg=dancingtree.mo4media user=UserHandle{0} id=10000 tag=null key=0|dancingtree.mo4media|10000|null|10387: Notification(channel=MO1 shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0x0 color=0x00000000 category=transport vis=PRIVATE))
02-28 06:14:14.911 19183 19387 E music : dancingtree.mo4media
02-28 06:14:14.920 4015 5091 D Avrcp_ext: AudioManager Player in started state: dancingtree.mo4media
02-28 06:14:14.920 4015 5091 D Avrcp_ext: AudioManager Active Player: dancingtree.mo4media
02-28 06:14:14.948 4015 5091 D Avrcp_ext: AudioManager Player in started state: dancingtree.mo4media
02-28 06:14:14.948 4015 5091 D Avrcp_ext: AudioManager Active Player: dancingtree.mo4media
02-28 06:14:15.387 19183 19387 E music : Blocked onNotificationRemoved StatusBarNotification(pkg=dancingtree.mo4media user=UserHandle{0} id=10000 tag=null key=0|dancingtree.mo4media|10000|null|10387: Notification(channel=MO1 shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0x0 color=0x00000000 category=transport vis=PRIVATE))-state=3
02-28 06:14:15.395 19183 19387 E music : Blocked onNotificationRemoved StatusBarNotification(pkg=com.arn.scrobble user=UserHandle{0} id=0 tag=dancingtree.mo4media key=0|com.arn.scrobble|0|dancingtree.mo4media|10380: Notification(channel=noti_scrobbling shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0x0 color=0xffffb0cd category=transport actions=3 vis=SECRET))-state=3
02-28 06:14:28.106 2945 6536 I MediaSessionStack: addSession to bottom of stack | record: dancingtree.mo4media/MO4media (userId=0)
02-28 06:14:28.106 2945 6536 D MediaSessionService: Media button session is changed to dancingtree.mo4media/MO4media (userId=0)
02-28 06:14:28.107 4015 5093 D Avrcp_ext: onMediaKeyEventSessionChanged: player = MediaPlayerInfo dancingtree.mo4media (as 'MO 4Media') Type = 1, SubType = 0, Status = 1 Feature Bits [40 41 42 44 45 47 48 58] Controller: null, id = 7, updateController = true
02-28 06:14:28.107 4015 5093 V Avrcp_ext: isBrowseSupported for dancingtree.mo4media: false
02-28 06:14:28.107 4015 5093 D Avrcp_ext: Adding media player info for dancingtree.mo4media with id 7
02-28 06:14:28.107 4015 5093 D Avrcp_ext: update #7:MediaPlayerInfo dancingtree.mo4media (as 'MO 4Media') Type = 1, SubType = 0, Status = 0 Feature Bits [40 41 42 44 45 47 48 58] Controller: MediaController (dancingtree.mo4media@5db3a7d) null
02-28 06:14:28.107 4015 5093 I Avrcp_ext: onMediaKeyEventSessionChanged: token=dancingtree.mo4media
02-28 06:14:28.107 4015 5093 W McpService: updatePlayerName pkg dancingtree.mo4media removed false
02-28 06:14:28.107 4015 5093 D McpService: MediaPlayerNameUpdate name: dancingtree.mo4media
02-28 06:14:28.107 4015 5093 W Avrcp_ext: Changing addressed media session to dancingtree.mo4media
02-28 06:14:28.107 4015 5093 V Avrcp_ext: getMediaPlayerInfo: Found dancingtree.mo4media
02-28 06:14:28.107 4015 5093 V Avrcp_ext: Set addressed #7 MediaPlayerInfo dancingtree.mo4media (as 'MO 4Media') Type = 1, SubType = 0, Status = 0 Feature Bits [40 41 42 44 45 47 48 58] Controller: MediaController (dancingtree.mo4media@5db3a7d) null
02-28 06:14:28.107 4015 5093 D Avrcp_ext: updateCurrentController: null to MediaController (dancingtree.mo4media@5db3a7d) null
02-28 06:14:28.108 4015 5093 V Avrcp_ext: updateCurrentMediaState: mMediaController: MediaController (dancingtree.mo4media@5db3a7d) null
02-28 06:14:28.108 4015 5093 D Avrcp_ext: isPackageNameValid: browsedPackage = dancingtree.mo4mediaisValid = true
02-28 06:14:28.108 4015 5093 V Avrcp_ext: isBrowseSupported for dancingtree.mo4media: false
02-28 06:14:28.110 4015 5163 V McpService: MEDIA_PLAYER_NAME_UPDATE msg: dancingtree.mo4media
02-28 06:14:28.110 4015 5163 I bt_stack: [INFO:btif_mcp.cc(83)] MediaPlayerName: namedancingtree.mo4media
02-28 06:14:28.110 4015 5093 V Avrcp_ext: updateCurrentMediaState: mMediaController: MediaController (dancingtree.mo4media@5db3a7d) null
02-28 06:14:28.111 4015 5093 D Avrcp_ext: isPackageNameValid: browsedPackage = dancingtree.mo4mediaisValid = true
02-28 06:14:28.111 4015 5093 V Avrcp_ext: isBrowseSupported for dancingtree.mo4media: false
02-28 06:14:28.112 4015 5091 V Avrcp_ext: updateCurrentMediaState: mMediaController: MediaController (dancingtree.mo4media@5db3a7d) null
02-28 06:14:28.112 4015 5091 D Avrcp_ext: isPackageNameValid: browsedPackage = dancingtree.mo4mediaisValid = true
02-28 06:14:28.112 4015 5091 V Avrcp_ext: isBrowseSupported for dancingtree.mo4media: false
02-28 06:14:28.125 4015 5091 V Avrcp_ext: updateCurrentMediaState: mMediaController: MediaController (dancingtree.mo4media@5db3a7d) null
02-28 06:14:28.125 4015 5091 D Avrcp_ext: isPackageNameValid: browsedPackage = dancingtree.mo4mediaisValid = true
02-28 06:14:28.125 4015 5091 V Avrcp_ext: isBrowseSupported for dancingtree.mo4media: false
02-28 06:14:28.149 4015 5091 V Avrcp_ext: updateCurrentMediaState: mMediaController: MediaController (dancingtree.mo4media@5db3a7d) Prodigal, Porcupine Tree, In Absentia
02-28 06:14:28.152 4015 5091 D Avrcp_ext: isPackageNameValid: browsedPackage = dancingtree.mo4mediaisValid = true
02-28 06:14:28.152 4015 5091 V Avrcp_ext: isBrowseSupported for dancingtree.mo4media: false
02-28 06:14:28.157 4015 5091 V Avrcp_ext: updateCurrentMediaState: mMediaController: MediaController (dancingtree.mo4media@5db3a7d) Prodigal, Porcupine Tree, In Absentia
02-28 06:14:28.158 4015 5091 D Avrcp_ext: isPackageNameValid: browsedPackage = dancingtree.mo4mediaisValid = true
02-28 06:14:28.158 4015 5091 V Avrcp_ext: isBrowseSupported for dancingtree.mo4media: false
02-28 06:14:29.170 7170 7170 D NotificationMonitorService: onNotificationPosted: dancingtree.mo4media
02-28 06:14:29.175 19183 19387 E music : Blocked onNotificationPosted StatusBarNotification(pkg=dancingtree.mo4media user=UserHandle{0} id=10000 tag=null key=0|dancingtree.mo4media|10000|null|10387: Notification(channel=MO1 shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0x0 color=0x00000000 category=transport vis=PRIVATE))
02-28 06:14:29.203 3795 3795 D MediaResumeListener: Checking for service component for dancingtree.mo4media
02-28 06:14:29.203 3795 3910 D MediaResumeListener: Testing if we can connect to ComponentInfo{dancingtree.mo4media/crc64fc68bfe11eb03c38.BrowserService}
02-28 06:14:29.255 3795 3910 E MediaBrowser: onConnectFailed for ComponentInfo{dancingtree.mo4media/crc64fc68bfe11eb03c38.BrowserService}
02-28 06:14:29.256 3795 3910 D ResumeMediaBrowser: Connection failed for ComponentInfo{dancingtree.mo4media/crc64fc68bfe11eb03c38.BrowserService}
02-28 06:14:29.256 3795 3910 E MediaResumeListener: Cannot resume with ComponentInfo{dancingtree.mo4media/crc64fc68bfe11eb03c38.BrowserService}
Anything here that can be used to find what in the world is causing the crashes/disconnects when using both Exo and Android System?