react-native-track-player icon indicating copy to clipboard operation
react-native-track-player copied to clipboard

Capabilities Play & Pause do not Toggle Correctly {playWhenReady state}

Open Calixte-Williams opened this issue 9 months ago • 4 comments

Describe the Bug On IOS and Android, the media controls in notification tray are visible but the play/pause toggle is finicky. Skip-next and skip-previous work without issues. On IOS, the play/pause button works after tapping at least 2 times. It seems to be out of sync with the playWhenReady state, evident in XCode logs below. On Android, the play/pause toggle does not work at all.

Bug in Action:

https://github.com/user-attachments/assets/faea093a-be55-48bb-b746-04de265f6df4

Corresponding Logs from xcode (Sorry, wish xcode provided timestamps of the logs to make this cleaner):

'Event.PlaybackState', { state: 'buffering' }
'Event.PlaybackPlayWhenReadyChanged', { playWhenReady: true }
'Event.PlaybackState', { state: 'playing' }
'Event.PlaybackState', { state: 'paused' }
'Event.PlaybackPlayWhenReadyChanged', { playWhenReady: false }
Event.RemotePause
Event.RemotePlay
'Event.PlaybackState', { state: 'buffering' }
'Event.PlaybackPlayWhenReadyChanged', { playWhenReady: true }
'Event.PlaybackState', { state: 'playing' }
Event.RemotePlay
Event.RemotePause
'Event.PlaybackPlayWhenReadyChanged', { playWhenReady: false }
'Event.PlaybackState', { state: 'paused' }
Event.RemotePause
Event.RemotePlay
'Event.PlaybackState', { state: 'buffering' }
'Event.PlaybackPlayWhenReadyChanged', { playWhenReady: true }
'Event.PlaybackState', { state: 'playing' }
Event.RemoteNext
'Event.PlaybackState', { state: 'loading' }
'Event.PlaybackActiveTrackChanged', { index: 1,
  track: 
   { url: 'https://radios.radiohd.com.mx/8274/stream',
     artist: 'Grupo Radar',
     title: 'Crystal 101.1',
     id: 2,
     isLiveStream: true,
     artwork: 'http://192.168.0.3:8081/assets/app/assets/images/cristal101.1-albumart.png?platform=ios&hash=fc27aba32a79b783d2faf05c3f07aa3a' },
  lastPosition: 10.58981607,
  lastIndex: 0,
  lastTrack: 
   { isLiveStream: true,
     artist: 'Grupo Radar',
     artwork: 'http://192.168.0.3:8081/assets/app/assets/images/radar107.5-albumart.png?platform=ios&hash=7fba4d1ebf4f6e2cad49c6aade0bee5b',
     url: 'https://radios.radiohd.com.mx/8268/stream',
     id: 1,
     title: 'Radar 107.5' } }
'Event.PlaybackState', { state: 'buffering' }
'Event.PlaybackState', { state: 'ready' }
'Event.PlaybackState', { state: 'playing' }
Event.RemotePlay
Event.RemotePause
'Event.PlaybackPlayWhenReadyChanged', { playWhenReady: false }
'Event.PlaybackState', { state: 'paused' }
Message from debugger: killed

Steps To Reproduce Setup a RNTP app using code from the Example app as reference and Website documentation for getting started. Play audio, pull does notification tray and attempt to toggle pause / play for currently playing track.

Code To Reproduce

App.tsx

import React, {useState, useEffect} from 'react';
import {ActivityIndicator, SafeAreaView, StyleSheet, View} from 'react-native';

import {addTrack} from './services/audioPlayerServices';
import {SetupService} from './services/SetupService';
import MusicPlayer from './screens/MusicPlayer';
import '../global.css';
import TrackPlayer from 'react-native-track-player';
import {GestureHandlerRootView} from 'react-native-gesture-handler';

export default function App() {
  return (
    <GestureHandlerRootView className="flex-1">
      <Inner />
    </GestureHandlerRootView>
  );
}

const Inner: React.FC = () => {
  const isPlayerReady = useSetupPlayer();

  if (!isPlayerReady) {
    return (
      <SafeAreaView style={styles.screenContainer}>
        <ActivityIndicator />
      </SafeAreaView>
    );
  }

  return (
    <SafeAreaView style={styles.screenContainer}>
      <View>
        <View>
          <MusicPlayer />
        </View>
      </View>
    </SafeAreaView>
  );
};

const styles = StyleSheet.create({
  screenContainer: {
    flex: 1,
    backgroundColor: '#86efac',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

function useSetupPlayer() {
  const [playerReady, setPlayerReady] = useState<boolean>(false);

  useEffect(() => {
    let unmounted = false;
    (async () => {
      await SetupService();
      if (unmounted) {
        return;
      }
      setPlayerReady(true);
      const queue = await TrackPlayer.getQueue();
      if (unmounted) {
        return;
      }
      if (queue.length <= 0) {
        await addTrack();
      }
    })();
    return () => {
      unmounted = true;
    };
  }, []);
  return playerReady;
}

Component/ControlCenter.tsx

import React from 'react';
import {View, StyleSheet, Pressable} from 'react-native';
import TrackPlayer, {usePlaybackState} from 'react-native-track-player';
import Icon from 'react-native-vector-icons/MaterialIcons';
import {PlayPauseButton} from './PlayPauseButton';
import {PlaybackError} from './PlaybackError';

//Next Button
const skipToNext = async () => {
  await TrackPlayer.skipToNext();
};
//Previous Button
const skipToPrevious = async () => {
  await TrackPlayer.skipToPrevious();
};

const ControlCenter = () => {
  const playbackState = usePlaybackState();

  return (
    <View style={styles.container}>
      <View style={styles.controls}>
        <Pressable onPress={skipToPrevious}>
          <Icon style={styles.icon} name="skip-previous" />
        </Pressable>
        <PlayPauseButton />
        <Pressable onPress={skipToNext}>
          <Icon style={styles.icon} name="skip-next" />
        </Pressable>
      </View>
      <PlaybackError
        error={
          'error' in playbackState ? playbackState.error.message : undefined
        }
      />
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    padding: 20,
  },
  controls: {
    marginBottom: 56,
    flexDirection: 'row',
    alignItems: 'center',
  },
  icon: {
    color: '#FFFFFF',
    fontSize: 40,
  },
});

export default ControlCenter;

Component/PlayPauseButton.tsx

import React from 'react';
import {ActivityIndicator, Pressable, StyleSheet, View} from 'react-native';
import TrackPlayer, {useIsPlaying} from 'react-native-track-player';
import FontAwesome6 from 'react-native-vector-icons/FontAwesome6';

export const PlayPauseButton: React.FC = () => {
  const {playing, bufferingDuringPlay} = useIsPlaying();

  return (
    <View style={styles.container}>
      {bufferingDuringPlay ? (
        <ActivityIndicator />
      ) : (
        <Pressable onPress={playing ? TrackPlayer.pause : TrackPlayer.play}>
          <FontAwesome6
            name={playing ? 'pause' : 'play'}
            size={48}
            color={'white'}
          />
        </Pressable>
      )}
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    height: 50,
    width: 120,
    alignItems: 'center',
    justifyContent: 'center',
  },
});

Services/SetupService.ts

import TrackPlayer, {
  AppKilledPlaybackBehavior,
  Capability,
  RepeatMode,
} from 'react-native-track-player';

export const DefaultRepeatMode = RepeatMode.Queue;

/*
        This is the default behavior when stopping the app in the recents menu for android.
        * ContinuePlayback (default)
           This option will continue playing audio in the background when the app is removed from recents. The notification remains. This is the default.

         PausePlayback
           This option will pause playing audio in the background when the app is removed from recents. The notification remains and can be used to resume playback.

         StopPlaybackAndRemoveNotification
           This option will stop playing audio in the background when the app is removed from recents. The notification is removed and can't be used to resume playback. Users would need to open the app again to start playing audio.
        */
export const DefaultAudioServiceBehaviour =
  AppKilledPlaybackBehavior.StopPlaybackAndRemoveNotification;

const setupPlayer = async (
  options: Parameters<typeof TrackPlayer.setupPlayer>[0],
) => {
  const setup = async () => {
    try {
      await TrackPlayer.setupPlayer(options);
    } catch (error) {
      return (error as Error & {code?: string}).code;
    }
  };
  while ((await setup()) === 'android_cannot_setup_player_in_background') {
    // A timeout will mostly only execute when the app is in the foreground,
    // and even if we were in the background still, it will reject the promise
    // and we'll try again:
    await new Promise<void>(resolve => setTimeout(resolve, 1));
  }
};

export const SetupService = async () => {
  await setupPlayer({
    autoHandleInterruptions: true,
  });
  await TrackPlayer.updateOptions({
    android: {
      appKilledPlaybackBehavior: DefaultAudioServiceBehaviour,
    },
    capabilities: [
      Capability.Play,
      Capability.Pause,
      Capability.SkipToNext,
      Capability.SkipToPrevious,
    ],
    compactCapabilities: [
      Capability.Play,
      Capability.Pause,
      Capability.SkipToNext,
      Capability.SkipToPrevious,
    ],

    progressUpdateEventInterval: 2,
  });
  await TrackPlayer.setRepeatMode(DefaultRepeatMode);
};

Services/audioPlayerService.js

import TrackPlayer, {Event} from 'react-native-track-player';

import {playListData} from '../assets/data/radioStreams';

//Add Track Data to Queue and set repeat mode to Queue
export async function addTrack() {
  await TrackPlayer.add(playListData);
}

//Add listen events for button presses
export async function playbackService() {
  TrackPlayer.addEventListener(Event.RemotePlay, () => {
    console.log('Event.RemotePause');
    TrackPlayer.pause();
  });
  TrackPlayer.addEventListener(Event.RemotePause, () => {
    console.log('Event.RemotePlay');
    TrackPlayer.play();
  });
  TrackPlayer.addEventListener(Event.RemoteNext, () => {
    console.log('Event.RemoteNext');
    TrackPlayer.skipToNext();
  });
  TrackPlayer.addEventListener(Event.RemotePrevious, () => {
    console.log('Event.RemotePrevious');
    TrackPlayer.skipToPrevious();
  });
  TrackPlayer.addEventListener(Event.RemoteStop, () => {
    console.log('Event.RemoteStop');
    TrackPlayer.stop();
  });
  TrackPlayer.addEventListener(Event.PlaybackActiveTrackChanged, event => {
    console.log('Event.PlaybackActiveTrackChanged', event);
  });
  TrackPlayer.addEventListener(Event.PlaybackQueueEnded, event => {
    console.log('Event.PlaybackQueueEnded', event);
  });
  TrackPlayer.addEventListener(Event.RemoteDuck, async event => {
    console.log('Event.RemoteDuck', event);
  });
  TrackPlayer.addEventListener(Event.PlaybackPlayWhenReadyChanged, event => {
    console.log('Event.PlaybackPlayWhenReadyChanged', event);
  });
  TrackPlayer.addEventListener(Event.PlaybackState, event => {
    console.log('Event.PlaybackState', event);
  });
  TrackPlayer.addEventListener(Event.MetadataChapterReceived, event => {
    console.log('Event.MetadataChapterReceived', event);
  });
}

Replicable on Example App? Can you replicate this bug in the React Native Track Player Example App?

No, I can not. I pulled the current Example app and tested it in Android where it worked without issues. I could not test in IOS as the pod install command failed to update the ios folder. I haven't gotten time to troubleshoot it. This let me to update my code to closer match what is in the Example APP, but as you can see it still does not work.

Environment Info: Paste the results of npx react-native info

npx react-native info
info Fetching system and libraries information...
System:
  OS: macOS 15.3.1
  CPU: (8) arm64 Apple M1
  Memory: 147.59 MB / 8.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 23.7.0
    path: /opt/homebrew/bin/node
  Yarn:
    version: 1.22.22
    path: /opt/homebrew/bin/yarn
  npm:
    version: 11.1.0
    path: ~/node_modules/.bin/npm
  Watchman:
    version: 2025.02.10.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.16.2
    path: /opt/homebrew/lib/ruby/gems/3.4.0/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 24.2
      - iOS 18.2
      - macOS 15.2
      - tvOS 18.2
      - visionOS 2.2
      - watchOS 11.2
  Android SDK: Not Found
IDEs:
  Android Studio: 2024.2 AI-242.23726.103.2422.13016713
  Xcode:
    version: 16.2/16C5032a
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.14
    path: /usr/bin/javac
  Ruby:
    version: 3.4.2
    path: /opt/homebrew/opt/ruby/bin/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react: Not Found
  react-native: Not Found
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: false
iOS:
  hermesEnabled: true
  newArchEnabled: true

info React Native v0.78.0 is now available (your project is running on v0.77.1).
info Changelog: https://github.com/facebook/react-native/releases/tag/v0.78.0
info Diff: https://react-native-community.github.io/upgrade-helper/?from=0.77.1&to=0.78.0
info For more info, check out "https://reactnative.dev/docs/upgrading?os=macos".

Paste the exact react-native-track-player version you are using

[email protected]

Real device? Or simulator?

I have tested on an Android Simulator SDK 34 and iPhone 14 pro running latest IOS 18.3.1

What OS are you running? MacOS 15.3.1

How I can Help What can you do to help resolve this? Have you investigated the underlying JS or Swift/Android code causing this bug? I have looked into kotlinaudio and how it's suppose to work, where playWhenReady controls where the toggle plays or paused based on true or false. This is how i realized that the toggle does not update the playWhenReady state on first press in IOS. https://developer.android.com/media/implement/surfaces/mobile Can you create a Pull Request with a fix? No, I have not yet figured out how to fix this yet. I tried add a line to my Event.RemotePlay to forcefully update playWhenReady state, but that did not work.

Calixte-Williams avatar Mar 10 '25 13:03 Calixte-Williams

Android Test and Logs These logs also show that on android the playWhenReady state is not being updated on press of Capabilities.Play and Capabilities.Pause

Video of Bug: https://youtu.be/_NuprIR827U

Corresponding Logs from Android Studio:

2025-03-10 10:09:46.877   551-1686  MediaFocusControl       system_server                        I  requestAudioFocus() from uid/pid 10193/9390 AA=USAGE_MEDIA/CONTENT_TYPE_MUSIC clientId=android.media.AudioManager@a303eadcom.google.android.exoplayer2.AudioFocusManager$AudioFocusListener@7195e2 callingPack=com.gruporadarradio req=1 flags=0x0 sdk=34
2025-03-10 10:09:46.899   551-1478  MediaSessionStack       system_server                        I  onPlaybackStateChanged - Pushing session to top | record: com.gruporadarradio/KotlinAudioPlayer (userId=0)
2025-03-10 10:09:46.912   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=PLAYING(3), position=0, buffered position=38683, speed=1.0, updated=696959, actions=6553782, custom actions=[], active item id=0, error=null}
2025-03-10 10:09:46.925   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:09:46.932   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:09:46.952   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=PLAYING(3), position=0, buffered position=38683, speed=1.0, updated=696959, actions=6553782, custom actions=[], active item id=0, error=null}
2025-03-10 10:09:46.961   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:09:46.982  9390-9564  AudioTrack              com.gruporadarradio                  D  getTimestamp_l(20): device stall time corrected using current time 697038145080
2025-03-10 10:09:46.986   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:09:47.067  9390-9587  BufferPoolAccessor2.0   com.gruporadarradio                  D  bufferpool2 0xb400007bf4856898 : 1(8192 size) total buffers - 1(8192 size) used buffers - 15/21 (recycle/alloc) - 7/20 (fetch/transfer)
2025-03-10 10:09:47.081  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=true
2025-03-10 10:09:47.108  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackPlayWhenReadyChanged', { playWhenReady: true }
2025-03-10 10:09:47.113   551-1612  ActivityManager         system_server                        I  Background started FGS: Allowed [callingPackage: com.gruporadarradio; callingUid: 10193; uidState: TOP ; uidBFSL: [BFSL]; intent: Intent { cmp=com.gruporadarradio/com.doublesymmetry.trackplayer.service.MusicService }; code:PROC_STATE_TOP; tempAllowListReason:<null>; targetSdkVersion:34; callerTargetSdkVersion:34; startForegroundCount:1; bindFromPackage:null: isBindService:false]
2025-03-10 10:09:47.125  9390-9390  MusicService            com.gruporadarradio                  D  notification has been foregrounded
2025-03-10 10:09:47.177  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackState', { state: 'playing' }
2025-03-10 10:09:47.220  9390-9461  EGL_emulation           com.gruporadarradio                  D  app_time_stats: avg=24504.54ms min=24504.54ms max=24504.54ms count=1
2025-03-10 10:09:49.982   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=PAUSED(2), position=2995, buffered position=42770, speed=0.0, updated=700041, actions=6553782, custom actions=[], active item id=0, error=null}
2025-03-10 10:09:49.988   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:09:49.989   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:09:50.006   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=PAUSED(2), position=2995, buffered position=42770, speed=0.0, updated=700041, actions=6553782, custom actions=[], active item id=0, error=null}
2025-03-10 10:09:50.009   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:09:50.016   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:09:50.021  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=false
2025-03-10 10:09:50.037  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackPlayWhenReadyChanged', { playWhenReady: false }
2025-03-10 10:09:50.049  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackState', { state: 'paused' }
2025-03-10 10:09:50.071  9390-9461  EGL_emulation           com.gruporadarradio                  D  app_time_stats: avg=2851.58ms min=2851.58ms max=2851.58ms count=1
2025-03-10 10:09:52.541  9390-9564  AudioTrack              com.gruporadarradio                  D  getTimestamp_l(20): device stall time corrected using current time 702602266082
2025-03-10 10:09:52.542   551-1612  MediaSessionStack       system_server                        I  onPlaybackStateChanged - Pushing session to top | record: com.gruporadarradio/KotlinAudioPlayer (userId=0)
2025-03-10 10:09:52.544   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=PLAYING(3), position=3001, buffered position=44813, speed=1.0, updated=702603, actions=6553782, custom actions=[], active item id=0, error=null}
2025-03-10 10:09:52.548   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:09:52.551   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:09:52.566   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=PLAYING(3), position=3001, buffered position=44813, speed=1.0, updated=702603, actions=6553782, custom actions=[], active item id=0, error=null}
2025-03-10 10:09:52.571  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=true
2025-03-10 10:09:52.571  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackPlayWhenReadyChanged', { playWhenReady: true }
2025-03-10 10:09:52.573  9390-9390  MusicService            com.gruporadarradio                  D  skipping foregrounding as the service is already foregrounded
2025-03-10 10:09:52.573   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:09:52.582   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:09:52.593  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackState', { state: 'playing' }
2025-03-10 10:09:52.640  9390-9461  EGL_emulation           com.gruporadarradio                  D  app_time_stats: avg=2568.65ms min=2568.65ms max=2568.65ms count=1
2025-03-10 10:09:52.696  9390-9587  BufferPoolAccessor2.0   com.gruporadarradio                  D  bufferpool2 0xb400007bf4856898 : 5(40960 size) total buffers - 1(8192 size) used buffers - 78/88 (recycle/alloc) - 12/87 (fetch/transfer)
2025-03-10 10:09:56.597   551-861   MediaSessionService     system_server                        I  tempAllowlistTargetPkgIfPossible callingPackage:com.android.systemui targetPackage:com.gruporadarradio reason:MediaSessionRecord:pause [WIU] [FGS]
2025-03-10 10:09:56.646  9390-9534  ReactNativeJS           com.gruporadarradio                  I  Event.RemotePlay
2025-03-10 10:09:57.815  9390-9587  BufferPoolAccessor2.0   com.gruporadarradio                  D  bufferpool2 0xb400007bf4856898 : 5(40960 size) total buffers - 1(8192 size) used buffers - 188/198 (recycle/alloc) - 16/197 (fetch/transfer)
2025-03-10 10:09:58.270   551-861   MediaSessionService     system_server                        I  tempAllowlistTargetPkgIfPossible callingPackage:com.android.systemui targetPackage:com.gruporadarradio reason:MediaSessionRecord:pause [WIU] [FGS]
2025-03-10 10:09:58.281  9390-9534  ReactNativeJS           com.gruporadarradio                  I  Event.RemotePlay
2025-03-10 10:09:59.637   551-861   MediaSessionService     system_server                        I  tempAllowlistTargetPkgIfPossible callingPackage:com.android.systemui targetPackage:com.gruporadarradio reason:MediaSessionRecord:pause [WIU] [FGS]
2025-03-10 10:09:59.640  9390-9534  ReactNativeJS           com.gruporadarradio                  I  Event.RemotePlay
2025-03-10 10:10:01.604   551-1686  MediaSessionService     system_server                        I  tempAllowlistTargetPkgIfPossible callingPackage:com.android.systemui targetPackage:com.gruporadarradio reason:MediaSessionRecord:pause [WIU] [FGS]
2025-03-10 10:10:01.612  9390-9534  ReactNativeJS           com.gruporadarradio                  I  Event.RemotePlay
2025-03-10 10:10:03.008  9390-9587  BufferPoolAccessor2.0   com.gruporadarradio                  D  bufferpool2 0xb400007bf4856898 : 5(40960 size) total buffers - 1(8192 size) used buffers - 300/310 (recycle/alloc) - 16/309 (fetch/transfer)
2025-03-10 10:10:03.053   551-1958  MediaSessionService     system_server                        I  tempAllowlistTargetPkgIfPossible callingPackage:com.android.systemui targetPackage:com.gruporadarradio reason:MediaSessionRecord:next [WIU] [FGS]
2025-03-10 10:10:03.071  9390-9534  ReactNativeJS           com.gruporadarradio                  I  Event.RemoteNext
2025-03-10 10:10:03.104  9390-9587  CCodecBuffers           com.gruporadarradio                  D  [c2.android.aac.decoder#345:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 0
2025-03-10 10:10:03.104  9390-9587  CCodecBuffers           com.gruporadarradio                  D  [c2.android.aac.decoder#345:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 1
2025-03-10 10:10:03.104  9390-9587  CCodecBuffers           com.gruporadarradio                  D  [c2.android.aac.decoder#345:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 2
2025-03-10 10:10:03.113  9390-9564  MediaCodec              com.gruporadarradio                  D  keep callback message for reclaim
2025-03-10 10:10:03.114   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=0, speed=0.0, updated=713148, actions=6553782, custom actions=[], active item id=1, error=null}
2025-03-10 10:10:03.116  9390-9587  CCodecConfig            com.gruporadarradio                  I  query failed after returning 20 values (BAD_INDEX)
2025-03-10 10:10:03.118  9390-9587  Codec2Client            com.gruporadarradio                  W  query -- param skipped: index = 1342179345.
2025-03-10 10:10:03.118  9390-9587  Codec2Client            com.gruporadarradio                  W  query -- param skipped: index = 2415921170.
2025-03-10 10:10:03.118  9390-9587  Codec2Client            com.gruporadarradio                  W  query -- param skipped: index = 1610614798.
2025-03-10 10:10:03.138   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=0, speed=0.0, updated=713148, actions=6553782, custom actions=[], active item id=1, error=null}
2025-03-10 10:10:03.141   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:03.142   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:03.147   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onMetadataChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:03.156   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:03.157   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:03.179   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:03.180   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:03.181   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:03.186   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:03.239  9390-9582  TrafficStats            com.gruporadarradio                  D  tagSocket(134) with statsTag=0xffffffff, statsUid=-1
2025-03-10 10:10:03.254  9390-9612  TrafficStats            com.gruporadarradio                  D  tagSocket(204) with statsTag=0xffffffff, statsUid=-1
2025-03-10 10:10:03.283   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=-9223372036854775807, speed=0.0, updated=713318, actions=6553782, custom actions=[], active item id=1, error=null}
2025-03-10 10:10:03.283   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onPlaybackStateChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:03.289   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=-9223372036854775807, speed=0.0, updated=713318, actions=6553782, custom actions=[], active item id=1, error=null}
2025-03-10 10:10:03.289   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onPlaybackStateChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:03.289   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:03.290   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:03.322   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:03.323  9390-9616  TrafficStats            com.gruporadarradio                  D  tagSocket(231) with statsTag=0xffffffff, statsUid=-1
2025-03-10 10:10:03.325   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:03.326   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=0, speed=0.0, updated=713333, actions=6553782, custom actions=[], active item id=1, error=null}
2025-03-10 10:10:03.326   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onPlaybackStateChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:03.326   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=0, speed=0.0, updated=713333, actions=6553782, custom actions=[], active item id=1, error=null}
2025-03-10 10:10:03.326   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onPlaybackStateChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:03.357  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=true
2025-03-10 10:10:03.367  9390-9390  MusicService            com.gruporadarradio                  D  skipping foregrounding as the service is already foregrounded
2025-03-10 10:10:03.378  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=true
2025-03-10 10:10:03.382  9390-9390  MusicService            com.gruporadarradio                  D  skipping foregrounding as the service is already foregrounded
2025-03-10 10:10:03.406  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackActiveTrackChanged', { lastTrack: 
                                                                                                       { title: 'Radar 107.5',
                                                                                                         url: 'https://radios.radiohd.com.mx/8268/stream',
                                                                                                         artwork: 'http://10.0.2.2:8081/assets/app/assets/images/radar107.5-albumart.png?platform=android&hash=7fba4d1ebf4f6e2cad49c6aade0bee5b',
                                                                                                         id: 1,
                                                                                                         isLiveStream: true,
                                                                                                         artist: 'Grupo Radar' },
                                                                                                      lastIndex: 0,
                                                                                                      track: 
                                                                                                       { title: 'Crystal 101.1',
                                                                                                         url: 'https://radios.radiohd.com.mx/8274/stream',
                                                                                                         artwork: 'http://10.0.2.2:8081/assets/app/assets/images/cristal101.1-albumart.png?platform=android&hash=fc27aba32a79b783d2faf05c3f07aa3a',
                                                                                                         id: 2,
                                                                                                         isLiveStream: true,
                                                                                                         artist: 'Grupo Radar' },
                                                                                                      index: 1,
                                                                                                      lastPosition: 13.562 }
2025-03-10 10:10:03.412  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackState', { state: 'loading' }
2025-03-10 10:10:03.494  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackState', { state: 'buffering' }
2025-03-10 10:10:03.512   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:03.522   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:03.531   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:03.531   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:03.649   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:03.654   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:03.712  9390-9461  EGL_emulation           com.gruporadarradio                  D  app_time_stats: avg=11071.75ms min=11071.75ms max=11071.75ms count=1
2025-03-10 10:10:03.714  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=true
2025-03-10 10:10:03.729  9390-9390  MusicService            com.gruporadarradio                  D  skipping foregrounding as the service is already foregrounded
2025-03-10 10:10:03.754   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:03.759   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:03.789  9390-9410  gruporadarradio         com.gruporadarradio                  I  Background concurrent copying GC freed 36166(1803KB) AllocSpace objects, 3(60KB) LOS objects, 49% free, 8605KB/16MB, paused 92us,23us total 383.219ms
2025-03-10 10:10:03.890  9390-9564  MediaCodec              com.gruporadarradio                  D  keep callback message for reclaim
2025-03-10 10:10:03.890   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:03.909  9390-9587  CCodecConfig            com.gruporadarradio                  I  query failed after returning 20 values (BAD_INDEX)
2025-03-10 10:10:03.909   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:03.910  9390-9587  Codec2Client            com.gruporadarradio                  W  query -- param skipped: index = 1342179345.
2025-03-10 10:10:03.910  9390-9587  Codec2Client            com.gruporadarradio                  W  query -- param skipped: index = 2415921170.
2025-03-10 10:10:03.910  9390-9587  Codec2Client            com.gruporadarradio                  W  query -- param skipped: index = 1610614798.
2025-03-10 10:10:03.942   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:03.962   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:03.967   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=0, speed=0.0, updated=713947, actions=6553782, custom actions=[], active item id=1, error=null}
2025-03-10 10:10:04.012   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onPlaybackStateChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:04.031   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=0, speed=0.0, updated=713947, actions=6553782, custom actions=[], active item id=1, error=null}
2025-03-10 10:10:04.036   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onPlaybackStateChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:04.144   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onMetadataChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:04.222   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onMetadataChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:04.257   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=PLAYING(3), position=0, buffered position=8033, speed=1.0, updated=714114, actions=6553782, custom actions=[], active item id=1, error=null}
2025-03-10 10:10:04.281   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:04.286   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:04.295  9390-9564  AudioTrack              com.gruporadarradio                  D  getTimestamp_l(21): device stall time corrected using current time 714356618088
2025-03-10 10:10:04.372   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=PLAYING(3), position=0, buffered position=8033, speed=1.0, updated=714114, actions=6553782, custom actions=[], active item id=1, error=null}
2025-03-10 10:10:04.378   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:04.390   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:04.423   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:04.448   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:04.473   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:04.473   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:04.616   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onMetadataChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:04.622   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onMetadataChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:04.678  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=true
2025-03-10 10:10:04.681  9390-9390  MusicService            com.gruporadarradio                  D  skipping foregrounding as the service is already foregrounded
2025-03-10 10:10:04.681  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=true
2025-03-10 10:10:04.682  9390-9390  MusicService            com.gruporadarradio                  D  skipping foregrounding as the service is already foregrounded
2025-03-10 10:10:04.722  9390-9461  EGL_emulation           com.gruporadarradio                  D  app_time_stats: avg=28.05ms min=3.57ms max=88.78ms count=31
2025-03-10 10:10:04.731  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackState', { state: 'ready' }
2025-03-10 10:10:04.856  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackState', { state: 'playing' }
2025-03-10 10:10:08.184  9390-9587  BufferPoolAccessor2.0   com.gruporadarradio                  D  bufferpool2 0xb400007bf4856898 : 5(40960 size) total buffers - 1(8192 size) used buffers - 410/420 (recycle/alloc) - 16/413 (fetch/transfer)
2025-03-10 10:10:10.750   551-572   WindowManager           system_server                        V      info={id=10 t=OPEN f=0x0 trk=0 r=[0@Point(0, 0)] c=[{WCT{RemoteToken{728664 Task{fede787 #44 type=home}}} m=TO_FRONT f=SHOW_WALLPAPER|MOVE_TO_TOP leash=Surface(name=Task=44)/@0x1846c6a sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) d=0},{WCT{RemoteToken{a6df01b Task{3ff4879 #47 type=standard A=10193:com.gruporadarradio}}} m=TO_BACK f=NONE leash=Surface(name=Task=47)/@0xf85d715 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{9abffe9 token=android.os.Binder@e9f8070})/@0xca21243 sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) d=0}]}
2025-03-10 10:10:12.300   551-861   AppsFilter              system_server                        I  interaction: PackageSetting{428d156 com.gruporadarradio/10193} -> PackageSetting{29b005b com.google.android.apps.nexuslauncher/10163} BLOCKED
2025-03-10 10:10:12.305   551-861   ActivityTaskManager     system_server                        I  START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.gruporadarradio/.MainActivity bnds=[832,1873][1005,2068]} with LAUNCH_SINGLE_TASK from uid 10163 (BAL_ALLOW_ALLOWLISTED_COMPONENT) result code=2
2025-03-10 10:10:12.305   776-825   WindowManagerShell      com.android.systemui                 V  Transition requested: android.os.BinderProxy@923f3d3 TransitionRequestInfo { type = OPEN, triggerTask = TaskInfo{userId=0 taskId=47 displayId=0 isRunning=true baseIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.gruporadarradio/.MainActivity } baseActivity=ComponentInfo{com.gruporadarradio/com.gruporadarradio.MainActivity} topActivity=ComponentInfo{com.gruporadarradio/com.gruporadarradio.MainActivity} origActivity=null realActivity=ComponentInfo{com.gruporadarradio/com.gruporadarradio.MainActivity} numActivities=1 lastActiveTime=720057 supportsMultiWindow=true resizeMode=1 isResizeable=true minWidth=-1 minHeight=-1 defaultMinSize=220 token=WCT{android.window.IWindowContainerToken$Stub$Proxy@cb4b10} topActivityType=1 pictureInPictureParams=null shouldDockBigOverlays=false launchIntoPipHostTaskId=-1 lastParentTaskIdBeforePip=-1 displayCutoutSafeInsets=null topActivityInfo=ActivityInfo{5ce0609 com.gruporadarradio.MainActivity} launchCookies=[android.os.BinderProxy@285800e] positionInParent=Point(0, 0) parentTaskId=-1 isFocused=true isVisible=false isVisibleRequested=false isSleeping=false topActivityInSizeCompat=false topActivityEligibleForLetterboxEducation= false topActivityLetterboxed= false isFromDoubleTap= false topActivityLetterboxVerticalPosition= -1 topActivityLetterboxHorizontalPosition= -1 topActivityLetterboxWidth=-1 topActivityLetterboxHeight=-1 locusId=null displayAreaFeatureId=1 cameraCompatControlState=hidden}, remoteTransition = RemoteTransition { remoteTransition = android.window.IRemoteTransition$Stub$Proxy@8affa2f, appThread = android.app.IApplicationThread$Stub$Proxy@82083c, debugName = QuickstepLaunch }, displayChange = null }
2025-03-10 10:10:12.317   776-825   WindowManagerShell      com.android.systemui                 D  onActivityRestartAttempt: ComponentInfo{com.gruporadarradio/com.gruporadarradio.MainActivity}
2025-03-10 10:10:12.466   551-572   WindowManager           system_server                        V  Sent Transition #11 createdAt=03-10 10:10:12.290 via request=TransitionRequestInfo { type = OPEN, triggerTask = TaskInfo{userId=0 taskId=47 displayId=0 isRunning=true baseIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.gruporadarradio/.MainActivity } baseActivity=ComponentInfo{com.gruporadarradio/com.gruporadarradio.MainActivity} topActivity=ComponentInfo{com.gruporadarradio/com.gruporadarradio.MainActivity} origActivity=null realActivity=ComponentInfo{com.gruporadarradio/com.gruporadarradio.MainActivity} numActivities=1 lastActiveTime=720057 supportsMultiWindow=true resizeMode=1 isResizeable=true minWidth=-1 minHeight=-1 defaultMinSize=220 token=WCT{RemoteToken{a6df01b Task{3ff4879 #47 type=standard A=10193:com.gruporadarradio}}} topActivityType=1 pictureInPictureParams=null shouldDockBigOverlays=false launchIntoPipHostTaskId=-1 lastParentTaskIdBeforePip=-1 displayCutoutSafeInsets=null topActivityInfo=ActivityInfo{fd9a5b8 com.gruporadarradio.MainActivity} launchCookies=[android.os.BinderProxy@3264037] positionInParent=Point(0, 0) parentTaskId=-1 isFocused=true isVisible=false isVisibleRequested=false isSleeping=false topActivityInSizeCompat=false topActivityEligibleForLetterboxEducation= false topActivityLetterboxed= false isFromDoubleTap= false topActivityLetterboxVerticalPosition= -1 topActivityLetterboxHorizontalPosition= -1 topActivityLetterboxWidth=-1 topActivityLetterboxHeight=-1 locusId=null displayAreaFeatureId=1 cameraCompatControlState=hidden}, remoteTransition = RemoteTransition { remoteTransition = android.window.IRemoteTransition$Stub$Proxy@6449a4, appThread = android.app.IApplicationThread$Stub$Proxy@914a8d3, debugName = QuickstepLaunch }, displayChange = null }
2025-03-10 10:10:12.467   551-572   WindowManager           system_server                        V      info={id=11 t=OPEN f=0x0 trk=0 r=[0@Point(0, 0)] c=[{WCT{RemoteToken{a6df01b Task{3ff4879 #47 type=standard A=10193:com.gruporadarradio}}} m=TO_FRONT f=MOVE_TO_TOP leash=Surface(name=Task=47)/@0xf85d715 sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) d=0},{WCT{RemoteToken{728664 Task{fede787 #44 type=home}}} m=TO_BACK f=SHOW_WALLPAPER leash=Surface(name=Task=44)/@0x1846c6a sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) d=0}]}
2025-03-10 10:10:12.615  9390-9461  OpenGLRenderer          com.gruporadarradio                  E  Unable to match the desired swap behavior.
2025-03-10 10:10:12.690  9390-9627  TrafficStats            com.gruporadarradio                  D  tagSocket(80) with statsTag=0xffffffff, statsUid=-1
2025-03-10 10:10:12.790   551-572   ziparchive              system_server                        W  Unable to open '/data/app/~~59vkrI7CcBf_lmfG2qSoMw==/com.gruporadarradio-u9HYKEEMZDVfOSW1f7GFbw==/base.dm': No such file or directory
2025-03-10 10:10:12.824   551-1686  ImeTracker              system_server                        I  com.gruporadarradio:bef64a92: onRequestHide at ORIGIN_SERVER_HIDE_INPUT reason HIDE_UNSPECIFIED_WINDOW
2025-03-10 10:10:12.835   551-1686  ImeTracker              system_server                        I  com.gruporadarradio:bef64a92: onCancelled at PHASE_SERVER_SHOULD_HIDE
2025-03-10 10:10:12.911  1395-1395  GoogleInpu...hodService com...gle.android.inputmethod.latin  I  GoogleInputMethodService.onStartInput():1568 onStartInput(EditorInfo{EditorInfo{packageName=com.gruporadarradio, inputType=0, inputTypeString=NULL, enableLearning=false, autoCorrection=false, autoComplete=false, imeOptions=0, privateImeOptions=null, actionName=UNSPECIFIED, actionLabel=null, initialSelStart=-1, initialSelEnd=-1, initialCapsMode=0, label=null, fieldId=0, fieldName=null, extras=null, hintText=null, hintLocales=[]}}, false)
2025-03-10 10:10:12.987   551-1478  PackageConfigPersister  system_server                        W  App-specific configuration not found for packageName: com.gruporadarradio and userId: 0
2025-03-10 10:10:13.195  9390-9587  BufferPoolAccessor2.0   com.gruporadarradio                  D  bufferpool2 0xb400007bf4856898 : 5(40960 size) total buffers - 1(8192 size) used buffers - 518/528 (recycle/alloc) - 16/521 (fetch/transfer)
2025-03-10 10:10:15.503  9390-9587  CCodecBuffers           com.gruporadarradio                  D  [c2.android.aac.decoder#345:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 0
2025-03-10 10:10:15.504   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=0, speed=0.0, updated=725559, actions=6553782, custom actions=[], active item id=2, error=null}
2025-03-10 10:10:15.506  9390-9564  MediaCodec              com.gruporadarradio                  D  keep callback message for reclaim
2025-03-10 10:10:15.508  9390-9587  CCodecConfig            com.gruporadarradio                  I  query failed after returning 20 values (BAD_INDEX)
2025-03-10 10:10:15.511  9390-9587  Codec2Client            com.gruporadarradio                  W  query -- param skipped: index = 1342179345.
2025-03-10 10:10:15.511  9390-9587  Codec2Client            com.gruporadarradio                  W  query -- param skipped: index = 2415921170.
2025-03-10 10:10:15.511  9390-9587  Codec2Client            com.gruporadarradio                  W  query -- param skipped: index = 1610614798.
2025-03-10 10:10:15.512   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=0, speed=0.0, updated=725559, actions=6553782, custom actions=[], active item id=2, error=null}
2025-03-10 10:10:15.517   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:15.519   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:15.529  9390-9631  TrafficStats            com.gruporadarradio                  D  tagSocket(66) with statsTag=0xffffffff, statsUid=-1
2025-03-10 10:10:15.536   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:15.536   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:15.546   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:15.547   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:15.548   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:15.551   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:15.552   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=-9223372036854775807, speed=0.0, updated=725599, actions=6553782, custom actions=[], active item id=2, error=null}
2025-03-10 10:10:15.553   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onPlaybackStateChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:15.553   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=-9223372036854775807, speed=0.0, updated=725599, actions=6553782, custom actions=[], active item id=2, error=null}
2025-03-10 10:10:15.553   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onPlaybackStateChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:15.584   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:15.595   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:15.596   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:15.596   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:15.596   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=0, speed=0.0, updated=725640, actions=6553782, custom actions=[], active item id=2, error=null}
2025-03-10 10:10:15.596   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onPlaybackStateChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:15.596   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=0, speed=0.0, updated=725640, actions=6553782, custom actions=[], active item id=2, error=null}
2025-03-10 10:10:15.596   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onPlaybackStateChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:15.611  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackActiveTrackChanged', { lastTrack: 
                                                                                                       { title: 'Crystal 101.1',
                                                                                                         url: 'https://radios.radiohd.com.mx/8274/stream',
                                                                                                         artwork: 'http://10.0.2.2:8081/assets/app/assets/images/cristal101.1-albumart.png?platform=android&hash=fc27aba32a79b783d2faf05c3f07aa3a',
                                                                                                         id: 2,
                                                                                                         isLiveStream: true,
                                                                                                         artist: 'Grupo Radar' },
                                                                                                      lastIndex: 1,
                                                                                                      track: 
                                                                                                       { title: 'Radio Lobo Bajío 88.1 FM & 920 AM (Celaya)',
                                                                                                         url: 'https://radios.radiohd.com.mx/8188/stream',
                                                                                                         artwork: 'http://10.0.2.2:8081/assets/app/assets/images/lobobajio88.1-920am-albumart.png?platform=android&hash=49c01682e2c365f8976842cd23b923a3',
                                                                                                         id: 3,
                                                                                                         isLiveStream: true,
                                                                                                         artist: 'Grupo Radar' },
                                                                                                      index: 2,
                                                                                                      lastPosition: 11.139 }
2025-03-10 10:10:15.613  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackState', { state: 'loading' }
2025-03-10 10:10:15.617  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=true
2025-03-10 10:10:15.621  9390-9390  MusicService            com.gruporadarradio                  D  skipping foregrounding as the service is already foregrounded
2025-03-10 10:10:15.622  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=true
2025-03-10 10:10:15.623  9390-9390  MusicService            com.gruporadarradio                  D  skipping foregrounding as the service is already foregrounded
2025-03-10 10:10:15.651  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackState', { state: 'buffering' }
2025-03-10 10:10:15.863   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:15.863   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:15.864   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:15.864   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:15.958   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:15.968  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=true
2025-03-10 10:10:15.970  9390-9390  MusicService            com.gruporadarradio                  D  skipping foregrounding as the service is already foregrounded
2025-03-10 10:10:15.976   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:15.998   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:16.004   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:16.125  9390-9564  MediaCodec              com.gruporadarradio                  D  keep callback message for reclaim
2025-03-10 10:10:16.126  9390-9587  CCodecConfig            com.gruporadarradio                  I  query failed after returning 20 values (BAD_INDEX)
2025-03-10 10:10:16.128  9390-9587  Codec2Client            com.gruporadarradio                  W  query -- param skipped: index = 1342179345.
2025-03-10 10:10:16.128  9390-9587  Codec2Client            com.gruporadarradio                  W  query -- param skipped: index = 2415921170.
2025-03-10 10:10:16.128  9390-9587  Codec2Client            com.gruporadarradio                  W  query -- param skipped: index = 1610614798.
2025-03-10 10:10:16.132   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:16.141   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:16.152   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onQueueChanged(): com.gruporadarradio
2025-03-10 10:10:16.153   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onQueueChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:16.155   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=0, speed=0.0, updated=726187, actions=6553782, custom actions=[], active item id=2, error=null}
2025-03-10 10:10:16.161   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onPlaybackStateChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:16.162   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=BUFFERING(6), position=0, buffered position=0, speed=0.0, updated=726187, actions=6553782, custom actions=[], active item id=2, error=null}
2025-03-10 10:10:16.162   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onPlaybackStateChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:16.297   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onMetadataChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:16.377   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         W  onMetadataChanged(): com.gruporadarradio tried to update with no new data
2025-03-10 10:10:16.471   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=PLAYING(3), position=24, buffered position=8033, speed=1.0, updated=726511, actions=6553782, custom actions=[], active item id=2, error=null}
2025-03-10 10:10:16.494   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:16.505   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:16.523   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=PLAYING(3), position=24, buffered position=8033, speed=1.0, updated=726511, actions=6553782, custom actions=[], active item id=2, error=null}
2025-03-10 10:10:16.529   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:16.531   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:16.555  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackState', { state: 'ready' }
2025-03-10 10:10:16.567  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=true
2025-03-10 10:10:16.572  9390-9390  MusicService            com.gruporadarradio                  D  skipping foregrounding as the service is already foregrounded
2025-03-10 10:10:16.576  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=true
2025-03-10 10:10:16.586  9390-9390  MusicService            com.gruporadarradio                  D  skipping foregrounding as the service is already foregrounded
2025-03-10 10:10:16.701  9390-9461  EGL_emulation           com.gruporadarradio                  D  app_time_stats: avg=83.96ms min=4.21ms max=2943.85ms count=45
2025-03-10 10:10:16.706  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackState', { state: 'playing' }
2025-03-10 10:10:17.787   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=PAUSED(2), position=1354, buffered position=16207, speed=0.0, updated=727843, actions=6553782, custom actions=[], active item id=2, error=null}
2025-03-10 10:10:17.790   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:17.792   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:17.811   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  onPlaybackStateChanged(): com.gruporadarradio : PlaybackState {state=PAUSED(2), position=1354, buffered position=16207, speed=0.0, updated=727843, actions=6553782, custom actions=[], active item id=2, error=null}
2025-03-10 10:10:17.813   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         D  com.gruporadarradio Only Title and Artist info sync for metadata
2025-03-10 10:10:17.814   968-968   AudioMediaPlayerWrapper com.google.android.bluetooth         V  trySendMediaUpdate(): Metadata has been updated for com.gruporadarradio
2025-03-10 10:10:17.828  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  notification posted with id=1, ongoing=false
2025-03-10 10:10:17.830  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackPlayWhenReadyChanged', { playWhenReady: false }
2025-03-10 10:10:17.848  9390-9534  ReactNativeJS           com.gruporadarradio                  I  'Event.PlaybackState', { state: 'paused' }
2025-03-10 10:10:17.859  9390-9461  EGL_emulation           com.gruporadarradio                  D  app_time_stats: avg=377.29ms min=3.86ms max=1115.42ms count=3
2025-03-10 10:10:22.847  9390-9390  MusicServi...egrounding com.gruporadarradio                  D  Notification has been stopped
2025-03-10 10:10:23.120  9390-9590  BufferPoolAccessor2.0   com.gruporadarradio                  D  bufferpool2 0xb400007bf4856898 : 5(40960 size) total buffers - 0(0 size) used buffers - 621/631 (recycle/alloc) - 16/619 (fetch/transfer)
2025-03-10 10:10:23.120  9390-9590  BufferPoolAccessor2.0   com.gruporadarradio                  D  evictor expired: 1, evicted: 1

Calixte-Williams avatar Mar 10 '25 14:03 Calixte-Williams

playWhenReady is a player event handled by listeners; while the native players do set playWhenReady when its playing media (ie. TP.play will directly manipulate the native player so they have playWhenReady set to true), the value change is listened by a listener then emitted back to JS. if ur talking about this slight delay in event emitting, it seems very much to be functioning as intended.

as for ur notification not responsive issue, its more concerning and imo not related to what playWhenReady is about. the notif buttons are all native and wont behave that way unless remotePause/Play is not handled at all; however i dont recall the example app having this issue. u should try reproducing this in the example app.

lovegaoshi avatar Mar 10 '25 17:03 lovegaoshi

Thank you for your input on the issue. I did try building the example app to confirm if the issue presents itself there, but it does not (atleast on android where I tested it). However, my code relating to capabilities and event listeners is based on the example app (with some changes for what I needed). I can't figure out why there is a difference.

Calixte-Williams avatar Mar 10 '25 17:03 Calixte-Williams

This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 7 days.

github-actions[bot] avatar Jun 09 '25 02:06 github-actions[bot]

This issue was closed because it has been stalled for 7 days with no activity.

github-actions[bot] avatar Jun 17 '25 02:06 github-actions[bot]