react-native-mp3-player 1.0.0

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 (328) hide show
  1. package/LICENSE +205 -0
  2. package/README.md +88 -0
  3. package/android/build.gradle +114 -0
  4. package/android/proguard-rules.txt +0 -0
  5. package/android/src/main/AndroidManifest.xml +27 -0
  6. package/android/src/main/java/com/doublesymmetry/trackplayer/HeadlessJsMediaService.kt +199 -0
  7. package/android/src/main/java/com/doublesymmetry/trackplayer/TrackPlayer.kt +30 -0
  8. package/android/src/main/java/com/doublesymmetry/trackplayer/extensions/AudioPlayerStateExt.kt +19 -0
  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/doublesymmetry/trackplayer/model/MetadataAdapter.kt +227 -0
  12. package/android/src/main/java/com/doublesymmetry/trackplayer/model/NowPlayingMetadata.kt +16 -0
  13. package/android/src/main/java/com/doublesymmetry/trackplayer/model/PlaybackMetadata.kt +203 -0
  14. package/android/src/main/java/com/doublesymmetry/trackplayer/model/State.kt +13 -0
  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/doublesymmetry/trackplayer/module/MusicEvents.kt +65 -0
  19. package/android/src/main/java/com/doublesymmetry/trackplayer/module/MusicModule.kt +775 -0
  20. package/android/src/main/java/com/doublesymmetry/trackplayer/service/MusicService.kt +1251 -0
  21. package/android/src/main/java/com/doublesymmetry/trackplayer/utils/AppForegroundTracker.kt +35 -0
  22. package/android/src/main/java/com/doublesymmetry/trackplayer/utils/BundleUtils.kt +147 -0
  23. package/android/src/main/java/com/doublesymmetry/trackplayer/utils/CoilBitmapLoader.kt +64 -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/lovegaoshi/kotlinaudio/event/EventHolder.kt +30 -0
  27. package/android/src/main/java/com/lovegaoshi/kotlinaudio/event/PlayerEventHolder.kt +124 -0
  28. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/AudioContentType.kt +10 -0
  29. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/AudioItem.kt +133 -0
  30. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/AudioItemTransitionReason.kt +33 -0
  31. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/AudioPlayerState.kt +30 -0
  32. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/BufferConfig.kt +8 -0
  33. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/CacheConfig.kt +17 -0
  34. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/Capability.kt +19 -0
  35. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/CustomButton.kt +19 -0
  36. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/FocusChangeData.kt +3 -0
  37. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/MediaSessionCallback.kt +17 -0
  38. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PlayWhenReadyChangeData.kt +3 -0
  39. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PlaybackEndedReason.kt +5 -0
  40. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PlaybackError.kt +6 -0
  41. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PlayerConfig.kt +36 -0
  42. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PlayerOptions.kt +39 -0
  43. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PositionChangedReason.kt +39 -0
  44. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/RepeatMode.kt +16 -0
  45. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/WakeMode.kt +7 -0
  46. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/AudioPlayer.kt +689 -0
  47. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/ForwardingPlayer.java +1124 -0
  48. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/QueuedAudioPlayer.kt +295 -0
  49. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/Buffer.kt +34 -0
  50. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/Cache.kt +47 -0
  51. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/FocusManager.kt +59 -0
  52. package/android/src/main/java/com/lovegaoshi/kotlinaudio/player/components/MediaFactory.kt +165 -0
  53. package/android/src/main/java/com/lovegaoshi/kotlinaudio/service/MusicService.kt +127 -0
  54. package/android/src/main/java/com/lovegaoshi/kotlinaudio/utils/Utils.kt +113 -0
  55. package/android/src/main/res/drawable/baseline_repeat_24.xml +5 -0
  56. package/android/src/main/res/drawable/baseline_repeat_one_24.xml +5 -0
  57. package/android/src/main/res/drawable/forward.xml +5 -0
  58. package/android/src/main/res/drawable/heart_24px.xml +5 -0
  59. package/android/src/main/res/drawable/hearte_24px.xml +5 -0
  60. package/android/src/main/res/drawable/ifl_24px.xml +5 -0
  61. package/android/src/main/res/drawable/rewind.xml +5 -0
  62. package/android/src/main/res/drawable/shuffle_24px.xml +5 -0
  63. package/android/src/main/res/values/strings.xml +5 -0
  64. package/android/src/main/res/xml/automotive_app_desc.xml +3 -0
  65. package/ios/Example/SwiftAudio/Assets.xcassets/22AMI.imageset/22AMillion.jpg +0 -0
  66. package/ios/Example/SwiftAudio/Assets.xcassets/22AMI.imageset/Contents.json +21 -0
  67. package/ios/Example/SwiftAudio/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  68. package/ios/Example/SwiftAudio/Assets.xcassets/AppIcon.appiconset/Contents.json +58 -0
  69. package/ios/Example/SwiftAudio/Assets.xcassets/Contents.json +6 -0
  70. package/ios/Example/SwiftAudio/Assets.xcassets/cover.imageset/Contents.json +21 -0
  71. package/ios/Example/SwiftAudio/Assets.xcassets/cover.imageset/cover.jpg +0 -0
  72. package/ios/Example/SwiftAudio/AudioController.swift +46 -0
  73. package/ios/Example/SwiftAudio/Extensions.swift +22 -0
  74. package/ios/Example/SwiftAudio/PlayerView.swift +172 -0
  75. package/ios/Example/SwiftAudio/PlayerViewModel.swift +120 -0
  76. package/ios/Example/SwiftAudio/Preview Content/Preview Assets.xcassets/Contents.json +6 -0
  77. package/ios/Example/SwiftAudio/QueueView.swift +65 -0
  78. package/ios/Example/SwiftAudio/SwiftAudio.entitlements +12 -0
  79. package/ios/Example/SwiftAudio/SwiftAudioApp.swift +17 -0
  80. package/ios/Example/SwiftAudio.xcodeproj/project.pbxproj +412 -0
  81. package/ios/Example/SwiftAudio.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  82. package/ios/Example/SwiftAudio.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  83. package/ios/RNTrackPlayer/Models/Capabilities.swift +52 -0
  84. package/ios/RNTrackPlayer/Models/MediaURL.swift +38 -0
  85. package/ios/RNTrackPlayer/Models/MetadataAdapter.swift +147 -0
  86. package/ios/RNTrackPlayer/Models/PitchAlgorithms.swift +13 -0
  87. package/ios/RNTrackPlayer/Models/SessionCategories.swift +106 -0
  88. package/ios/RNTrackPlayer/Models/State.swift +26 -0
  89. package/ios/RNTrackPlayer/Models/Track.swift +140 -0
  90. package/ios/RNTrackPlayer/RNTrackPlayer.swift +941 -0
  91. package/ios/RNTrackPlayer/Support/RNTrackPlayer-Bridging-Header.h +7 -0
  92. package/ios/RNTrackPlayer/TrackPlayer.h +14 -0
  93. package/ios/RNTrackPlayer/TrackPlayer.mm +246 -0
  94. package/ios/RNTrackPlayer/Utils/EventType.swift +44 -0
  95. package/ios/RNTrackPlayer/Utils/Metadata.swift +60 -0
  96. package/ios/SwiftAudioEx/Package.swift +20 -0
  97. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AVPlayerWrapper/AVPlayerWrapper.swift +521 -0
  98. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AVPlayerWrapper/AVPlayerWrapperDelegate.swift +27 -0
  99. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AVPlayerWrapper/AVPlayerWrapperProtocol.swift +69 -0
  100. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AVPlayerWrapper/AVPlayerWrapperState.swift +43 -0
  101. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioItem.swift +158 -0
  102. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioPlayer.swift +459 -0
  103. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioPlayerError.swift +26 -0
  104. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioSessionController/AudioSession.swift +33 -0
  105. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioSessionController/AudioSessionController.swift +135 -0
  106. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/AudioTap.swift +99 -0
  107. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Event.swift +155 -0
  108. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/MediaItemProperty.swift +95 -0
  109. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoCenter.swift +17 -0
  110. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoController.swift +73 -0
  111. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoControllerProtocol.swift +26 -0
  112. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoKeyValue.swift +14 -0
  113. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/NowPlayingInfoController/NowPlayingInfoProperty.swift +234 -0
  114. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Observer/AVPlayerItemNotificationObserver.swift +102 -0
  115. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Observer/AVPlayerItemObserver.swift +136 -0
  116. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Observer/AVPlayerObserver.swift +120 -0
  117. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Observer/AVPlayerTimeObserver.swift +112 -0
  118. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/QueueManager.swift +356 -0
  119. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/QueuedAudioPlayer.swift +236 -0
  120. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/RemoteCommandController/RemoteCommand.swift +170 -0
  121. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/RemoteCommandController/RemoteCommandController.swift +206 -0
  122. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/RepeatMode.swift +15 -0
  123. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/TimeEventFrequency.swift +26 -0
  124. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/Utils/DispatchQueueType.swift +18 -0
  125. package/ios/SwiftAudioEx/Sources/SwiftAudioEx/WaveformAudioTap.swift +159 -0
  126. package/lib/specs/NativeTrackPlayer.d.ts +129 -0
  127. package/lib/specs/NativeTrackPlayer.js +4 -0
  128. package/lib/src/constants/AndroidAudioContentType.d.ts +35 -0
  129. package/lib/src/constants/AndroidAudioContentType.js +36 -0
  130. package/lib/src/constants/AndroidAutoContentStyle.d.ts +10 -0
  131. package/lib/src/constants/AndroidAutoContentStyle.js +11 -0
  132. package/lib/src/constants/AppKilledPlaybackBehavior.d.ts +17 -0
  133. package/lib/src/constants/AppKilledPlaybackBehavior.js +18 -0
  134. package/lib/src/constants/Capability.d.ts +17 -0
  135. package/lib/src/constants/Capability.js +19 -0
  136. package/lib/src/constants/Event.d.ts +163 -0
  137. package/lib/src/constants/Event.js +164 -0
  138. package/lib/src/constants/IOSCategory.d.ts +36 -0
  139. package/lib/src/constants/IOSCategory.js +37 -0
  140. package/lib/src/constants/IOSCategoryMode.d.ts +47 -0
  141. package/lib/src/constants/IOSCategoryMode.js +48 -0
  142. package/lib/src/constants/IOSCategoryOptions.d.ts +44 -0
  143. package/lib/src/constants/IOSCategoryOptions.js +45 -0
  144. package/lib/src/constants/MediaItemPlayable.d.ts +4 -0
  145. package/lib/src/constants/MediaItemPlayable.js +5 -0
  146. package/lib/src/constants/PitchAlgorithm.d.ts +14 -0
  147. package/lib/src/constants/PitchAlgorithm.js +16 -0
  148. package/lib/src/constants/RatingType.d.ts +8 -0
  149. package/lib/src/constants/RatingType.js +10 -0
  150. package/lib/src/constants/RepeatMode.d.ts +8 -0
  151. package/lib/src/constants/RepeatMode.js +10 -0
  152. package/lib/src/constants/State.d.ts +34 -0
  153. package/lib/src/constants/State.js +35 -0
  154. package/lib/src/constants/TrackType.d.ts +6 -0
  155. package/lib/src/constants/TrackType.js +7 -0
  156. package/lib/src/constants/index.d.ts +14 -0
  157. package/lib/src/constants/index.js +14 -0
  158. package/lib/src/hooks/index.d.ts +6 -0
  159. package/lib/src/hooks/index.js +6 -0
  160. package/lib/src/hooks/useActiveTrack.d.ts +2 -0
  161. package/lib/src/hooks/useActiveTrack.js +28 -0
  162. package/lib/src/hooks/useAppIsInBackground.d.ts +1 -0
  163. package/lib/src/hooks/useAppIsInBackground.js +16 -0
  164. package/lib/src/hooks/useIsPlaying.d.ts +35 -0
  165. package/lib/src/hooks/useIsPlaying.js +50 -0
  166. package/lib/src/hooks/usePlayWhenReady.d.ts +1 -0
  167. package/lib/src/hooks/usePlayWhenReady.js +27 -0
  168. package/lib/src/hooks/usePlaybackState.d.ts +10 -0
  169. package/lib/src/hooks/usePlaybackState.js +35 -0
  170. package/lib/src/hooks/useProgress.d.ts +7 -0
  171. package/lib/src/hooks/useProgress.js +55 -0
  172. package/lib/src/hooks/useTrackPlayerEvents.d.ts +8 -0
  173. package/lib/src/hooks/useTrackPlayerEvents.js +30 -0
  174. package/lib/src/index.d.ts +5 -0
  175. package/lib/src/index.js +5 -0
  176. package/lib/src/interfaces/AndroidAutoBrowseTree.d.ts +5 -0
  177. package/lib/src/interfaces/AndroidAutoBrowseTree.js +1 -0
  178. package/lib/src/interfaces/AndroidOptions.d.ts +41 -0
  179. package/lib/src/interfaces/AndroidOptions.js +1 -0
  180. package/lib/src/interfaces/CustomButtons.d.ts +5 -0
  181. package/lib/src/interfaces/CustomButtons.js +1 -0
  182. package/lib/src/interfaces/FeedbackOptions.d.ts +6 -0
  183. package/lib/src/interfaces/FeedbackOptions.js +1 -0
  184. package/lib/src/interfaces/MediaItem.d.ts +18 -0
  185. package/lib/src/interfaces/MediaItem.js +1 -0
  186. package/lib/src/interfaces/MetadataOptions.d.ts +3 -0
  187. package/lib/src/interfaces/MetadataOptions.js +1 -0
  188. package/lib/src/interfaces/NowPlayingMetadata.d.ts +4 -0
  189. package/lib/src/interfaces/NowPlayingMetadata.js +1 -0
  190. package/lib/src/interfaces/PlaybackState.d.ts +8 -0
  191. package/lib/src/interfaces/PlaybackState.js +1 -0
  192. package/lib/src/interfaces/PlayerOptions.d.ts +127 -0
  193. package/lib/src/interfaces/PlayerOptions.js +1 -0
  194. package/lib/src/interfaces/Progress.d.ts +15 -0
  195. package/lib/src/interfaces/Progress.js +1 -0
  196. package/lib/src/interfaces/ResourceObject.d.ts +1 -0
  197. package/lib/src/interfaces/ResourceObject.js +1 -0
  198. package/lib/src/interfaces/ServiceHandler.d.ts +1 -0
  199. package/lib/src/interfaces/ServiceHandler.js +1 -0
  200. package/lib/src/interfaces/Track.d.ts +21 -0
  201. package/lib/src/interfaces/Track.js +1 -0
  202. package/lib/src/interfaces/TrackMetadataBase.d.ts +28 -0
  203. package/lib/src/interfaces/TrackMetadataBase.js +1 -0
  204. package/lib/src/interfaces/UpdateOptions.d.ts +52 -0
  205. package/lib/src/interfaces/UpdateOptions.js +1 -0
  206. package/lib/src/interfaces/events/AudioMetadataReceivedEvent.d.ts +33 -0
  207. package/lib/src/interfaces/events/AudioMetadataReceivedEvent.js +1 -0
  208. package/lib/src/interfaces/events/ControllerConnectedEvent.d.ts +8 -0
  209. package/lib/src/interfaces/events/ControllerConnectedEvent.js +1 -0
  210. package/lib/src/interfaces/events/EventPayloadByEvent.d.ts +73 -0
  211. package/lib/src/interfaces/events/EventPayloadByEvent.js +1 -0
  212. package/lib/src/interfaces/events/PlaybackActiveTrackChangedEvent.d.ts +24 -0
  213. package/lib/src/interfaces/events/PlaybackActiveTrackChangedEvent.js +1 -0
  214. package/lib/src/interfaces/events/PlaybackAnimatedVolumeChangedEvent.d.ts +4 -0
  215. package/lib/src/interfaces/events/PlaybackAnimatedVolumeChangedEvent.js +1 -0
  216. package/lib/src/interfaces/events/PlaybackErrorEvent.d.ts +6 -0
  217. package/lib/src/interfaces/events/PlaybackErrorEvent.js +1 -0
  218. package/lib/src/interfaces/events/PlaybackMetadataReceivedEvent.d.ts +16 -0
  219. package/lib/src/interfaces/events/PlaybackMetadataReceivedEvent.js +1 -0
  220. package/lib/src/interfaces/events/PlaybackPlayWhenReadyChangedEvent.d.ts +4 -0
  221. package/lib/src/interfaces/events/PlaybackPlayWhenReadyChangedEvent.js +1 -0
  222. package/lib/src/interfaces/events/PlaybackProgressUpdatedEvent.d.ts +4 -0
  223. package/lib/src/interfaces/events/PlaybackProgressUpdatedEvent.js +1 -0
  224. package/lib/src/interfaces/events/PlaybackQueueEndedEvent.d.ts +9 -0
  225. package/lib/src/interfaces/events/PlaybackQueueEndedEvent.js +1 -0
  226. package/lib/src/interfaces/events/PlaybackResumeEvent.d.ts +3 -0
  227. package/lib/src/interfaces/events/PlaybackResumeEvent.js +1 -0
  228. package/lib/src/interfaces/events/PlaybackTrackChangedEvent.d.ts +11 -0
  229. package/lib/src/interfaces/events/PlaybackTrackChangedEvent.js +1 -0
  230. package/lib/src/interfaces/events/PlayerErrorEvent.d.ts +6 -0
  231. package/lib/src/interfaces/events/PlayerErrorEvent.js +1 -0
  232. package/lib/src/interfaces/events/RemoteBrowseEvent.d.ts +4 -0
  233. package/lib/src/interfaces/events/RemoteBrowseEvent.js +1 -0
  234. package/lib/src/interfaces/events/RemoteCustomActionEvent.d.ts +7 -0
  235. package/lib/src/interfaces/events/RemoteCustomActionEvent.js +1 -0
  236. package/lib/src/interfaces/events/RemoteDuckEvent.d.ts +13 -0
  237. package/lib/src/interfaces/events/RemoteDuckEvent.js +1 -0
  238. package/lib/src/interfaces/events/RemoteJumpBackwardEvent.d.ts +8 -0
  239. package/lib/src/interfaces/events/RemoteJumpBackwardEvent.js +1 -0
  240. package/lib/src/interfaces/events/RemoteJumpForwardEvent.d.ts +8 -0
  241. package/lib/src/interfaces/events/RemoteJumpForwardEvent.js +1 -0
  242. package/lib/src/interfaces/events/RemotePlayIdEvent.d.ts +4 -0
  243. package/lib/src/interfaces/events/RemotePlayIdEvent.js +1 -0
  244. package/lib/src/interfaces/events/RemotePlaySearchEvent.d.ts +9 -0
  245. package/lib/src/interfaces/events/RemotePlaySearchEvent.js +1 -0
  246. package/lib/src/interfaces/events/RemoteSeekEvent.d.ts +4 -0
  247. package/lib/src/interfaces/events/RemoteSeekEvent.js +1 -0
  248. package/lib/src/interfaces/events/RemoteSetRatingEvent.d.ts +4 -0
  249. package/lib/src/interfaces/events/RemoteSetRatingEvent.js +1 -0
  250. package/lib/src/interfaces/events/RemoteSkipEvent.d.ts +3 -0
  251. package/lib/src/interfaces/events/RemoteSkipEvent.js +1 -0
  252. package/lib/src/interfaces/events/index.d.ts +18 -0
  253. package/lib/src/interfaces/events/index.js +18 -0
  254. package/lib/src/interfaces/index.d.ts +15 -0
  255. package/lib/src/interfaces/index.js +15 -0
  256. package/lib/src/resolveAssetSource.d.ts +2 -0
  257. package/lib/src/resolveAssetSource.js +3 -0
  258. package/lib/src/trackPlayer.d.ts +347 -0
  259. package/lib/src/trackPlayer.js +592 -0
  260. package/package.json +94 -0
  261. package/react-native-mp3-player.podspec +22 -0
  262. package/specs/NativeTrackPlayer.ts +148 -0
  263. package/src/constants/AndroidAudioContentType.ts +35 -0
  264. package/src/constants/AndroidAutoContentStyle.ts +10 -0
  265. package/src/constants/AppKilledPlaybackBehavior.ts +19 -0
  266. package/src/constants/Capability.ts +19 -0
  267. package/src/constants/Event.ts +164 -0
  268. package/src/constants/IOSCategory.ts +36 -0
  269. package/src/constants/IOSCategoryMode.ts +47 -0
  270. package/src/constants/IOSCategoryOptions.ts +44 -0
  271. package/src/constants/MediaItemPlayable.ts +4 -0
  272. package/src/constants/PitchAlgorithm.ts +16 -0
  273. package/src/constants/RatingType.ts +10 -0
  274. package/src/constants/RepeatMode.ts +10 -0
  275. package/src/constants/State.ts +34 -0
  276. package/src/constants/TrackType.ts +6 -0
  277. package/src/constants/index.ts +14 -0
  278. package/src/hooks/index.ts +6 -0
  279. package/src/hooks/useActiveTrack.ts +36 -0
  280. package/src/hooks/useAppIsInBackground.ts +20 -0
  281. package/src/hooks/useIsPlaying.ts +56 -0
  282. package/src/hooks/usePlayWhenReady.ts +37 -0
  283. package/src/hooks/usePlaybackState.ts +45 -0
  284. package/src/hooks/useProgress.ts +64 -0
  285. package/src/hooks/useTrackPlayerEvents.ts +48 -0
  286. package/src/index.ts +7 -0
  287. package/src/interfaces/AndroidAutoBrowseTree.ts +6 -0
  288. package/src/interfaces/AndroidOptions.ts +48 -0
  289. package/src/interfaces/CustomButtons.ts +6 -0
  290. package/src/interfaces/FeedbackOptions.ts +7 -0
  291. package/src/interfaces/MediaItem.ts +19 -0
  292. package/src/interfaces/MetadataOptions.ts +4 -0
  293. package/src/interfaces/NowPlayingMetadata.ts +5 -0
  294. package/src/interfaces/PlaybackState.ts +11 -0
  295. package/src/interfaces/PlayerOptions.ts +133 -0
  296. package/src/interfaces/Progress.ts +15 -0
  297. package/src/interfaces/ResourceObject.ts +1 -0
  298. package/src/interfaces/ServiceHandler.ts +1 -0
  299. package/src/interfaces/Track.ts +23 -0
  300. package/src/interfaces/TrackMetadataBase.ts +29 -0
  301. package/src/interfaces/UpdateOptions.ts +59 -0
  302. package/src/interfaces/events/AudioMetadataReceivedEvent.ts +37 -0
  303. package/src/interfaces/events/ControllerConnectedEvent.ts +9 -0
  304. package/src/interfaces/events/EventPayloadByEvent.ts +76 -0
  305. package/src/interfaces/events/PlaybackActiveTrackChangedEvent.ts +29 -0
  306. package/src/interfaces/events/PlaybackAnimatedVolumeChangedEvent.ts +4 -0
  307. package/src/interfaces/events/PlaybackErrorEvent.ts +6 -0
  308. package/src/interfaces/events/PlaybackMetadataReceivedEvent.ts +16 -0
  309. package/src/interfaces/events/PlaybackPlayWhenReadyChangedEvent.ts +4 -0
  310. package/src/interfaces/events/PlaybackProgressUpdatedEvent.ts +5 -0
  311. package/src/interfaces/events/PlaybackQueueEndedEvent.ts +9 -0
  312. package/src/interfaces/events/PlaybackResumeEvent.ts +5 -0
  313. package/src/interfaces/events/PlaybackTrackChangedEvent.ts +11 -0
  314. package/src/interfaces/events/PlayerErrorEvent.ts +6 -0
  315. package/src/interfaces/events/RemoteBrowseEvent.ts +4 -0
  316. package/src/interfaces/events/RemoteCustomActionEvent.ts +7 -0
  317. package/src/interfaces/events/RemoteDuckEvent.ts +13 -0
  318. package/src/interfaces/events/RemoteJumpBackwardEvent.ts +8 -0
  319. package/src/interfaces/events/RemoteJumpForwardEvent.ts +8 -0
  320. package/src/interfaces/events/RemotePlayIdEvent.ts +4 -0
  321. package/src/interfaces/events/RemotePlaySearchEvent.ts +21 -0
  322. package/src/interfaces/events/RemoteSeekEvent.ts +4 -0
  323. package/src/interfaces/events/RemoteSetRatingEvent.ts +5 -0
  324. package/src/interfaces/events/RemoteSkipEvent.ts +3 -0
  325. package/src/interfaces/events/index.ts +18 -0
  326. package/src/interfaces/index.ts +15 -0
  327. package/src/resolveAssetSource.ts +3 -0
  328. package/src/trackPlayer.ts +768 -0
@@ -0,0 +1,59 @@
1
+ import type { AndroidOptions } from './AndroidOptions';
2
+ import type { FeedbackOptions } from './FeedbackOptions';
3
+ import type { ResourceObject } from './ResourceObject';
4
+ import type { RatingType, Capability } from '../constants';
5
+ import { CustomButtons } from './CustomButtons';
6
+
7
+ export interface UpdateOptions {
8
+ android?: AndroidOptions;
9
+ ratingType?: RatingType;
10
+ forwardJumpInterval?: number;
11
+ backwardJumpInterval?: number;
12
+ progressUpdateEventInterval?: number; // in seconds
13
+
14
+ // ios
15
+ likeOptions?: FeedbackOptions;
16
+ dislikeOptions?: FeedbackOptions;
17
+ bookmarkOptions?: FeedbackOptions;
18
+
19
+ capabilities?: Capability[];
20
+
21
+ // android
22
+ /**
23
+ * @deprecated Use `android` options and `appKilledPlaybackMode` instead.
24
+ * @example
25
+ * ```
26
+ * await TrackPlayer.updateOptions({
27
+ * android: {
28
+ * appKilledPlaybackMode: AppKilledPlaybackMode.PausePlayback
29
+ * },
30
+ * });
31
+ * ```
32
+ */
33
+ stoppingAppPausesPlayback?: boolean;
34
+ /**
35
+ * @deprecated use `TrackPlayer.updateOptions({ android: { alwaysPauseOnInterruption: boolean }})` instead
36
+ */
37
+ alwaysPauseOnInterruption?: boolean;
38
+ notificationCapabilities?: Capability[];
39
+ compactCapabilities?: Capability[];
40
+
41
+ icon?: ResourceObject;
42
+ playIcon?: ResourceObject;
43
+ pauseIcon?: ResourceObject;
44
+ stopIcon?: ResourceObject;
45
+ previousIcon?: ResourceObject;
46
+ nextIcon?: ResourceObject;
47
+ rewindIcon?: ResourceObject;
48
+ forwardIcon?: ResourceObject;
49
+ color?: number;
50
+ /**
51
+ * Android Only. Specifies custom Actions using the key customActionsList as a list of strings,
52
+ * then specify the imported icons for the actions to keys for each action.
53
+ * This is useful for android auto, as any extra buttons (when total > 5, > 4 extra buttons) will show up in a menu.
54
+ * please note customActions will always show in the notification bar, because there is no other way
55
+ * they will be called.
56
+ * isCompat is always false unless there is a need to show them.
57
+ */
58
+ customActions?: CustomButtons;
59
+ }
@@ -0,0 +1,37 @@
1
+ export interface AudioMetadataReceivedEvent {
2
+ metadata: AudioMetadata[];
3
+ }
4
+
5
+ export interface AudioCommonMetadataReceivedEvent {
6
+ metadata: AudioCommonMetadata;
7
+ }
8
+
9
+ export interface AudioCommonMetadata {
10
+ title: string | undefined;
11
+ artist: string | undefined;
12
+ albumTitle: string | undefined;
13
+ subtitle: string | undefined;
14
+ description: string | undefined;
15
+ artworkUri: string | undefined;
16
+ trackNumber: string | undefined;
17
+ composer: string | undefined;
18
+ conductor: string | undefined;
19
+ genre: string | undefined;
20
+ compilation: string | undefined;
21
+ station: string | undefined;
22
+ mediaType: string | undefined;
23
+ creationDate: string | undefined;
24
+ creationYear: string | undefined;
25
+ }
26
+
27
+ export interface AudioMetadata extends AudioCommonMetadata {
28
+ raw: RawEntry[];
29
+ }
30
+
31
+ export interface RawEntry {
32
+ commonKey: string | undefined;
33
+ keySpace: string | undefined;
34
+ time: number | undefined;
35
+ value: unknown | null;
36
+ key: string;
37
+ }
@@ -0,0 +1,9 @@
1
+ export interface ControllerConnectedEvent extends ControllerDisconnectedEvent {
2
+ isMediaNotificationController: boolean;
3
+ isAutomotiveController: boolean;
4
+ isAutoCompanionController: boolean;
5
+ }
6
+
7
+ export interface ControllerDisconnectedEvent {
8
+ package: string;
9
+ }
@@ -0,0 +1,76 @@
1
+ import { Event } from '../../constants';
2
+
3
+ import type { PlaybackState } from '../PlaybackState';
4
+ import type { PlaybackActiveTrackChangedEvent } from './PlaybackActiveTrackChangedEvent';
5
+ import type { PlaybackErrorEvent } from './PlaybackErrorEvent';
6
+ import type { PlaybackMetadataReceivedEvent } from './PlaybackMetadataReceivedEvent';
7
+ import type { AudioMetadataReceivedEvent } from './AudioMetadataReceivedEvent';
8
+ import type { AudioCommonMetadataReceivedEvent } from './AudioMetadataReceivedEvent';
9
+ import type { PlaybackPlayWhenReadyChangedEvent } from './PlaybackPlayWhenReadyChangedEvent';
10
+ import type { PlaybackProgressUpdatedEvent } from './PlaybackProgressUpdatedEvent';
11
+ import type { PlaybackQueueEndedEvent } from './PlaybackQueueEndedEvent';
12
+ import type { PlaybackTrackChangedEvent } from './PlaybackTrackChangedEvent';
13
+ import { PlayerErrorEvent } from './PlayerErrorEvent';
14
+ import type { RemoteDuckEvent } from './RemoteDuckEvent';
15
+ import type { RemoteJumpBackwardEvent } from './RemoteJumpBackwardEvent';
16
+ import type { RemoteJumpForwardEvent } from './RemoteJumpForwardEvent';
17
+ import type { RemotePlayIdEvent } from './RemotePlayIdEvent';
18
+ import type { RemotePlaySearchEvent } from './RemotePlaySearchEvent';
19
+ import type { RemoteSeekEvent } from './RemoteSeekEvent';
20
+ import type { RemoteSetRatingEvent } from './RemoteSetRatingEvent';
21
+ import type { RemoteSkipEvent } from './RemoteSkipEvent';
22
+ import type { PlaybackAnimatedVolumeChangedEvent } from './PlaybackAnimatedVolumeChangedEvent';
23
+ import type { RemoteBrowseEvent } from './RemoteBrowseEvent';
24
+ import type { RemoteCustomActionEvent } from './RemoteCustomActionEvent';
25
+ import type { PlaybackResumeEvent } from './PlaybackResumeEvent';
26
+ import type {
27
+ ControllerConnectedEvent,
28
+ ControllerDisconnectedEvent,
29
+ } from './ControllerConnectedEvent';
30
+
31
+ export type EventPayloadByEvent = {
32
+ [Event.PlayerError]: PlayerErrorEvent;
33
+ [Event.PlaybackState]: PlaybackState;
34
+ [Event.PlaybackError]: PlaybackErrorEvent;
35
+ [Event.PlaybackQueueEnded]: PlaybackQueueEndedEvent;
36
+ [Event.PlaybackTrackChanged]: PlaybackTrackChangedEvent;
37
+ [Event.PlaybackActiveTrackChanged]: PlaybackActiveTrackChangedEvent;
38
+ [Event.PlaybackMetadataReceived]: PlaybackMetadataReceivedEvent;
39
+ [Event.PlaybackPlayWhenReadyChanged]: PlaybackPlayWhenReadyChangedEvent;
40
+ [Event.PlaybackProgressUpdated]: PlaybackProgressUpdatedEvent;
41
+ [Event.RemotePlay]: never;
42
+ [Event.RemotePlayPause]: never;
43
+ [Event.RemotePlayId]: RemotePlayIdEvent;
44
+ [Event.RemotePlaySearch]: RemotePlaySearchEvent;
45
+ [Event.RemotePause]: never;
46
+ [Event.RemoteStop]: never;
47
+ [Event.RemoteSkip]: RemoteSkipEvent;
48
+ [Event.RemoteNext]: never;
49
+ [Event.RemotePrevious]: never;
50
+ [Event.RemoteJumpForward]: RemoteJumpForwardEvent | null;
51
+ [Event.RemoteJumpBackward]: RemoteJumpBackwardEvent | null;
52
+ [Event.RemoteSeek]: RemoteSeekEvent;
53
+ [Event.RemoteSetRating]: RemoteSetRatingEvent;
54
+ [Event.RemoteDuck]: RemoteDuckEvent;
55
+ [Event.RemoteLike]: never;
56
+ [Event.RemoteDislike]: never;
57
+ [Event.RemoteBookmark]: never;
58
+ [Event.PlaybackAnimatedVolumeChanged]: PlaybackAnimatedVolumeChangedEvent;
59
+ [Event.RemoteBrowse]: RemoteBrowseEvent;
60
+ [Event.PlaybackResume]: PlaybackResumeEvent;
61
+ [Event.RemoteCustomAction]: RemoteCustomActionEvent;
62
+ [Event.MetadataChapterReceived]: AudioMetadataReceivedEvent;
63
+ [Event.MetadataTimedReceived]: AudioMetadataReceivedEvent;
64
+ [Event.MetadataCommonReceived]: AudioCommonMetadataReceivedEvent;
65
+ [Event.connectorConnected]: ControllerConnectedEvent;
66
+ [Event.connectorDisconnected]: ControllerDisconnectedEvent;
67
+ };
68
+
69
+ // eslint-disable-next-line
70
+ type Simplify<T> = { [KeyType in keyof T]: T[KeyType] } & {};
71
+
72
+ export type EventPayloadByEventWithType = {
73
+ [K in keyof EventPayloadByEvent]: EventPayloadByEvent[K] extends never
74
+ ? { type: K }
75
+ : Simplify<EventPayloadByEvent[K] & { type: K }>;
76
+ };
@@ -0,0 +1,29 @@
1
+ import type { Track } from '../Track';
2
+
3
+ export interface PlaybackActiveTrackChangedEvent {
4
+ /** The index of previously active track. */
5
+ lastIndex?: number;
6
+
7
+ /**
8
+ * The previously active track or `undefined` when there wasn't a previously
9
+ * active track.
10
+ */
11
+ lastTrack?: Track;
12
+
13
+ /**
14
+ * The position of the previously active track in seconds.
15
+ */
16
+ lastPosition: number;
17
+
18
+ /**
19
+ * The newly active track index or `undefined` if there is no longer an
20
+ * active track.
21
+ */
22
+ index?: number;
23
+
24
+ /**
25
+ * The newly active track or `undefined` if there is no longer an
26
+ * active track.
27
+ */
28
+ track?: Track;
29
+ }
@@ -0,0 +1,4 @@
1
+ export interface PlaybackAnimatedVolumeChangedEvent {
2
+ /** the event message */
3
+ data: string;
4
+ }
@@ -0,0 +1,6 @@
1
+ export interface PlaybackErrorEvent {
2
+ /** The error code */
3
+ code: string;
4
+ /** The error message */
5
+ message: string;
6
+ }
@@ -0,0 +1,16 @@
1
+ export interface PlaybackMetadataReceivedEvent {
2
+ /** The metadata source */
3
+ source: string;
4
+ /** The track title */
5
+ title: string | null;
6
+ /** The track url */
7
+ url: string | null;
8
+ /** The track artist */
9
+ artist: string | null;
10
+ /** The track album */
11
+ album: string | null;
12
+ /** The track date */
13
+ date: string | null;
14
+ /** The track genre */
15
+ genre: string | null;
16
+ }
@@ -0,0 +1,4 @@
1
+ export interface PlaybackPlayWhenReadyChangedEvent {
2
+ /** Whether the player will play when it is ready to do so. */
3
+ playWhenReady: boolean;
4
+ }
@@ -0,0 +1,5 @@
1
+ import type { Progress } from '../Progress';
2
+
3
+ export interface PlaybackProgressUpdatedEvent extends Progress {
4
+ track: number;
5
+ }
@@ -0,0 +1,9 @@
1
+ export interface PlaybackQueueEndedEvent {
2
+ /** The index of the active track when the playback queue ended. */
3
+ track: number;
4
+ /**
5
+ * The playback position in seconds of the active track when the playback
6
+ * queue ended.
7
+ **/
8
+ position: number;
9
+ }
@@ -0,0 +1,5 @@
1
+ import type { Progress } from '../Progress';
2
+
3
+ export interface PlaybackResumeEvent {
4
+ package: string;
5
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @deprecated
3
+ */
4
+ export interface PlaybackTrackChangedEvent {
5
+ /** The index of previously active track. */
6
+ track: number | null;
7
+ /** The previous track position in seconds. */
8
+ position: number;
9
+ /** The next (active) track index. */
10
+ nextTrack: number;
11
+ }
@@ -0,0 +1,6 @@
1
+ export interface PlayerErrorEvent {
2
+ /** The error code */
3
+ code: 'android-foreground-service-start-not-allowed';
4
+ /** The error message */
5
+ message: string;
6
+ }
@@ -0,0 +1,4 @@
1
+ export interface RemoteBrowseEvent {
2
+ /** The browsable media id */
3
+ mediaId: string;
4
+ }
@@ -0,0 +1,7 @@
1
+ export interface RemoteCustomActionEvent {
2
+ /**
3
+ * The custom action button pressed event.
4
+ * remote-custom-action
5
+ **/
6
+ customAction: string;
7
+ }
@@ -0,0 +1,13 @@
1
+ export interface RemoteDuckEvent {
2
+ /**
3
+ * On Android when true the player should pause playback, when false the
4
+ * player may resume playback. On iOS when true the playback was paused and
5
+ * when false the player may resume playback.
6
+ **/
7
+ paused: boolean;
8
+ /**
9
+ * Whether the interruption is permanent. On Android the player should stop
10
+ * playback.
11
+ **/
12
+ permanent: boolean;
13
+ }
@@ -0,0 +1,8 @@
1
+ export interface RemoteJumpBackwardEvent {
2
+ /**
3
+ * The number of seconds to jump backward.
4
+ * May be missing on Android
5
+ * See https://rntp.dev/docs/api/events#remotejumpbackward
6
+ **/
7
+ interval?: number;
8
+ }
@@ -0,0 +1,8 @@
1
+ export interface RemoteJumpForwardEvent {
2
+ /**
3
+ * The number of seconds to jump forward.
4
+ * May be missing on Android
5
+ * See https://rntp.dev/docs/api/events#remotejumpforward
6
+ **/
7
+ interval?: number;
8
+ }
@@ -0,0 +1,4 @@
1
+ export interface RemotePlayIdEvent {
2
+ /** The track id */
3
+ id: string;
4
+ }
@@ -0,0 +1,21 @@
1
+ export interface RemotePlaySearchEvent {
2
+ /*
3
+ below is the Google Voice event log:
4
+ Event.RemotePlaySearchEvent {
5
+ "android.intent.extra.REFERRER_NAME": "android-app://com.google.android.googlequicksearchbox/https/www.google.com",
6
+ "android.intent.extra.START_PLAYBACK": true,
7
+ "android.intent.extra.focus": "vnd.android.cursor.item/*",
8
+ "android.intent.extra.user_query": "play seat",
9
+ "android.intent.extra.user_query_language": "en-US",
10
+ "com.google.android.projection.gearhead.ignore_original_pkg": false,
11
+ "opa_allow_launch_intent_on_lockscreen": true,
12
+ "query": "seat"}
13
+ */
14
+ query: string;
15
+ focus?: 'artist' | 'album' | 'playlist' | 'genre';
16
+ title?: string;
17
+ artist?: string;
18
+ album?: string;
19
+ date?: string;
20
+ playlist?: string;
21
+ }
@@ -0,0 +1,4 @@
1
+ export interface RemoteSeekEvent {
2
+ /** The position to seek to in seconds. */
3
+ position: number;
4
+ }
@@ -0,0 +1,5 @@
1
+ import type { RatingType } from '../../constants';
2
+
3
+ export interface RemoteSetRatingEvent {
4
+ rating: RatingType;
5
+ }
@@ -0,0 +1,3 @@
1
+ export interface RemoteSkipEvent {
2
+ index: number;
3
+ }
@@ -0,0 +1,18 @@
1
+ export * from './EventPayloadByEvent';
2
+ export * from './PlaybackActiveTrackChangedEvent';
3
+ export * from './PlaybackErrorEvent';
4
+ export * from './PlaybackMetadataReceivedEvent';
5
+ export * from './PlaybackPlayWhenReadyChangedEvent';
6
+ export * from './PlaybackProgressUpdatedEvent';
7
+ export * from './PlaybackQueueEndedEvent';
8
+ export * from './PlaybackTrackChangedEvent';
9
+ export * from './RemoteDuckEvent';
10
+ export * from './RemoteJumpBackwardEvent';
11
+ export * from './RemoteJumpForwardEvent';
12
+ export * from './RemotePlayIdEvent';
13
+ export * from './RemotePlaySearchEvent';
14
+ export * from './RemoteSeekEvent';
15
+ export * from './RemoteSetRatingEvent';
16
+ export * from './RemoteSkipEvent';
17
+ export * from './RemoteBrowseEvent';
18
+ export * from './ControllerConnectedEvent';
@@ -0,0 +1,15 @@
1
+ export * from './AndroidOptions';
2
+ export * from './FeedbackOptions';
3
+ export * from './MetadataOptions';
4
+ export * from './NowPlayingMetadata';
5
+ export * from './PlaybackState';
6
+ export * from './PlayerOptions';
7
+ export * from './Progress';
8
+ export * from './ResourceObject';
9
+ export * from './ServiceHandler';
10
+ export * from './Track';
11
+ export * from './TrackMetadataBase';
12
+ export * from './UpdateOptions';
13
+ export * from './events';
14
+ export * from './MediaItem';
15
+ export * from './AndroidAutoBrowseTree';
@@ -0,0 +1,3 @@
1
+ // @ts-expect-error because resolveAssetSource is untyped
2
+ import resolve from 'react-native/Libraries/Image/resolveAssetSource';
3
+ export default resolve;