@javascriptcommon/react-native-track-player 1.2.23 → 4.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/LICENSE +201 -21
  2. package/README.md +8 -0
  3. package/android/build.gradle +80 -63
  4. package/android/proguard-rules.txt +0 -3
  5. package/android/src/main/AndroidManifest.xml +10 -11
  6. package/android/src/main/java/com/doublesymmetry/trackplayer/HeadlessJsMediaService.kt +199 -0
  7. package/android/src/main/java/com/doublesymmetry/trackplayer/TrackPlayer.kt +33 -0
  8. package/android/src/main/java/com/{guichaguri → doublesymmetry}/trackplayer/extensions/AudioPlayerStateExt.kt +3 -3
  9. package/android/src/main/java/com/doublesymmetry/trackplayer/extensions/EnumExtensions.kt +5 -0
  10. package/android/src/main/java/com/doublesymmetry/trackplayer/extensions/NumberExt.kt +13 -0
  11. package/android/src/main/java/com/{guichaguri → doublesymmetry}/trackplayer/model/MetadataAdapter.kt +20 -17
  12. package/android/src/main/java/com/doublesymmetry/trackplayer/model/NowPlayingMetadata.kt +16 -0
  13. package/android/src/main/java/com/{guichaguri/trackplayer/kotlinaudio/models → doublesymmetry/trackplayer/model}/PlaybackMetadata.kt +31 -28
  14. package/android/src/main/java/com/{guichaguri → doublesymmetry}/trackplayer/model/State.kt +1 -1
  15. package/android/src/main/java/com/doublesymmetry/trackplayer/model/Track.kt +67 -0
  16. package/android/src/main/java/com/doublesymmetry/trackplayer/model/TrackAudioItem.kt +18 -0
  17. package/android/src/main/java/com/doublesymmetry/trackplayer/model/TrackMetadata.kt +38 -0
  18. package/android/src/main/java/com/{guichaguri → doublesymmetry}/trackplayer/module/MusicEvents.kt +10 -9
  19. package/android/src/main/java/com/doublesymmetry/trackplayer/module/MusicModule.kt +778 -0
  20. package/android/src/main/java/com/doublesymmetry/trackplayer/service/MusicService.kt +1286 -0
  21. package/android/src/main/java/com/doublesymmetry/trackplayer/utils/AppForegroundTracker.kt +35 -0
  22. package/android/src/main/java/com/{guichaguri/trackplayer/service → doublesymmetry/trackplayer/utils}/BundleUtils.kt +50 -20
  23. package/android/src/main/java/com/doublesymmetry/trackplayer/utils/CoilBitmapLoader.kt +65 -0
  24. package/android/src/main/java/com/doublesymmetry/trackplayer/utils/MediaItemBuilder.kt +41 -0
  25. package/android/src/main/java/com/doublesymmetry/trackplayer/utils/RejectionException.kt +11 -0
  26. package/android/src/main/java/com/doublesymmetry/trackplayer/video/TrackPlayerVideoView.kt +42 -0
  27. package/android/src/main/java/com/doublesymmetry/trackplayer/video/TrackPlayerVideoViewManager.kt +18 -0
  28. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/event/EventHolder.kt +7 -7
  29. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/event/PlayerEventHolder.kt +22 -9
  30. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/AudioContentType.kt +1 -1
  31. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/AudioItem.kt +118 -0
  32. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/AudioItemTransitionReason.kt +3 -3
  33. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/AudioPlayerState.kt +2 -2
  34. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/BufferConfig.kt +1 -1
  35. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/CacheConfig.kt +1 -1
  36. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/Capability.kt +1 -1
  37. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/CustomButton.kt +19 -0
  38. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/FocusChangeData.kt +1 -1
  39. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/MediaSessionCallback.kt +1 -1
  40. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/PlayWhenReadyChangeData.kt +1 -3
  41. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/PlaybackEndedReason.kt +1 -1
  42. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/PlaybackError.kt +1 -1
  43. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/PlayerConfig.kt +8 -5
  44. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PlayerOptions.kt +40 -0
  45. package/android/src/main/java/com/{guichaguri/trackplayer → lovegaoshi}/kotlinaudio/models/PositionChangedReason.kt +1 -1
  46. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/RepeatMode.kt +16 -0
  47. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/WakeMode.kt +7 -0
  48. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/AudioPlayer.kt +756 -0
  49. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/ForwardingPlayer.java +1124 -0
  50. package/android/src/main/java/com/{guichaguri/trackplayer/kotlinaudio/players → lovegaoshi/kotlinaudio/player}/QueuedAudioPlayer.kt +68 -58
  51. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/APMRenderersFactory.kt +33 -0
  52. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/Buffer.kt +34 -0
  53. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/Cache.kt +27 -0
  54. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/FocusManager.kt +59 -0
  55. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/MediaFactory.kt +130 -0
  56. package/android/src/main/java/com/lovegaoshi/kotlinaudio/processors/TeeListener.kt +171 -0
  57. package/android/src/main/java/com/lovegaoshi/kotlinaudio/service/MusicService.kt +127 -0
  58. package/android/src/main/java/com/lovegaoshi/kotlinaudio/utils/FFT.java +99 -0
  59. package/android/src/main/java/com/lovegaoshi/kotlinaudio/utils/Utils.kt +113 -0
  60. package/android/src/main/res/drawable/baseline_repeat_24.xml +5 -0
  61. package/android/src/main/res/drawable/baseline_repeat_one_24.xml +5 -0
  62. package/android/src/main/res/drawable/forward.xml +5 -0
  63. package/android/src/main/res/drawable/heart_24px.xml +5 -0
  64. package/android/src/main/res/drawable/hearte_24px.xml +5 -0
  65. package/android/src/main/res/drawable/ifl_24px.xml +5 -0
  66. package/android/src/main/res/drawable/rewind.xml +5 -0
  67. package/android/src/main/res/drawable/shuffle_24px.xml +5 -0
  68. package/android/src/main/res/values/strings.xml +3 -4
  69. package/android/src/main/res/xml/automotive_app_desc.xml +3 -0
  70. package/ios/Example/SwiftAudio/Assets.xcassets/22AMI.imageset/22AMillion.jpg +0 -0
  71. package/ios/Example/SwiftAudio/Assets.xcassets/22AMI.imageset/Contents.json +21 -0
  72. package/ios/Example/SwiftAudio/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  73. package/ios/Example/SwiftAudio/Assets.xcassets/AppIcon.appiconset/Contents.json +58 -0
  74. package/ios/Example/SwiftAudio/Assets.xcassets/Contents.json +6 -0
  75. package/ios/Example/SwiftAudio/Assets.xcassets/cover.imageset/Contents.json +21 -0
  76. package/ios/Example/SwiftAudio/Assets.xcassets/cover.imageset/cover.jpg +0 -0
  77. package/ios/Example/SwiftAudio/AudioController.swift +46 -0
  78. package/ios/Example/SwiftAudio/Extensions.swift +22 -0
  79. package/ios/Example/SwiftAudio/PlayerView.swift +172 -0
  80. package/ios/Example/SwiftAudio/PlayerViewModel.swift +120 -0
  81. package/ios/Example/SwiftAudio/Preview Content/Preview Assets.xcassets/Contents.json +6 -0
  82. package/ios/Example/SwiftAudio/QueueView.swift +65 -0
  83. package/ios/{TrackPlayer.xcodeproj/xcuserdata/marco.xcuserdatad/xcschemes/xcschememanagement.plist → Example/SwiftAudio/SwiftAudio.entitlements} +6 -8
  84. package/ios/Example/SwiftAudio/SwiftAudioApp.swift +17 -0
  85. package/ios/Example/SwiftAudio.xcodeproj/project.pbxproj +412 -0
  86. package/ios/{TrackPlayer.xcodeproj → Example/SwiftAudio.xcodeproj}/project.xcworkspace/contents.xcworkspacedata +1 -1
  87. package/ios/RNTrackPlayer/Models/Capabilities.swift +39 -4
  88. package/ios/RNTrackPlayer/Models/MediaURL.swift +12 -6
  89. package/ios/RNTrackPlayer/Models/MetadataAdapter.swift +147 -0
  90. package/ios/RNTrackPlayer/Models/PitchAlgorithms.swift +13 -0
  91. package/ios/RNTrackPlayer/Models/SessionCategories.swift +106 -0
  92. package/ios/RNTrackPlayer/Models/State.swift +26 -0
  93. package/ios/RNTrackPlayer/Models/Track.swift +74 -54
  94. package/ios/RNTrackPlayer/RNTrackPlayer.swift +867 -406
  95. package/ios/RNTrackPlayer/Support/RNTrackPlayer-Bridging-Header.h +1 -0
  96. package/ios/RNTrackPlayer/TrackPlayer.h +14 -0
  97. package/ios/RNTrackPlayer/TrackPlayer.mm +249 -0
  98. package/ios/RNTrackPlayer/Utils/EventType.swift +45 -0
  99. package/ios/RNTrackPlayer/Utils/Metadata.swift +60 -0
  100. package/ios/RNTrackPlayer/Video/RNTrackPlayerVideoView.swift +83 -0
  101. package/ios/RNTrackPlayer/Video/RNTrackPlayerVideoViewManager.m +5 -0
  102. package/ios/RNTrackPlayer/Video/RNTrackPlayerVideoViewManager.swift +17 -0
  103. package/ios/SwiftAudioEx/Package.swift +20 -0
  104. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AVPlayerWrapper/AVPlayerWrapper.swift +531 -0
  105. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AVPlayerWrapper/AVPlayerWrapperDelegate.swift +27 -0
  106. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AVPlayerWrapper/AVPlayerWrapperProtocol.swift +69 -0
  107. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AVPlayerWrapper/AVPlayerWrapperState.swift +43 -0
  108. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioItem.swift +158 -0
  109. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioPlayer.swift +459 -0
  110. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioPlayerError.swift +26 -0
  111. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioSessionController/AudioSession.swift +33 -0
  112. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioSessionController/AudioSessionController.swift +135 -0
  113. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioTap.swift +96 -0
  114. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Event.swift +155 -0
  115. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/MediaItemProperty.swift +95 -0
  116. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoCenter.swift +17 -0
  117. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoController.swift +73 -0
  118. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoControllerProtocol.swift +26 -0
  119. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoKeyValue.swift +14 -0
  120. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoProperty.swift +234 -0
  121. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Observer/AVPlayerItemNotificationObserver.swift +102 -0
  122. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Observer/AVPlayerItemObserver.swift +136 -0
  123. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Observer/AVPlayerObserver.swift +120 -0
  124. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Observer/AVPlayerTimeObserver.swift +112 -0
  125. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/QueueManager.swift +356 -0
  126. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/QueuedAudioPlayer.swift +236 -0
  127. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/RemoteCommandController/RemoteCommand.swift +170 -0
  128. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/RemoteCommandController/RemoteCommandController.swift +206 -0
  129. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/RepeatMode.swift +15 -0
  130. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/TimeEventFrequency.swift +26 -0
  131. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Utils/DispatchQueueType.swift +18 -0
  132. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/WaveformAudioTap.swift +159 -0
  133. package/lib/specs/NativeTrackPlayer.d.ts +134 -0
  134. package/lib/specs/NativeTrackPlayer.js +4 -0
  135. package/lib/src/TrackPlayerModule.web.d.ts +2 -0
  136. package/lib/src/TrackPlayerModule.web.js +2 -0
  137. package/lib/src/VideoView.d.ts +16 -0
  138. package/lib/src/VideoView.js +25 -0
  139. package/lib/src/constants/AndroidAudioContentType.d.ts +35 -0
  140. package/lib/src/constants/AndroidAudioContentType.js +36 -0
  141. package/lib/src/constants/AndroidAutoContentStyle.d.ts +10 -0
  142. package/lib/src/constants/AndroidAutoContentStyle.js +11 -0
  143. package/lib/src/constants/AppKilledPlaybackBehavior.d.ts +17 -0
  144. package/lib/src/constants/AppKilledPlaybackBehavior.js +18 -0
  145. package/lib/src/constants/Capability.d.ts +17 -0
  146. package/lib/src/constants/Capability.js +19 -0
  147. package/lib/src/constants/Event.d.ts +172 -0
  148. package/lib/src/constants/Event.js +173 -0
  149. package/lib/src/constants/IOSCategory.d.ts +36 -0
  150. package/lib/src/constants/IOSCategory.js +37 -0
  151. package/lib/src/constants/IOSCategoryMode.d.ts +47 -0
  152. package/lib/src/constants/IOSCategoryMode.js +48 -0
  153. package/lib/src/constants/IOSCategoryOptions.d.ts +44 -0
  154. package/lib/src/constants/IOSCategoryOptions.js +45 -0
  155. package/lib/src/constants/MediaItemPlayable.d.ts +4 -0
  156. package/lib/src/constants/MediaItemPlayable.js +5 -0
  157. package/lib/src/constants/PitchAlgorithm.d.ts +14 -0
  158. package/lib/src/constants/PitchAlgorithm.js +16 -0
  159. package/lib/src/constants/RatingType.d.ts +8 -0
  160. package/lib/src/constants/RatingType.js +10 -0
  161. package/lib/src/constants/RepeatMode.d.ts +8 -0
  162. package/lib/src/constants/RepeatMode.js +10 -0
  163. package/lib/src/constants/State.d.ts +34 -0
  164. package/lib/src/constants/State.js +35 -0
  165. package/lib/src/constants/TrackType.d.ts +6 -0
  166. package/lib/src/constants/TrackType.js +7 -0
  167. package/lib/src/constants/index.d.ts +14 -0
  168. package/lib/src/constants/index.js +14 -0
  169. package/lib/src/hooks/index.d.ts +6 -0
  170. package/lib/src/hooks/index.js +6 -0
  171. package/lib/src/hooks/useActiveTrack.d.ts +2 -0
  172. package/lib/src/hooks/useActiveTrack.js +28 -0
  173. package/lib/src/hooks/useAppIsInBackground.d.ts +1 -0
  174. package/lib/src/hooks/useAppIsInBackground.js +16 -0
  175. package/lib/src/hooks/useIsPlaying.d.ts +35 -0
  176. package/lib/src/hooks/useIsPlaying.js +50 -0
  177. package/lib/src/hooks/usePlayWhenReady.d.ts +1 -0
  178. package/lib/src/hooks/usePlayWhenReady.js +27 -0
  179. package/lib/src/hooks/usePlaybackState.d.ts +10 -0
  180. package/lib/src/hooks/usePlaybackState.js +35 -0
  181. package/lib/src/hooks/useProgress.d.ts +7 -0
  182. package/lib/src/hooks/useProgress.js +55 -0
  183. package/lib/src/hooks/useTrackPlayerEvents.d.ts +8 -0
  184. package/lib/src/hooks/useTrackPlayerEvents.js +30 -0
  185. package/lib/src/index.d.ts +6 -0
  186. package/lib/src/index.js +6 -0
  187. package/lib/src/interfaces/AndroidAutoBrowseTree.d.ts +5 -0
  188. package/lib/src/interfaces/AndroidAutoBrowseTree.js +1 -0
  189. package/lib/src/interfaces/AndroidOptions.d.ts +41 -0
  190. package/lib/src/interfaces/AndroidOptions.js +1 -0
  191. package/lib/src/interfaces/CustomButtons.d.ts +5 -0
  192. package/lib/src/interfaces/CustomButtons.js +1 -0
  193. package/lib/src/interfaces/FeedbackOptions.d.ts +6 -0
  194. package/lib/src/interfaces/FeedbackOptions.js +1 -0
  195. package/lib/src/interfaces/MediaItem.d.ts +18 -0
  196. package/lib/src/interfaces/MediaItem.js +1 -0
  197. package/lib/src/interfaces/MetadataOptions.d.ts +3 -0
  198. package/lib/src/interfaces/MetadataOptions.js +1 -0
  199. package/lib/src/interfaces/NowPlayingMetadata.d.ts +4 -0
  200. package/lib/src/interfaces/NowPlayingMetadata.js +1 -0
  201. package/lib/src/interfaces/PlaybackState.d.ts +8 -0
  202. package/lib/src/interfaces/PlaybackState.js +1 -0
  203. package/lib/src/interfaces/PlayerOptions.d.ts +132 -0
  204. package/lib/src/interfaces/PlayerOptions.js +1 -0
  205. package/lib/src/interfaces/Progress.d.ts +15 -0
  206. package/lib/src/interfaces/Progress.js +1 -0
  207. package/lib/src/interfaces/ResourceObject.d.ts +1 -0
  208. package/lib/src/interfaces/ResourceObject.js +1 -0
  209. package/lib/src/interfaces/ServiceHandler.d.ts +1 -0
  210. package/lib/src/interfaces/ServiceHandler.js +1 -0
  211. package/lib/src/interfaces/Track.d.ts +21 -0
  212. package/lib/src/interfaces/Track.js +1 -0
  213. package/lib/src/interfaces/TrackMetadataBase.d.ts +28 -0
  214. package/lib/src/interfaces/TrackMetadataBase.js +1 -0
  215. package/lib/src/interfaces/UpdateOptions.d.ts +52 -0
  216. package/lib/src/interfaces/UpdateOptions.js +1 -0
  217. package/lib/src/interfaces/events/AudioMetadataReceivedEvent.d.ts +33 -0
  218. package/lib/src/interfaces/events/AudioMetadataReceivedEvent.js +1 -0
  219. package/lib/src/interfaces/events/ControllerConnectedEvent.d.ts +8 -0
  220. package/lib/src/interfaces/events/ControllerConnectedEvent.js +1 -0
  221. package/lib/src/interfaces/events/EventPayloadByEvent.d.ts +77 -0
  222. package/lib/src/interfaces/events/EventPayloadByEvent.js +1 -0
  223. package/lib/src/interfaces/events/FFTUpdateEvent.d.ts +7 -0
  224. package/lib/src/interfaces/events/FFTUpdateEvent.js +1 -0
  225. package/lib/src/interfaces/events/PlaybackActiveTrackChangedEvent.d.ts +24 -0
  226. package/lib/src/interfaces/events/PlaybackActiveTrackChangedEvent.js +1 -0
  227. package/lib/src/interfaces/events/PlaybackAnimatedVolumeChangedEvent.d.ts +4 -0
  228. package/lib/src/interfaces/events/PlaybackAnimatedVolumeChangedEvent.js +1 -0
  229. package/lib/src/interfaces/events/PlaybackErrorEvent.d.ts +6 -0
  230. package/lib/src/interfaces/events/PlaybackErrorEvent.js +1 -0
  231. package/lib/src/interfaces/events/PlaybackMetadataReceivedEvent.d.ts +16 -0
  232. package/lib/src/interfaces/events/PlaybackMetadataReceivedEvent.js +1 -0
  233. package/lib/src/interfaces/events/PlaybackPlayWhenReadyChangedEvent.d.ts +4 -0
  234. package/lib/src/interfaces/events/PlaybackPlayWhenReadyChangedEvent.js +1 -0
  235. package/lib/src/interfaces/events/PlaybackProgressUpdatedEvent.d.ts +4 -0
  236. package/lib/src/interfaces/events/PlaybackProgressUpdatedEvent.js +1 -0
  237. package/lib/src/interfaces/events/PlaybackQueueEndedEvent.d.ts +9 -0
  238. package/lib/src/interfaces/events/PlaybackQueueEndedEvent.js +1 -0
  239. package/lib/src/interfaces/events/PlaybackResumeEvent.d.ts +3 -0
  240. package/lib/src/interfaces/events/PlaybackResumeEvent.js +1 -0
  241. package/lib/src/interfaces/events/PlaybackTrackChangedEvent.d.ts +11 -0
  242. package/lib/src/interfaces/events/PlaybackTrackChangedEvent.js +1 -0
  243. package/lib/src/interfaces/events/PlayerErrorEvent.d.ts +6 -0
  244. package/lib/src/interfaces/events/PlayerErrorEvent.js +1 -0
  245. package/lib/src/interfaces/events/RemoteBrowseEvent.d.ts +4 -0
  246. package/lib/src/interfaces/events/RemoteBrowseEvent.js +1 -0
  247. package/lib/src/interfaces/events/RemoteCustomActionEvent.d.ts +7 -0
  248. package/lib/src/interfaces/events/RemoteCustomActionEvent.js +1 -0
  249. package/lib/src/interfaces/events/RemoteDuckEvent.d.ts +13 -0
  250. package/lib/src/interfaces/events/RemoteDuckEvent.js +1 -0
  251. package/lib/src/interfaces/events/RemoteJumpBackwardEvent.d.ts +7 -0
  252. package/lib/src/interfaces/events/RemoteJumpBackwardEvent.js +1 -0
  253. package/lib/src/interfaces/events/RemoteJumpForwardEvent.d.ts +7 -0
  254. package/lib/src/interfaces/events/RemoteJumpForwardEvent.js +1 -0
  255. package/lib/src/interfaces/events/RemotePlayIdEvent.d.ts +4 -0
  256. package/lib/src/interfaces/events/RemotePlayIdEvent.js +1 -0
  257. package/lib/src/interfaces/events/RemotePlaySearchEvent.d.ts +9 -0
  258. package/lib/src/interfaces/events/RemotePlaySearchEvent.js +1 -0
  259. package/lib/src/interfaces/events/RemoteSearchEvent.d.ts +3 -0
  260. package/lib/src/interfaces/events/RemoteSearchEvent.js +1 -0
  261. package/lib/src/interfaces/events/RemoteSeekEvent.d.ts +4 -0
  262. package/lib/src/interfaces/events/RemoteSeekEvent.js +1 -0
  263. package/lib/src/interfaces/events/RemoteSetRatingEvent.d.ts +4 -0
  264. package/lib/src/interfaces/events/RemoteSetRatingEvent.js +1 -0
  265. package/lib/src/interfaces/events/RemoteSkipEvent.d.ts +3 -0
  266. package/lib/src/interfaces/events/RemoteSkipEvent.js +1 -0
  267. package/lib/src/interfaces/events/index.d.ts +20 -0
  268. package/lib/src/interfaces/events/index.js +20 -0
  269. package/lib/src/interfaces/index.d.ts +15 -0
  270. package/lib/src/interfaces/index.js +15 -0
  271. package/lib/src/resolveAssetSource.d.ts +2 -0
  272. package/lib/src/resolveAssetSource.js +3 -0
  273. package/lib/src/resolveAssetSource.web.d.ts +2 -0
  274. package/lib/src/resolveAssetSource.web.js +8 -0
  275. package/lib/src/trackPlayer.d.ts +371 -0
  276. package/lib/src/trackPlayer.js +627 -0
  277. package/lib/web/TrackPlayer/Player.d.ts +40 -0
  278. package/lib/web/TrackPlayer/Player.js +188 -0
  279. package/lib/web/TrackPlayer/PlaylistPlayer.d.ts +31 -0
  280. package/lib/web/TrackPlayer/PlaylistPlayer.js +181 -0
  281. package/lib/web/TrackPlayer/RepeatMode.d.ts +5 -0
  282. package/lib/web/TrackPlayer/RepeatMode.js +6 -0
  283. package/lib/web/TrackPlayer/SetupNotCalledError.d.ts +3 -0
  284. package/lib/web/TrackPlayer/SetupNotCalledError.js +5 -0
  285. package/lib/web/TrackPlayer/index.d.ts +3 -0
  286. package/lib/web/TrackPlayer/index.js +3 -0
  287. package/lib/web/TrackPlayerModule.d.ts +63 -0
  288. package/lib/web/TrackPlayerModule.js +153 -0
  289. package/lib/web/index.d.ts +3 -0
  290. package/lib/web/index.js +3 -0
  291. package/package.json +85 -6
  292. package/react-native-track-player.podspec +13 -13
  293. package/specs/NativeTrackPlayer.ts +153 -0
  294. package/src/TrackPlayerModule.web.ts +2 -0
  295. package/src/VideoView.tsx +51 -0
  296. package/src/constants/AndroidAudioContentType.ts +35 -0
  297. package/src/constants/AndroidAutoContentStyle.ts +10 -0
  298. package/src/constants/AppKilledPlaybackBehavior.ts +19 -0
  299. package/src/constants/Capability.ts +19 -0
  300. package/src/constants/Event.ts +173 -0
  301. package/src/constants/IOSCategory.ts +36 -0
  302. package/src/constants/IOSCategoryMode.ts +47 -0
  303. package/src/constants/IOSCategoryOptions.ts +44 -0
  304. package/src/constants/MediaItemPlayable.ts +4 -0
  305. package/src/constants/PitchAlgorithm.ts +16 -0
  306. package/src/constants/RatingType.ts +10 -0
  307. package/src/constants/RepeatMode.ts +10 -0
  308. package/src/constants/State.ts +34 -0
  309. package/src/constants/TrackType.ts +6 -0
  310. package/src/constants/index.ts +14 -0
  311. package/src/hooks/index.ts +6 -0
  312. package/src/hooks/useActiveTrack.ts +36 -0
  313. package/src/hooks/useAppIsInBackground.ts +20 -0
  314. package/src/hooks/useIsPlaying.ts +56 -0
  315. package/src/hooks/usePlayWhenReady.ts +37 -0
  316. package/src/hooks/usePlaybackState.ts +45 -0
  317. package/src/hooks/useProgress.ts +64 -0
  318. package/src/hooks/useTrackPlayerEvents.ts +48 -0
  319. package/src/index.ts +8 -0
  320. package/src/interfaces/AndroidAutoBrowseTree.ts +6 -0
  321. package/src/interfaces/AndroidOptions.ts +48 -0
  322. package/src/interfaces/CustomButtons.ts +6 -0
  323. package/src/interfaces/FeedbackOptions.ts +7 -0
  324. package/src/interfaces/MediaItem.ts +19 -0
  325. package/src/interfaces/MetadataOptions.ts +4 -0
  326. package/src/interfaces/NowPlayingMetadata.ts +5 -0
  327. package/src/interfaces/PlaybackState.ts +11 -0
  328. package/src/interfaces/PlayerOptions.ts +138 -0
  329. package/src/interfaces/Progress.ts +15 -0
  330. package/src/interfaces/ResourceObject.ts +1 -0
  331. package/src/interfaces/ServiceHandler.ts +1 -0
  332. package/src/interfaces/Track.ts +23 -0
  333. package/src/interfaces/TrackMetadataBase.ts +29 -0
  334. package/src/interfaces/UpdateOptions.ts +59 -0
  335. package/src/interfaces/events/AudioMetadataReceivedEvent.ts +37 -0
  336. package/src/interfaces/events/ControllerConnectedEvent.ts +9 -0
  337. package/src/interfaces/events/EventPayloadByEvent.ts +80 -0
  338. package/src/interfaces/events/FFTUpdateEvent.ts +9 -0
  339. package/src/interfaces/events/PlaybackActiveTrackChangedEvent.ts +29 -0
  340. package/src/interfaces/events/PlaybackAnimatedVolumeChangedEvent.ts +4 -0
  341. package/src/interfaces/events/PlaybackErrorEvent.ts +6 -0
  342. package/src/interfaces/events/PlaybackMetadataReceivedEvent.ts +16 -0
  343. package/src/interfaces/events/PlaybackPlayWhenReadyChangedEvent.ts +4 -0
  344. package/src/interfaces/events/PlaybackProgressUpdatedEvent.ts +5 -0
  345. package/src/interfaces/events/PlaybackQueueEndedEvent.ts +9 -0
  346. package/src/interfaces/events/PlaybackResumeEvent.ts +5 -0
  347. package/src/interfaces/events/PlaybackTrackChangedEvent.ts +11 -0
  348. package/src/interfaces/events/PlayerErrorEvent.ts +6 -0
  349. package/src/interfaces/events/RemoteBrowseEvent.ts +4 -0
  350. package/src/interfaces/events/RemoteCustomActionEvent.ts +7 -0
  351. package/src/interfaces/events/RemoteDuckEvent.ts +13 -0
  352. package/src/interfaces/events/RemoteJumpBackwardEvent.ts +7 -0
  353. package/src/interfaces/events/RemoteJumpForwardEvent.ts +7 -0
  354. package/src/interfaces/events/RemotePlayIdEvent.ts +4 -0
  355. package/src/interfaces/events/RemotePlaySearchEvent.ts +21 -0
  356. package/src/interfaces/events/RemoteSearchEvent.ts +3 -0
  357. package/src/interfaces/events/RemoteSeekEvent.ts +4 -0
  358. package/src/interfaces/events/RemoteSetRatingEvent.ts +5 -0
  359. package/src/interfaces/events/RemoteSkipEvent.ts +3 -0
  360. package/src/interfaces/events/index.ts +20 -0
  361. package/src/interfaces/index.ts +15 -0
  362. package/src/resolveAssetSource.ts +3 -0
  363. package/src/resolveAssetSource.web.ts +10 -0
  364. package/src/trackPlayer.ts +806 -0
  365. package/web/TrackPlayer/Player.ts +201 -0
  366. package/web/TrackPlayer/PlaylistPlayer.ts +215 -0
  367. package/web/TrackPlayer/RepeatMode.ts +6 -0
  368. package/web/TrackPlayer/SetupNotCalledError.ts +5 -0
  369. package/web/TrackPlayer/index.ts +3 -0
  370. package/web/TrackPlayerModule.ts +181 -0
  371. package/web/index.ts +4 -0
  372. package/CHANGELOG.md +0 -75
  373. package/android/react-native-music-control.iml +0 -139
  374. package/android/react-native-track-player.iml +0 -151
  375. package/android/src/main/ic_home-playstore.png +0 -0
  376. package/android/src/main/ic_repeat-playstore.png +0 -0
  377. package/android/src/main/ic_repeat_50-playstore.png +0 -0
  378. package/android/src/main/ic_shuffle-playstore.png +0 -0
  379. package/android/src/main/ic_shuffle_50-playstore.png +0 -0
  380. package/android/src/main/ic_shuffle_sm-playstore.png +0 -0
  381. package/android/src/main/ic_stop-playstore.png +0 -0
  382. package/android/src/main/ic_test-playstore.png +0 -0
  383. package/android/src/main/java/com/guichaguri/trackplayer/HeadlessJsMediaService.java +0 -225
  384. package/android/src/main/java/com/guichaguri/trackplayer/TrackPlayer.kt +0 -25
  385. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/event/NotificationEventHolder.kt +0 -20
  386. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/AAMediaSessionCallback.kt +0 -10
  387. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/AudioItem.kt +0 -66
  388. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/NotificationConfig.kt +0 -43
  389. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/NotificationMetadata.kt +0 -8
  390. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/NotificationState.kt +0 -8
  391. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/PlayerOptions.kt +0 -9
  392. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/models/QueuedPlayerOptions.kt +0 -49
  393. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/notification/NotificationManager.kt +0 -678
  394. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/players/AudioPlayer.kt +0 -10
  395. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/players/BaseAudioPlayer.kt +0 -864
  396. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/players/components/MediaSourceExt.kt +0 -35
  397. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/players/components/PlayerCache.kt +0 -26
  398. package/android/src/main/java/com/guichaguri/trackplayer/kotlinaudio/utils/Utils.kt +0 -12
  399. package/android/src/main/java/com/guichaguri/trackplayer/model/Track.kt +0 -120
  400. package/android/src/main/java/com/guichaguri/trackplayer/model/TrackAudioItem.kt +0 -19
  401. package/android/src/main/java/com/guichaguri/trackplayer/model/TrackType.kt +0 -11
  402. package/android/src/main/java/com/guichaguri/trackplayer/module/AutoConnectionDetector.kt +0 -151
  403. package/android/src/main/java/com/guichaguri/trackplayer/module/MusicModule.kt +0 -1177
  404. package/android/src/main/java/com/guichaguri/trackplayer/service/MusicBinder.kt +0 -31
  405. package/android/src/main/java/com/guichaguri/trackplayer/service/MusicManager.kt +0 -347
  406. package/android/src/main/java/com/guichaguri/trackplayer/service/MusicService.kt +0 -1254
  407. package/android/src/main/java/com/guichaguri/trackplayer/service/Utils.kt +0 -228
  408. package/android/src/main/java/com/guichaguri/trackplayer/service/metadata/ButtonEvents.kt +0 -141
  409. package/android/src/main/java/com/guichaguri/trackplayer/service/metadata/MetadataManager.kt +0 -396
  410. package/android/src/main/res/drawable-hdpi/ic_forward.png +0 -0
  411. package/android/src/main/res/drawable-hdpi/ic_home.png +0 -0
  412. package/android/src/main/res/drawable-hdpi/ic_next.png +0 -0
  413. package/android/src/main/res/drawable-hdpi/ic_pause.png +0 -0
  414. package/android/src/main/res/drawable-hdpi/ic_play.png +0 -0
  415. package/android/src/main/res/drawable-hdpi/ic_previous.png +0 -0
  416. package/android/src/main/res/drawable-hdpi/ic_rewind.png +0 -0
  417. package/android/src/main/res/drawable-hdpi/ic_stop.png +0 -0
  418. package/android/src/main/res/drawable-mdpi/ic_forward.png +0 -0
  419. package/android/src/main/res/drawable-mdpi/ic_home.png +0 -0
  420. package/android/src/main/res/drawable-mdpi/ic_next.png +0 -0
  421. package/android/src/main/res/drawable-mdpi/ic_pause.png +0 -0
  422. package/android/src/main/res/drawable-mdpi/ic_play.png +0 -0
  423. package/android/src/main/res/drawable-mdpi/ic_previous.png +0 -0
  424. package/android/src/main/res/drawable-mdpi/ic_rewind.png +0 -0
  425. package/android/src/main/res/drawable-mdpi/ic_stop.png +0 -0
  426. package/android/src/main/res/drawable-xhdpi/ic_forward.png +0 -0
  427. package/android/src/main/res/drawable-xhdpi/ic_home.png +0 -0
  428. package/android/src/main/res/drawable-xhdpi/ic_next.png +0 -0
  429. package/android/src/main/res/drawable-xhdpi/ic_pause.png +0 -0
  430. package/android/src/main/res/drawable-xhdpi/ic_play.png +0 -0
  431. package/android/src/main/res/drawable-xhdpi/ic_previous.png +0 -0
  432. package/android/src/main/res/drawable-xhdpi/ic_rewind.png +0 -0
  433. package/android/src/main/res/drawable-xhdpi/ic_stop.png +0 -0
  434. package/android/src/main/res/drawable-xxhdpi/ic_forward.png +0 -0
  435. package/android/src/main/res/drawable-xxhdpi/ic_home.png +0 -0
  436. package/android/src/main/res/drawable-xxhdpi/ic_next.png +0 -0
  437. package/android/src/main/res/drawable-xxhdpi/ic_pause.png +0 -0
  438. package/android/src/main/res/drawable-xxhdpi/ic_play.png +0 -0
  439. package/android/src/main/res/drawable-xxhdpi/ic_previous.png +0 -0
  440. package/android/src/main/res/drawable-xxhdpi/ic_rewind.png +0 -0
  441. package/android/src/main/res/drawable-xxhdpi/ic_stop.png +0 -0
  442. package/android/src/main/res/drawable-xxxhdpi/ic_forward.png +0 -0
  443. package/android/src/main/res/drawable-xxxhdpi/ic_home.png +0 -0
  444. package/android/src/main/res/drawable-xxxhdpi/ic_next.png +0 -0
  445. package/android/src/main/res/drawable-xxxhdpi/ic_pause.png +0 -0
  446. package/android/src/main/res/drawable-xxxhdpi/ic_play.png +0 -0
  447. package/android/src/main/res/drawable-xxxhdpi/ic_previous.png +0 -0
  448. package/android/src/main/res/drawable-xxxhdpi/ic_rewind.png +0 -0
  449. package/android/src/main/res/drawable-xxxhdpi/ic_stop.png +0 -0
  450. package/android/src/main/res/mipmap-hdpi/ic_arrow_down_circle_foreground.png +0 -0
  451. package/android/src/main/res/mipmap-hdpi/ic_clock_now_foreground.png +0 -0
  452. package/android/src/main/res/mipmap-hdpi/ic_close_foreground.png +0 -0
  453. package/android/src/main/res/mipmap-hdpi/ic_heart_foreground.png +0 -0
  454. package/android/src/main/res/mipmap-hdpi/ic_heart_outlined_foreground.png +0 -0
  455. package/android/src/main/res/mipmap-hdpi/ic_repeat_off_foreground.png +0 -0
  456. package/android/src/main/res/mipmap-hdpi/ic_repeat_on_foreground.png +0 -0
  457. package/android/src/main/res/mipmap-hdpi/ic_shuffle_off_foreground.png +0 -0
  458. package/android/src/main/res/mipmap-hdpi/ic_shuffle_on_foreground.png +0 -0
  459. package/android/src/main/res/mipmap-mdpi/ic_arrow_down_circle_foreground.png +0 -0
  460. package/android/src/main/res/mipmap-mdpi/ic_clock_now_foreground.png +0 -0
  461. package/android/src/main/res/mipmap-mdpi/ic_close_foreground.png +0 -0
  462. package/android/src/main/res/mipmap-mdpi/ic_heart_foreground.png +0 -0
  463. package/android/src/main/res/mipmap-mdpi/ic_heart_outlined_foreground.png +0 -0
  464. package/android/src/main/res/mipmap-mdpi/ic_repeat_off_foreground.png +0 -0
  465. package/android/src/main/res/mipmap-mdpi/ic_repeat_on_foreground.png +0 -0
  466. package/android/src/main/res/mipmap-mdpi/ic_shuffle_off_foreground.png +0 -0
  467. package/android/src/main/res/mipmap-mdpi/ic_shuffle_on_foreground.png +0 -0
  468. package/android/src/main/res/mipmap-xhdpi/ic_arrow_down_circle_foreground.png +0 -0
  469. package/android/src/main/res/mipmap-xhdpi/ic_clock_now_foreground.png +0 -0
  470. package/android/src/main/res/mipmap-xhdpi/ic_close_foreground.png +0 -0
  471. package/android/src/main/res/mipmap-xhdpi/ic_heart_foreground.png +0 -0
  472. package/android/src/main/res/mipmap-xhdpi/ic_heart_outlined_foreground.png +0 -0
  473. package/android/src/main/res/mipmap-xhdpi/ic_repeat_off_foreground.png +0 -0
  474. package/android/src/main/res/mipmap-xhdpi/ic_repeat_on_foreground.png +0 -0
  475. package/android/src/main/res/mipmap-xhdpi/ic_shuffle_off_foreground.png +0 -0
  476. package/android/src/main/res/mipmap-xhdpi/ic_shuffle_on_foreground.png +0 -0
  477. package/android/src/main/res/mipmap-xxhdpi/ic_arrow_down_circle_foreground.png +0 -0
  478. package/android/src/main/res/mipmap-xxhdpi/ic_clock_now_foreground.png +0 -0
  479. package/android/src/main/res/mipmap-xxhdpi/ic_close_foreground.png +0 -0
  480. package/android/src/main/res/mipmap-xxhdpi/ic_heart_foreground.png +0 -0
  481. package/android/src/main/res/mipmap-xxhdpi/ic_heart_outlined_foreground.png +0 -0
  482. package/android/src/main/res/mipmap-xxhdpi/ic_repeat_off_foreground.png +0 -0
  483. package/android/src/main/res/mipmap-xxhdpi/ic_repeat_on_foreground.png +0 -0
  484. package/android/src/main/res/mipmap-xxhdpi/ic_shuffle_off_foreground.png +0 -0
  485. package/android/src/main/res/mipmap-xxhdpi/ic_shuffle_on_foreground.png +0 -0
  486. package/android/src/main/res/mipmap-xxxhdpi/ic_arrow_down_circle_foreground.png +0 -0
  487. package/android/src/main/res/mipmap-xxxhdpi/ic_clock_now_foreground.png +0 -0
  488. package/android/src/main/res/mipmap-xxxhdpi/ic_close_foreground.png +0 -0
  489. package/android/src/main/res/mipmap-xxxhdpi/ic_heart_foreground.png +0 -0
  490. package/android/src/main/res/mipmap-xxxhdpi/ic_heart_outlined_foreground.png +0 -0
  491. package/android/src/main/res/mipmap-xxxhdpi/ic_repeat_off_foreground.png +0 -0
  492. package/android/src/main/res/mipmap-xxxhdpi/ic_repeat_on_foreground.png +0 -0
  493. package/android/src/main/res/mipmap-xxxhdpi/ic_shuffle_off_foreground.png +0 -0
  494. package/android/src/main/res/mipmap-xxxhdpi/ic_shuffle_on_foreground.png +0 -0
  495. package/android/src/main/res/raw/silent_5_seconds.mp3 +0 -0
  496. package/android/src/main/res/strings.xml +0 -6
  497. package/index.d.ts +0 -235
  498. package/index.js +0 -4
  499. package/ios/RNTrackPlayer/RNTrackPlayerBridge.h +0 -12
  500. package/ios/RNTrackPlayer/RNTrackPlayerBridge.m +0 -29
  501. package/ios/TrackPlayer.xcodeproj/project.pbxproj +0 -495
  502. package/ios/TrackPlayer.xcodeproj/project.xcworkspace/xcuserdata/marco.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  503. package/lib/ProgressComponent.js +0 -70
  504. package/lib/eventTypes.js +0 -28
  505. package/lib/hooks.js +0 -160
  506. package/lib/index.js +0 -178
  507. /package/ios/{TrackPlayer.xcodeproj → Example/SwiftAudio.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
@@ -0,0 +1,47 @@
1
+ export enum IOSCategoryMode {
2
+ /**
3
+ * The default audio session mode.
4
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/mode/1616579-default
5
+ **/
6
+ Default = 'default',
7
+ /**
8
+ * A mode that the GameKit framework sets on behalf of an application that
9
+ * uses GameKit’s voice chat service.
10
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/mode/1616511-gamechat
11
+ **/
12
+ GameChat = 'gameChat',
13
+ /**
14
+ * A mode that indicates that your app is performing measurement of audio
15
+ * input or output.
16
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/mode/1616608-measurement
17
+ **/
18
+ Measurement = 'measurement',
19
+ /** A mode that indicates that your app is playing back movie content.
20
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/mode/1616623-movieplayback
21
+ **/
22
+ MoviePlayback = 'moviePlayback',
23
+ /** A mode used for continuous spoken audio to pause the audio when another
24
+ * app plays a short audio prompt. See https://developer.apple.com/documentation/avfaudio/avaudiosession/mode/1616510-spokenaudio */
25
+ SpokenAudio = 'spokenAudio',
26
+ /**
27
+ * A mode that indicates that your app is engaging in online video conferencing.
28
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/mode/1616590-videochat
29
+ **/
30
+ VideoChat = 'videoChat',
31
+ /**
32
+ * A mode that indicates that your app is recording a movie.
33
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/mode/1616535-videorecording
34
+ **/
35
+ VideoRecording = 'videoRecording',
36
+ /**
37
+ * A mode that indicates that your app is performing two-way voice communication,
38
+ * such as using Voice over Internet Protocol (VoIP).
39
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/mode/1616455-voicechat
40
+ **/
41
+ VoiceChat = 'voiceChat',
42
+ /**
43
+ * A mode that indicates that your app plays audio using text-to-speech.
44
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/mode/2962803-voiceprompt
45
+ **/
46
+ VoicePrompt = 'voicePrompt',
47
+ }
@@ -0,0 +1,44 @@
1
+ export enum IOSCategoryOptions {
2
+ /**
3
+ * An option that indicates whether audio from this session mixes with audio
4
+ * from active sessions in other audio apps.
5
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/categoryoptions/1616611-mixwithothers
6
+ **/
7
+ MixWithOthers = 'mixWithOthers',
8
+ /**
9
+ * An option that reduces the volume of other audio sessions while audio from
10
+ * this session plays.
11
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/categoryoptions/1616618-duckothers
12
+ **/
13
+ DuckOthers = 'duckOthers',
14
+ /**
15
+ * An option that determines whether to pause spoken audio content from other
16
+ * sessions when your app plays its audio.
17
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/categoryoptions/1616534-interruptspokenaudioandmixwithot
18
+ **/
19
+ InterruptSpokenAudioAndMixWithOthers = 'interruptSpokenAudioAndMixWithOthers',
20
+ /**
21
+ * An option that determines whether Bluetooth hands-free devices appear as
22
+ * available input routes.
23
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/categoryoptions/1616518-allowbluetooth
24
+ **/
25
+ AllowBluetooth = 'allowBluetooth',
26
+ /**
27
+ * An option that determines whether you can stream audio from this session
28
+ * to Bluetooth devices that support the Advanced Audio Distribution Profile (A2DP).
29
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/categoryoptions/1771735-allowbluetootha2dp
30
+ **/
31
+ AllowBluetoothA2DP = 'allowBluetoothA2DP',
32
+ /**
33
+ * An option that determines whether you can stream audio from this session
34
+ * to AirPlay devices.
35
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/categoryoptions/1771736-allowairplay
36
+ **/
37
+ AllowAirPlay = 'allowAirPlay',
38
+ /**
39
+ * An option that determines whether audio from the session defaults to the
40
+ * built-in speaker instead of the receiver.
41
+ * See https://developer.apple.com/documentation/avfaudio/avaudiosession/categoryoptions/1616462-defaulttospeaker
42
+ **/
43
+ DefaultToSpeaker = 'defaultToSpeaker',
44
+ }
@@ -0,0 +1,4 @@
1
+ export enum MediaItemPlayable {
2
+ MediaPlayable = '0',
3
+ MediaBrowsable = '1',
4
+ }
@@ -0,0 +1,16 @@
1
+ import {Constants as TrackPlayer} from '../../specs/NativeTrackPlayer';
2
+
3
+ export enum PitchAlgorithm {
4
+ /**
5
+ * A high-quality time pitch algorithm that doesn’t perform pitch correction.
6
+ * */
7
+ Linear = TrackPlayer.PITCH_ALGORITHM_LINEAR,
8
+ /**
9
+ * A highest-quality time pitch algorithm that’s suitable for music.
10
+ **/
11
+ Music = TrackPlayer.PITCH_ALGORITHM_MUSIC,
12
+ /**
13
+ * A modest quality time pitch algorithm that’s suitable for voice.
14
+ **/
15
+ Voice = TrackPlayer.PITCH_ALGORITHM_VOICE,
16
+ }
@@ -0,0 +1,10 @@
1
+ import {Constants as TrackPlayer} from '../../specs/NativeTrackPlayer';
2
+
3
+ export enum RatingType {
4
+ Heart = TrackPlayer.RATING_HEART,
5
+ ThumbsUpDown = TrackPlayer.RATING_THUMBS_UP_DOWN,
6
+ ThreeStars = TrackPlayer.RATING_3_STARS,
7
+ FourStars = TrackPlayer.RATING_4_STARS,
8
+ FiveStars = TrackPlayer.RATING_5_STARS,
9
+ Percentage = TrackPlayer.RATING_PERCENTAGE,
10
+ }
@@ -0,0 +1,10 @@
1
+ import {Constants as TrackPlayer} from '../../specs/NativeTrackPlayer';
2
+
3
+ export enum RepeatMode {
4
+ /** Playback stops when the last track in the queue has finished playing. */
5
+ Off = TrackPlayer.REPEAT_OFF,
6
+ /** Repeats the current track infinitely during ongoing playback. */
7
+ Track = TrackPlayer.REPEAT_TRACK,
8
+ /** Repeats the entire queue infinitely. */
9
+ Queue = TrackPlayer.REPEAT_QUEUE,
10
+ }
@@ -0,0 +1,34 @@
1
+ export enum State {
2
+ /** Indicates that no media is currently loaded */
3
+ None = 'none',
4
+ /** Indicates that the player is paused, but ready to start playing */
5
+ Ready = 'ready',
6
+ /** Indicates that the player is currently playing */
7
+ Playing = 'playing',
8
+ /** Indicates that the player is currently paused */
9
+ Paused = 'paused',
10
+ /** Indicates that the player is currently stopped */
11
+ Stopped = 'stopped',
12
+ /** Indicates that the initial load of the item is occurring. */
13
+ Loading = 'loading',
14
+ /**
15
+ * @deprecated Use `State.Loading` instead.
16
+ **/
17
+ Connecting = 'loading',
18
+ /**
19
+ * Indicates that the player is currently loading more data before it can
20
+ * continue playing or is ready to start playing.
21
+ */
22
+ Buffering = 'buffering',
23
+ /**
24
+ * Indicates that playback of the current item failed. Call `TrackPlayer.getError()`
25
+ * to get more information on the type of error that occurred.
26
+ * Call `TrackPlayer.retry()` or `TrackPlayer.play()` to try to play the item
27
+ * again.
28
+ */
29
+ Error = 'error',
30
+ /**
31
+ * Indicates that playback stopped due to the end of the queue being reached.
32
+ */
33
+ Ended = 'ended',
34
+ }
@@ -0,0 +1,6 @@
1
+ export enum TrackType {
2
+ Default = 'default',
3
+ Dash = 'dash',
4
+ HLS = 'hls',
5
+ SmoothStreaming = 'smoothstreaming',
6
+ }
@@ -0,0 +1,14 @@
1
+ export * from './AndroidAudioContentType';
2
+ export * from './AndroidAutoContentStyle';
3
+ export * from './AppKilledPlaybackBehavior';
4
+ export * from './Capability';
5
+ export * from './Event';
6
+ export * from './IOSCategory';
7
+ export * from './IOSCategoryMode';
8
+ export * from './IOSCategoryOptions';
9
+ export * from './PitchAlgorithm';
10
+ export * from './RatingType';
11
+ export * from './RepeatMode';
12
+ export * from './State';
13
+ export * from './TrackType';
14
+ export * from './MediaItemPlayable';
@@ -0,0 +1,6 @@
1
+ export * from './useActiveTrack';
2
+ export * from './useIsPlaying';
3
+ export * from './usePlayWhenReady';
4
+ export * from './usePlaybackState';
5
+ export * from './useProgress';
6
+ export * from './useTrackPlayerEvents';
@@ -0,0 +1,36 @@
1
+ import { useState, useEffect } from 'react';
2
+
3
+ import { getActiveTrack } from '../trackPlayer';
4
+ import { Event } from '../constants';
5
+ import type { Track } from '../interfaces/Track';
6
+ import { useTrackPlayerEvents } from './useTrackPlayerEvents';
7
+
8
+ export const useActiveTrack = (): Track | undefined => {
9
+ const [track, setTrack] = useState<Track | undefined>();
10
+
11
+ // Sets the initial index (if still undefined)
12
+ useEffect(() => {
13
+ let unmounted = false;
14
+ getActiveTrack()
15
+ .then((initialTrack) => {
16
+ if (unmounted) return;
17
+ setTrack((track) => track ?? initialTrack ?? undefined);
18
+ })
19
+ .catch(() => {
20
+ // throws when you haven't yet setup, which is fine because it also
21
+ // means there's no active track
22
+ });
23
+ return () => {
24
+ unmounted = true;
25
+ };
26
+ }, []);
27
+
28
+ useTrackPlayerEvents(
29
+ [Event.PlaybackActiveTrackChanged],
30
+ async ({ track }) => {
31
+ setTrack(track ?? undefined);
32
+ }
33
+ );
34
+
35
+ return track;
36
+ };
@@ -0,0 +1,20 @@
1
+ import { useState, useEffect, useRef } from 'react';
2
+ import { AppState, AppStateStatus, NativeEventSubscription } from 'react-native';
3
+
4
+ export function useAppIsInBackground() {
5
+ const [state, setState] = useState<AppStateStatus>('active');
6
+ const eventListener = useRef<NativeEventSubscription>(undefined);
7
+
8
+ useEffect(() => {
9
+ const onStateChange = (nextState: AppStateStatus) => {
10
+ setState(nextState);
11
+ };
12
+
13
+ eventListener.current = AppState.addEventListener('change', onStateChange);
14
+
15
+ return () => {
16
+ eventListener.current?.remove();
17
+ };
18
+ }, []);
19
+ return state === 'background';
20
+ }
@@ -0,0 +1,56 @@
1
+ import * as TrackPlayer from '../trackPlayer';
2
+ import { State } from '../constants';
3
+ import { usePlayWhenReady } from './usePlayWhenReady';
4
+ import { usePlaybackState } from './usePlaybackState';
5
+
6
+ /**
7
+ * Tells whether the TrackPlayer is in a mode that most people would describe
8
+ * as "playing." Great for UI to decide whether to show a Play or Pause button.
9
+ * @returns playing - whether UI should likely show as Playing, or undefined
10
+ * if this isn't yet known.
11
+ * @returns bufferingDuringPlay - whether UI should show as Buffering, or
12
+ * undefined if this isn't yet known.
13
+ */
14
+ export function useIsPlaying() {
15
+ const state = usePlaybackState().state;
16
+ const playWhenReady = usePlayWhenReady();
17
+
18
+ return determineIsPlaying(playWhenReady, state);
19
+ }
20
+
21
+ function determineIsPlaying(playWhenReady?: boolean, state?: State) {
22
+ if (playWhenReady === undefined || state === undefined) {
23
+ return { playing: undefined, bufferingDuringPlay: undefined };
24
+ }
25
+
26
+ const isLoading = state === State.Loading || state === State.Buffering;
27
+ const isErrored = state === State.Error;
28
+ const isEnded = state === State.Ended;
29
+ const isNone = state === State.None;
30
+
31
+ return {
32
+ playing: playWhenReady && !(isErrored || isEnded || isNone),
33
+ bufferingDuringPlay: playWhenReady && isLoading,
34
+ };
35
+ }
36
+
37
+ /**
38
+ * This exists if you need realtime status on whether the TrackPlayer is
39
+ * playing, whereas the hooks all have a delay because they depend on responding
40
+ * to events before their state is updated.
41
+ *
42
+ * It also exists whenever you need to know the play state outside of a React
43
+ * component, since hooks only work in components.
44
+ *
45
+ * @returns playing - whether UI should likely show as Playing, or undefined
46
+ * if this isn't yet known.
47
+ * @returns bufferingDuringPlay - whether UI should show as Buffering, or
48
+ * undefined if this isn't yet known.
49
+ */
50
+ export async function isPlaying() {
51
+ const [playbackState, playWhenReady] = await Promise.all([
52
+ TrackPlayer.getPlaybackState(),
53
+ TrackPlayer.getPlayWhenReady(),
54
+ ]);
55
+ return determineIsPlaying(playWhenReady, playbackState.state);
56
+ }
@@ -0,0 +1,37 @@
1
+ import { useState, useEffect } from 'react';
2
+
3
+ import { getPlayWhenReady, addEventListener } from '../trackPlayer';
4
+ import { Event } from '../constants';
5
+
6
+ export const usePlayWhenReady = () => {
7
+ const [playWhenReady, setPlayWhenReady] = useState<boolean | undefined>(
8
+ undefined
9
+ );
10
+ useEffect(() => {
11
+ let mounted = true;
12
+
13
+ getPlayWhenReady()
14
+ .then((initialState) => {
15
+ if (!mounted) return;
16
+ // Only set the state if it wasn't already set by the Event.PlaybackPlayWhenReadyChanged listener below:
17
+ setPlayWhenReady((state) => state ?? initialState);
18
+ })
19
+ .catch(() => {
20
+ /** getState only throw while you haven't yet setup, ignore failure. */
21
+ });
22
+
23
+ const sub = addEventListener(
24
+ Event.PlaybackPlayWhenReadyChanged,
25
+ (event) => {
26
+ setPlayWhenReady(event.playWhenReady);
27
+ }
28
+ );
29
+
30
+ return () => {
31
+ mounted = false;
32
+ sub.remove();
33
+ };
34
+ }, []);
35
+
36
+ return playWhenReady;
37
+ };
@@ -0,0 +1,45 @@
1
+ import { useEffect, useState } from 'react';
2
+
3
+ import { getPlaybackState, addEventListener } from '../trackPlayer';
4
+ import { Event } from '../constants';
5
+ import type { PlaybackState } from '../interfaces';
6
+
7
+ /**
8
+ * Get current playback state and subsequent updates.
9
+ *
10
+ * Note: While it is fetching the initial state from the native module, the
11
+ * returned state property will be `undefined`.
12
+ * */
13
+ export const usePlaybackState = (): PlaybackState | { state: undefined } => {
14
+ const [playbackState, setPlaybackState] = useState<
15
+ PlaybackState | { state: undefined }
16
+ >({
17
+ state: undefined,
18
+ });
19
+ useEffect(() => {
20
+ let mounted = true;
21
+
22
+ getPlaybackState()
23
+ .then((fetchedState) => {
24
+ if (!mounted) return;
25
+ // Only set the state if it wasn't already set by the Event.PlaybackState listener below:
26
+ setPlaybackState((currentState) =>
27
+ currentState.state ? currentState : fetchedState
28
+ );
29
+ })
30
+ .catch(() => {
31
+ /** getState only throw while you haven't yet setup, ignore failure. */
32
+ });
33
+
34
+ const sub = addEventListener(Event.PlaybackState, (state) => {
35
+ setPlaybackState(state);
36
+ });
37
+
38
+ return () => {
39
+ mounted = false;
40
+ sub.remove();
41
+ };
42
+ }, []);
43
+
44
+ return playbackState;
45
+ };
@@ -0,0 +1,64 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { AppState } from 'react-native';
3
+
4
+ import { getProgress } from '../trackPlayer';
5
+ import { Event } from '../constants';
6
+ import type { Progress } from '../interfaces';
7
+ import { useTrackPlayerEvents } from './useTrackPlayerEvents';
8
+
9
+ const INITIAL_STATE = {
10
+ position: 0,
11
+ duration: 0,
12
+ buffered: 0,
13
+ };
14
+
15
+ /**
16
+ * Poll for track progress for the given interval (in miliseconds)
17
+ * @param updateInterval - ms interval
18
+ * @param background - if update state in background. default true. may severely affects performance.
19
+ */
20
+ export function useProgress(updateInterval = 1000, background = true) {
21
+ const [state, setState] = useState<Progress>(INITIAL_STATE);
22
+
23
+ useTrackPlayerEvents([Event.PlaybackActiveTrackChanged], () => {
24
+ setState(INITIAL_STATE);
25
+ });
26
+
27
+ useEffect(() => {
28
+ let mounted = true;
29
+
30
+ const update = async () => {
31
+ try {
32
+ if (!mounted) return;
33
+ if (!background && AppState.currentState !== 'active') return;
34
+
35
+ const { position, duration, buffered } = await getProgress();
36
+ setState((state) =>
37
+ position === state.position &&
38
+ duration === state.duration &&
39
+ buffered === state.buffered
40
+ ? state
41
+ : { position, duration, buffered }
42
+ );
43
+ } catch {
44
+ // these method only throw while you haven't yet setup, ignore failure.
45
+ }
46
+ };
47
+
48
+ const poll = async () => {
49
+ await update();
50
+ if (!mounted) return;
51
+ await new Promise<void>((resolve) => setTimeout(resolve, updateInterval));
52
+ if (!mounted) return;
53
+ poll();
54
+ };
55
+
56
+ poll();
57
+
58
+ return () => {
59
+ mounted = false;
60
+ };
61
+ }, [updateInterval]);
62
+
63
+ return state;
64
+ }
@@ -0,0 +1,48 @@
1
+ import { useEffect, useRef } from 'react';
2
+
3
+ import { addEventListener } from '../trackPlayer';
4
+ import { Event } from '../constants';
5
+ import type { EventPayloadByEventWithType } from '../interfaces';
6
+
7
+ /**
8
+ * Attaches a handler to the given TrackPlayer events and performs cleanup on unmount
9
+ * @param events - TrackPlayer events to subscribe to
10
+ * @param handler - callback invoked when the event fires
11
+ */
12
+ export const useTrackPlayerEvents = <
13
+ T extends Event[],
14
+ H extends (data: EventPayloadByEventWithType[T[number]]) => void
15
+ >(
16
+ events: T,
17
+ handler: H
18
+ ) => {
19
+ const savedHandler = useRef(handler);
20
+ savedHandler.current = handler;
21
+
22
+ /* eslint-disable react-hooks/exhaustive-deps */
23
+ useEffect(() => {
24
+ if (__DEV__) {
25
+ const allowedTypes = Object.values(Event);
26
+ const invalidTypes = events.filter(
27
+ (type) => !allowedTypes.includes(type)
28
+ );
29
+ if (invalidTypes.length) {
30
+ console.warn(
31
+ 'One or more of the events provided to useTrackPlayerEvents is ' +
32
+ `not a valid TrackPlayer event: ${invalidTypes.join("', '")}. ` +
33
+ 'A list of available events can be found at ' +
34
+ 'https://rntp.dev/docs/api/events'
35
+ );
36
+ }
37
+ }
38
+
39
+ const subs = events.map((type) =>
40
+ addEventListener(type, (payload) => {
41
+ // @ts-expect-error - we know the type is correct
42
+ savedHandler.current({ ...payload, type });
43
+ })
44
+ );
45
+
46
+ return () => subs.forEach((sub) => sub.remove());
47
+ }, events);
48
+ };
package/src/index.ts ADDED
@@ -0,0 +1,8 @@
1
+ import * as TrackPlayer from './trackPlayer';
2
+
3
+ export * from './constants';
4
+ export * from './hooks';
5
+ export * from './interfaces';
6
+ export { VideoView } from './VideoView';
7
+
8
+ export default TrackPlayer;
@@ -0,0 +1,6 @@
1
+ import { MediaItem } from './MediaItem';
2
+
3
+ export interface AndroidAutoBrowseTree {
4
+ '/': MediaItem[];
5
+ [key: string]: MediaItem[];
6
+ }
@@ -0,0 +1,48 @@
1
+ import type { AppKilledPlaybackBehavior } from '../constants';
2
+
3
+ export interface AndroidOptions {
4
+ /**
5
+ * parses embedded artwork on local files to a dedicated png path.
6
+ * This is only necessary for certain MediaBrowsers, namely Android Auto to
7
+ * read embedded artwork.
8
+ * @default false
9
+ */
10
+
11
+ androidParseEmbeddedArtwork?: boolean;
12
+ /**
13
+ * Whether the audio playback notification is also removed when the playback
14
+ * stops. **If `stoppingAppPausesPlayback` is set to false, this will be
15
+ * ignored.**
16
+ */
17
+ appKilledPlaybackBehavior?: AppKilledPlaybackBehavior;
18
+
19
+ /**
20
+ * Whether the remote-duck event will be triggered on every interruption
21
+ */
22
+ alwaysPauseOnInterruption?: boolean;
23
+
24
+ /**
25
+ * Time in seconds to wait once the player should transition to not
26
+ * considering the service as in the foreground. If playback resumes within
27
+ * this grace period, the service remains in the foreground state.
28
+ * Defaults to 5 seconds.
29
+ */
30
+ stopForegroundGracePeriod?: number;
31
+
32
+ /**
33
+ * https://developer.android.com/media/media3/exoplayer/track-selection#audioOffload
34
+ */
35
+ audioOffload?: boolean;
36
+
37
+ /**
38
+ * enables exoplayer's skipSilence parser
39
+ * @default false
40
+ */
41
+ androidSkipSilence?: boolean;
42
+
43
+ /**
44
+ * enables exoplayer's shuffle mode
45
+ * @default false
46
+ */
47
+ shuffle?: boolean;
48
+ }
@@ -0,0 +1,6 @@
1
+ import type { ResourceObject } from './ResourceObject';
2
+
3
+ export interface CustomButtons {
4
+ customActionsList: string[];
5
+ [key: string]: string[] | ResourceObject;
6
+ }
@@ -0,0 +1,7 @@
1
+ export interface FeedbackOptions {
2
+ /** Marks wether the option should be marked as active or "done" */
3
+ isActive: boolean;
4
+
5
+ /** The title to give the action (relevant for iOS) */
6
+ title: string;
7
+ }
@@ -0,0 +1,19 @@
1
+ import type { ResourceObject } from './ResourceObject';
2
+ import { MediaItemPlayable } from '../constants';
3
+
4
+ export interface MediaItem {
5
+ mediaId: string;
6
+ title: string;
7
+ subtitle?: string;
8
+ /**mediaUri doesn't seem to work. use Event.RemotePlayId to handle playback instead. */
9
+ mediaUri?: string | ResourceObject;
10
+ iconUri?: string | ResourceObject;
11
+ /** playable has 2 states: 1 as browsable, or any other as playable. */
12
+ playable: MediaItemPlayable.MediaBrowsable | string;
13
+ groupTitle?: string;
14
+ contentStyle?: string;
15
+ childrenPlayableContentStyle?: string;
16
+ childrenBrowsableContentStyle?: string;
17
+ /** playbackProgress should contain a string representation of a number between 0 and 1 if present */
18
+ playbackProgress?: string;
19
+ }
@@ -0,0 +1,4 @@
1
+ import type { UpdateOptions } from './UpdateOptions';
2
+
3
+ /** @deprecated use UpdateOptions instead */
4
+ export type MetadataOptions = UpdateOptions;
@@ -0,0 +1,5 @@
1
+ import type { TrackMetadataBase } from './TrackMetadataBase';
2
+
3
+ export interface NowPlayingMetadata extends TrackMetadataBase {
4
+ elapsedTime?: number;
5
+ }
@@ -0,0 +1,11 @@
1
+ import { State } from '../constants';
2
+ import type { PlaybackErrorEvent } from './events';
3
+
4
+ export type PlaybackState =
5
+ | {
6
+ state: Exclude<State, State.Error>;
7
+ }
8
+ | {
9
+ state: State.Error;
10
+ error: PlaybackErrorEvent;
11
+ };