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

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,33 @@
1
+ package com.doublesymmetry.trackplayer
2
+
3
+ import com.doublesymmetry.trackplayer.module.MusicModule
4
+ import com.facebook.react.BaseReactPackage
5
+ import com.facebook.react.bridge.NativeModule
6
+ import com.facebook.react.bridge.ReactApplicationContext
7
+ import com.facebook.react.module.model.ReactModuleInfo
8
+ import com.facebook.react.module.model.ReactModuleInfoProvider
9
+
10
+ class TrackPlayer : BaseReactPackage() {
11
+ override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? =
12
+ if (name == MusicModule.NAME) {
13
+ MusicModule(reactContext)
14
+ } else {
15
+ null
16
+ }
17
+
18
+ override fun getReactModuleInfoProvider() = ReactModuleInfoProvider {
19
+ mapOf(
20
+ MusicModule.NAME to ReactModuleInfo(
21
+ MusicModule.NAME,
22
+ MusicModule.NAME,
23
+ canOverrideExistingModule = false, // canOverrideExistingModule
24
+ needsEagerInit = false, // needsEagerInit
25
+ isCxxModule = false, // isCxxModule
26
+ isTurboModule = true // isTurboModule
27
+ )
28
+ )
29
+ }
30
+
31
+ override fun createViewManagers(reactContext: ReactApplicationContext) =
32
+ listOf<com.facebook.react.uimanager.ViewManager<*, *>>(com.doublesymmetry.trackplayer.video.TrackPlayerVideoViewManager())
33
+ }
@@ -1,7 +1,7 @@
1
- package com.guichaguri.trackplayer.extensions
1
+ package com.doublesymmetry.trackplayer.extensions
2
2
 
3
- import com.guichaguri.trackplayer.kotlinaudio.models.AudioPlayerState
4
- import com.guichaguri.trackplayer.model.State
3
+ import com.lovegaoshi.kotlinaudio.models.AudioPlayerState
4
+ import com.doublesymmetry.trackplayer.model.State
5
5
 
6
6
  val AudioPlayerState.asLibState: State
7
7
  get() {
@@ -0,0 +1,5 @@
1
+ package com.doublesymmetry.trackplayer.extensions
2
+
3
+ inline fun <reified T : Enum<T>, V> ((T) -> V).find(value: V): T? {
4
+ return enumValues<T>().firstOrNull { this(it) == value }
5
+ }
@@ -0,0 +1,13 @@
1
+ package com.doublesymmetry.trackplayer.extensions
2
+
3
+ class NumberExt {
4
+ companion object {
5
+ fun Number.toSeconds(): Double {
6
+ return this.toDouble() / 1000
7
+ }
8
+
9
+ fun Number.toMilliseconds(): Long {
10
+ return (this.toDouble() * 1000).toLong()
11
+ }
12
+ }
13
+ }
@@ -1,19 +1,22 @@
1
- package com.guichaguri.trackplayer.model
1
+ package com.doublesymmetry.trackplayer.model
2
2
 
3
3
  import android.os.Bundle
4
- import com.google.android.exoplayer2.MediaMetadata
5
- import com.google.android.exoplayer2.metadata.Metadata
6
- import com.google.android.exoplayer2.metadata.flac.VorbisComment
7
- import com.google.android.exoplayer2.metadata.icy.IcyHeaders
8
- import com.google.android.exoplayer2.metadata.icy.IcyInfo
9
- import com.google.android.exoplayer2.metadata.id3.ChapterFrame
10
- import com.google.android.exoplayer2.metadata.id3.TextInformationFrame
11
- import com.google.android.exoplayer2.metadata.id3.UrlLinkFrame
12
- import com.google.android.exoplayer2.metadata.mp4.MdtaMetadataEntry
4
+ import androidx.annotation.OptIn
5
+ import androidx.media3.common.Metadata
6
+ import androidx.media3.common.MediaMetadata
7
+ import androidx.media3.common.util.UnstableApi
8
+ import androidx.media3.extractor.metadata.vorbis.VorbisComment
9
+ import androidx.media3.extractor.metadata.icy.IcyHeaders
10
+ import androidx.media3.extractor.metadata.icy.IcyInfo
11
+ import androidx.media3.extractor.metadata.id3.ChapterFrame
12
+ import androidx.media3.extractor.metadata.id3.TextInformationFrame
13
+ import androidx.media3.extractor.metadata.id3.UrlLinkFrame
14
+ import androidx.media3.container.MdtaMetadataEntry
13
15
  import timber.log.Timber
14
16
 
15
17
  sealed class MetadataAdapter {
16
18
  companion object {
19
+ @OptIn(UnstableApi::class)
17
20
  fun fromMetadata(metadata: Metadata): List<Bundle> {
18
21
  val group = mutableListOf<Bundle>()
19
22
 
@@ -30,30 +33,30 @@ sealed class MetadataAdapter {
30
33
 
31
34
  when (entry.id.uppercase()) {
32
35
  "TIT2", "TT2" -> {
33
- putString("title", entry.value)
36
+ putString("title", entry.values[0])
34
37
  rawEntry.putString("commonKey", "title")
35
38
  }
36
39
  "TALB", "TOAL", "TAL" -> {
37
- putString("albumName", entry.value)
40
+ putString("albumName", entry.values[0])
38
41
  rawEntry.putString("commonKey", "albumName")
39
42
  }
40
43
  "TOPE", "TPE1", "TP1" -> {
41
- putString("artist", entry.value)
44
+ putString("artist", entry.values[0])
42
45
  rawEntry.putString("commonKey", "artist")
43
46
  }
44
47
  "TDRC", "TOR" -> {
45
- putString("creationDate", entry.value)
48
+ putString("creationDate", entry.values[0])
46
49
  rawEntry.putString("commonKey", "creationDate")
47
50
  }
48
51
  "TCON", "TCO" -> {
49
- putString("genre", entry.value)
52
+ putString("genre", entry.values[0])
50
53
  rawEntry.putString("commonKey", "genre")
51
54
  }
52
55
  }
53
56
 
54
57
  rawEntry.putString("key", entry.id.uppercase())
55
58
  rawEntry.putString("keySpace", "org.id3")
56
- rawEntry.putString("value", entry.value)
59
+ rawEntry.putString("value", entry.values[0])
57
60
  rawEntry.putString("time", "-1")
58
61
  rawEntries.add(rawEntry)
59
62
  }
@@ -204,7 +207,7 @@ sealed class MetadataAdapter {
204
207
  metadata.genre?.let { putString("genre", it.toString()) }
205
208
  metadata.compilation?.let { putString("compilation", it.toString()) }
206
209
  metadata.station?.let { putString("station", it.toString()) }
207
- // metadata.mediaType?.let { putInt("mediaType", it) }
210
+ metadata.mediaType?.let { putInt("mediaType", it) }
208
211
 
209
212
  // This is how SwiftAudioEx outputs it in the metadata dictionary
210
213
  (metadata.recordingDay to metadata.recordingMonth).let { (day, month) ->
@@ -0,0 +1,16 @@
1
+ package com.doublesymmetry.trackplayer.model
2
+
3
+ import android.content.Context
4
+ import android.os.Bundle
5
+
6
+ class NowPlayingMetadata(context: Context, bundle: Bundle?, ratingType: Int) : TrackMetadata() {
7
+ var elapsedTime = 0.0
8
+ override fun setMetadata(context: Context, bundle: Bundle?, ratingType: Int) {
9
+ super.setMetadata(context, bundle, ratingType)
10
+ elapsedTime = bundle!!.getDouble("elapsedTime", 0.0)
11
+ }
12
+
13
+ init {
14
+ setMetadata(context, bundle, ratingType)
15
+ }
16
+ }
@@ -1,13 +1,16 @@
1
- package com.guichaguri.trackplayer.kotlinaudio.models
2
-
3
- import com.google.android.exoplayer2.metadata.flac.VorbisComment
4
- import com.google.android.exoplayer2.metadata.icy.IcyHeaders
5
- import com.google.android.exoplayer2.metadata.icy.IcyInfo
6
- import com.google.android.exoplayer2.metadata.id3.TextInformationFrame
7
- import com.google.android.exoplayer2.metadata.id3.UrlLinkFrame
8
- import com.google.android.exoplayer2.metadata.mp4.MdtaMetadataEntry
9
- import com.google.android.exoplayer2.metadata.Metadata
10
-
1
+ package com.doublesymmetry.trackplayer.model
2
+
3
+ import androidx.annotation.OptIn
4
+ import androidx.media3.common.Metadata
5
+ import androidx.media3.common.util.UnstableApi
6
+ import androidx.media3.extractor.metadata.vorbis.VorbisComment
7
+ import androidx.media3.extractor.metadata.icy.IcyHeaders
8
+ import androidx.media3.extractor.metadata.icy.IcyInfo
9
+ import androidx.media3.extractor.metadata.id3.TextInformationFrame
10
+ import androidx.media3.extractor.metadata.id3.UrlLinkFrame
11
+ import androidx.media3.container.MdtaMetadataEntry
12
+
13
+ @OptIn(UnstableApi::class)
11
14
  data class PlaybackMetadata(
12
15
  val source: String,
13
16
  var title: String? = null,
@@ -38,23 +41,23 @@ data class PlaybackMetadata(
38
41
  when (entry.id.uppercase()) {
39
42
  "TIT2", "TT2" -> {
40
43
  handled = true
41
- title = entry.value
44
+ title = entry.values[0]
42
45
  }
43
46
  "TALB", "TOAL", "TAL" -> {
44
47
  handled = true
45
- album = entry.value
48
+ album = entry.values[0]
46
49
  }
47
50
  "TOPE", "TPE1", "TP1" -> {
48
51
  handled = true
49
- artist = entry.value
52
+ artist = entry.values[0]
50
53
  }
51
54
  "TDRC", "TOR" -> {
52
55
  handled = true
53
- date = entry.value
56
+ date = entry.values[0]
54
57
  }
55
58
  "TCON", "TCO" -> {
56
59
  handled = true
57
- genre = entry.value
60
+ genre = entry.values[0]
58
61
  }
59
62
 
60
63
  }
@@ -62,8 +65,8 @@ data class PlaybackMetadata(
62
65
  is UrlLinkFrame -> {
63
66
  when (entry.id.uppercase()) {
64
67
  "WOAS", "WOAF", "WOAR", "WAR" -> {
65
- handled = true;
66
- url = entry.url;
68
+ handled = true
69
+ url = entry.url
67
70
  }
68
71
  }
69
72
  }
@@ -110,7 +113,7 @@ data class PlaybackMetadata(
110
113
  * https://xiph.org/vorbis/doc/v-comment.html
111
114
  */
112
115
  fun fromVorbisComment(metadata: Metadata): PlaybackMetadata? {
113
- var handled = false;
116
+ var handled = false
114
117
 
115
118
  var title: String? = null
116
119
  var url: String? = null
@@ -125,15 +128,15 @@ data class PlaybackMetadata(
125
128
  when (entry.key) {
126
129
  "TITLE" -> {
127
130
  handled = true
128
- title = entry.value;
131
+ title = entry.value
129
132
  }
130
133
  "ARTIST" -> {
131
134
  handled = true
132
- artist = entry.value;
135
+ artist = entry.value
133
136
  }
134
137
  "ALBUM" -> {
135
138
  handled = true
136
- album = entry.value;
139
+ album = entry.value
137
140
  }
138
141
  "DATE" -> {
139
142
  handled = true
@@ -158,7 +161,7 @@ data class PlaybackMetadata(
158
161
  * https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/Metadata/Metadata.html
159
162
  */
160
163
  fun fromQuickTime(metadata: Metadata): PlaybackMetadata? {
161
- var handled = false;
164
+ var handled = false
162
165
 
163
166
  var title: String? = null
164
167
  var artist: String? = null
@@ -167,28 +170,28 @@ data class PlaybackMetadata(
167
170
  var genre: String? = null
168
171
 
169
172
  for (i in 0 until metadata.length()) {
170
- val entry = metadata[i];
173
+ val entry = metadata[i]
171
174
  if (entry is MdtaMetadataEntry) {
172
175
  when (entry.key) {
173
176
  "com.apple.quicktime.title" -> {
174
177
  handled = true
175
- title = entry.value.toString();
178
+ title = entry.value.toString()
176
179
  }
177
180
  "com.apple.quicktime.artist" -> {
178
181
  handled = true
179
- artist = entry.value.toString();
182
+ artist = entry.value.toString()
180
183
  }
181
184
  "com.apple.quicktime.album" -> {
182
185
  handled = true
183
- album = entry.value.toString();
186
+ album = entry.value.toString()
184
187
  }
185
188
  "com.apple.quicktime.creationdate" -> {
186
189
  handled = true
187
- date = entry.value.toString();
190
+ date = entry.value.toString()
188
191
  }
189
192
  "com.apple.quicktime.genre" -> {
190
193
  handled = true
191
- genre = entry.value.toString();
194
+ genre = entry.value.toString()
192
195
  }
193
196
  }
194
197
  }
@@ -1,4 +1,4 @@
1
- package com.guichaguri.trackplayer.model
1
+ package com.doublesymmetry.trackplayer.model
2
2
 
3
3
  enum class State(val state: String) {
4
4
  Buffering("buffering"),
@@ -0,0 +1,67 @@
1
+ package com.doublesymmetry.trackplayer.model
2
+
3
+ import android.content.ContentResolver
4
+ import android.content.Context
5
+ import android.net.Uri
6
+ import android.os.Bundle
7
+ import androidx.annotation.OptIn
8
+ import androidx.media3.common.util.UnstableApi
9
+ import com.lovegaoshi.kotlinaudio.models.AudioItemOptions
10
+ import com.lovegaoshi.kotlinaudio.models.MediaType
11
+ import com.doublesymmetry.trackplayer.utils.BundleUtils
12
+
13
+ /**
14
+ * @author Milen Pivchev @mpivchev
15
+ */
16
+ @OptIn(UnstableApi::class)
17
+ class Track
18
+ (context: Context, bundle: Bundle, ratingType: Int) : TrackMetadata() {
19
+ var uri: Uri? = null
20
+ var resourceId: Int?
21
+ var type = MediaType.DEFAULT
22
+ var contentType: String?
23
+ var userAgent: String?
24
+ var originalItem: Bundle?
25
+ var headers: HashMap<String, String>? = null
26
+ val queueId: Long
27
+
28
+ override fun setMetadata(context: Context, bundle: Bundle?, ratingType: Int) {
29
+ super.setMetadata(context, bundle, ratingType)
30
+ if (originalItem != null && originalItem != bundle) originalItem!!.putAll(bundle)
31
+ }
32
+
33
+ fun toAudioItem(): TrackAudioItem {
34
+ return TrackAudioItem(this, type, uri.toString(), artist, title, album, artwork.toString(), duration,
35
+ AudioItemOptions(headers, userAgent, resourceId), mediaId)
36
+ }
37
+
38
+ init {
39
+ resourceId = BundleUtils.getRawResourceId(context, bundle, "url")
40
+ uri = if (resourceId == 0) {
41
+ resourceId = null
42
+ BundleUtils.getUri(context, bundle, "url")
43
+ } else {
44
+ // RawResourceDataSource.buildRawResourceUri(resourceId!!)
45
+ Uri.Builder().scheme(ContentResolver.SCHEME_ANDROID_RESOURCE).path(resourceId!!.toString()).build()
46
+ }
47
+ val trackType = bundle.getString("type", "default")
48
+ for (t in MediaType.entries) {
49
+ if (t.name.equals(trackType, ignoreCase = true)) {
50
+ type = t
51
+ break
52
+ }
53
+ }
54
+ contentType = bundle.getString("contentType")
55
+ userAgent = bundle.getString("userAgent")
56
+ val httpHeaders = bundle.getBundle("headers")
57
+ if (httpHeaders != null) {
58
+ headers = HashMap()
59
+ for (header in httpHeaders.keySet()) {
60
+ headers!![header] = httpHeaders.getString(header)!!
61
+ }
62
+ }
63
+ setMetadata(context, bundle, ratingType)
64
+ queueId = System.currentTimeMillis()
65
+ originalItem = bundle
66
+ }
67
+ }
@@ -0,0 +1,18 @@
1
+ package com.doublesymmetry.trackplayer.model
2
+
3
+ import com.lovegaoshi.kotlinaudio.models.AudioItem
4
+ import com.lovegaoshi.kotlinaudio.models.AudioItemOptions
5
+ import com.lovegaoshi.kotlinaudio.models.MediaType
6
+
7
+ data class TrackAudioItem(
8
+ val track: Track,
9
+ override val type: MediaType,
10
+ override var audioUrl: String,
11
+ override var artist: String? = null,
12
+ override var title: String? = null,
13
+ override var albumTitle: String? = null,
14
+ override val artwork: String? = null,
15
+ override val duration: Long? = null,
16
+ override val options: AudioItemOptions? = null,
17
+ override val mediaId: String? = null
18
+ ): AudioItem
@@ -0,0 +1,38 @@
1
+ package com.doublesymmetry.trackplayer.model
2
+
3
+ import android.content.Context
4
+ import android.net.Uri
5
+ import android.os.Bundle
6
+ import androidx.media3.common.Rating
7
+ import com.doublesymmetry.trackplayer.extensions.NumberExt.Companion.toMilliseconds
8
+ import com.doublesymmetry.trackplayer.utils.BundleUtils
9
+
10
+ abstract class TrackMetadata {
11
+ var artwork: Uri? = null
12
+ var title: String? = null
13
+ var artist: String? = null
14
+ var album: String? = null
15
+ var date: String? = null
16
+ var genre: String? = null
17
+ var duration: Long? = null
18
+ var rating: Rating? = null
19
+ var mediaId: String? = null
20
+
21
+ open fun setMetadata(context: Context, bundle: Bundle?, ratingType: Int) {
22
+ artwork = BundleUtils.getUri(context, bundle, "artwork")
23
+ title = bundle!!.getString("title")
24
+ artist = bundle.getString("artist")
25
+ album = bundle.getString("album")
26
+ date = bundle.getString("date")
27
+ genre = bundle.getString("genre")
28
+ mediaId = bundle.getString("mediaId")
29
+
30
+ duration = if (bundle.containsKey("duration")) {
31
+ bundle.getDouble("duration").toMilliseconds()
32
+ } else {
33
+ null
34
+ }
35
+
36
+ rating = BundleUtils.getRating(bundle, "rating", ratingType)
37
+ }
38
+ }
@@ -1,4 +1,4 @@
1
- package com.guichaguri.trackplayer.module
1
+ package com.doublesymmetry.trackplayer.module
2
2
 
3
3
  import android.content.BroadcastReceiver
4
4
  import android.content.Context
@@ -15,18 +15,16 @@ class MusicEvents(private val reactContext: ReactContext) : BroadcastReceiver()
15
15
  val event = intent.getStringExtra("event")
16
16
  val data = intent.getBundleExtra("data")
17
17
  val map = if (data != null) Arguments.fromBundle(data) else null
18
- reactContext.getJSModule(RCTDeviceEventEmitter::class.java).emit(
19
- event!!, map
20
- )
18
+ reactContext.emitDeviceEvent(event!!, map)
21
19
  }
22
20
 
23
21
  companion object {
24
22
  // Media Control Events
25
23
  const val BUTTON_PLAY = "remote-play"
24
+ const val BUTTON_PLAY_PAUSE = "remote-play-pause"
26
25
  const val BUTTON_PLAY_FROM_ID = "remote-play-id"
27
- const val SEARCH = "remote-search"
28
26
  const val BUTTON_PLAY_FROM_SEARCH = "remote-play-search"
29
- const val BUTTON_PLAY_FROM_QUEUE = "remote-play-queue"
27
+ const val BUTTON_SEARCH = "remote-search"
30
28
  const val BUTTON_PAUSE = "remote-pause"
31
29
  const val BUTTON_STOP = "remote-stop"
32
30
  const val BUTTON_SKIP = "remote-skip"
@@ -38,9 +36,7 @@ class MusicEvents(private val reactContext: ReactContext) : BroadcastReceiver()
38
36
  const val BUTTON_JUMP_BACKWARD = "remote-jump-backward"
39
37
  const val BUTTON_DUCK = "remote-duck"
40
38
  const val BUTTON_BROWSE = "remote-browse"
41
- const val BUTTON_SHUFFLE = "remote-shuffle"
42
- const val BUTTON_REPEAT = "remote-repeat"
43
- const val BUTTON_TRACK_STATUS = "remote-track-status"
39
+ const val BUTTON_CUSTOM_ACTION = "remote-custom-action"
44
40
 
45
41
  // Playback Events
46
42
  const val PLAYBACK_PLAY_WHEN_READY_CHANGED = "playback-play-when-ready-changed"
@@ -51,6 +47,9 @@ class MusicEvents(private val reactContext: ReactContext) : BroadcastReceiver()
51
47
  const val PLAYBACK_METADATA = "playback-metadata-received"
52
48
  const val PLAYBACK_PROGRESS_UPDATED = "playback-progress-updated"
53
49
  const val PLAYBACK_ERROR = "playback-error"
50
+ const val PLAYBACK_ANIMATED_VOLUME_CHANGED = "playback-animated-volume-changed"
51
+ const val PLAYBACK_RESUME = "playback-resume-android"
52
+ const val FFT_UPDATED = "fft-updated"
54
53
 
55
54
  // Metadata Events
56
55
  const val METADATA_CHAPTER_RECEIVED = "metadata-chapter-received"
@@ -60,6 +59,8 @@ class MusicEvents(private val reactContext: ReactContext) : BroadcastReceiver()
60
59
 
61
60
  // Other
62
61
  const val PLAYER_ERROR = "player-error"
62
+ const val CONNECTOR_CONNECTED = "android-controller-connected"
63
+ const val CONNECTOR_DISCONNECTED = "android-controller-disconnected"
63
64
 
64
65
  const val EVENT_INTENT = "com.doublesymmetry.trackplayer.event"
65
66
  }