@javascriptcommon/react-native-track-player 1.2.9 → 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 (437) hide show
  1. package/LICENSE +201 -21
  2. package/README.md +8 -0
  3. package/android/build.gradle +92 -18
  4. package/android/proguard-rules.txt +0 -3
  5. package/android/src/main/AndroidManifest.xml +10 -13
  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/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 +67 -0
  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/doublesymmetry/trackplayer/utils/BundleUtils.kt +147 -0
  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/lovegaoshi/kotlinaudio/event/EventHolder.kt +30 -0
  29. package/android/src/main/java/com/lovegaoshi/kotlinaudio/event/PlayerEventHolder.kt +124 -0
  30. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/AudioContentType.kt +10 -0
  31. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/AudioItem.kt +118 -0
  32. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/AudioItemTransitionReason.kt +33 -0
  33. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/AudioPlayerState.kt +30 -0
  34. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/BufferConfig.kt +8 -0
  35. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/CacheConfig.kt +17 -0
  36. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/Capability.kt +19 -0
  37. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/CustomButton.kt +19 -0
  38. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/FocusChangeData.kt +3 -0
  39. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/MediaSessionCallback.kt +17 -0
  40. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PlayWhenReadyChangeData.kt +3 -0
  41. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PlaybackEndedReason.kt +5 -0
  42. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PlaybackError.kt +6 -0
  43. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PlayerConfig.kt +36 -0
  44. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PlayerOptions.kt +40 -0
  45. package/android/src/main/java/com/lovegaoshi/kotlinaudio/models/PositionChangedReason.kt +39 -0
  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/lovegaoshi/kotlinaudio/player/QueuedAudioPlayer.kt +279 -0
  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 +5 -0
  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/java/com/guichaguri/trackplayer/TrackPlayer.java +0 -28
  376. package/android/src/main/java/com/guichaguri/trackplayer/module/MusicEvents.java +0 -55
  377. package/android/src/main/java/com/guichaguri/trackplayer/module/MusicModule.java +0 -298
  378. package/android/src/main/java/com/guichaguri/trackplayer/service/HeadlessJsMediaService.java +0 -174
  379. package/android/src/main/java/com/guichaguri/trackplayer/service/MusicBinder.java +0 -47
  380. package/android/src/main/java/com/guichaguri/trackplayer/service/MusicManager.java +0 -383
  381. package/android/src/main/java/com/guichaguri/trackplayer/service/MusicService.java +0 -271
  382. package/android/src/main/java/com/guichaguri/trackplayer/service/Utils.java +0 -243
  383. package/android/src/main/java/com/guichaguri/trackplayer/service/metadata/ButtonEvents.java +0 -148
  384. package/android/src/main/java/com/guichaguri/trackplayer/service/metadata/MetadataManager.java +0 -379
  385. package/android/src/main/java/com/guichaguri/trackplayer/service/models/Track.java +0 -141
  386. package/android/src/main/java/com/guichaguri/trackplayer/service/models/TrackType.java +0 -35
  387. package/android/src/main/res/drawable-hdpi/ic_forward.png +0 -0
  388. package/android/src/main/res/drawable-hdpi/ic_logo.png +0 -0
  389. package/android/src/main/res/drawable-hdpi/ic_next.png +0 -0
  390. package/android/src/main/res/drawable-hdpi/ic_pause.png +0 -0
  391. package/android/src/main/res/drawable-hdpi/ic_play.png +0 -0
  392. package/android/src/main/res/drawable-hdpi/ic_previous.png +0 -0
  393. package/android/src/main/res/drawable-hdpi/ic_rewind.png +0 -0
  394. package/android/src/main/res/drawable-hdpi/ic_stop.png +0 -0
  395. package/android/src/main/res/drawable-mdpi/ic_forward.png +0 -0
  396. package/android/src/main/res/drawable-mdpi/ic_logo.png +0 -0
  397. package/android/src/main/res/drawable-mdpi/ic_next.png +0 -0
  398. package/android/src/main/res/drawable-mdpi/ic_pause.png +0 -0
  399. package/android/src/main/res/drawable-mdpi/ic_play.png +0 -0
  400. package/android/src/main/res/drawable-mdpi/ic_previous.png +0 -0
  401. package/android/src/main/res/drawable-mdpi/ic_rewind.png +0 -0
  402. package/android/src/main/res/drawable-mdpi/ic_stop.png +0 -0
  403. package/android/src/main/res/drawable-xhdpi/ic_forward.png +0 -0
  404. package/android/src/main/res/drawable-xhdpi/ic_logo.png +0 -0
  405. package/android/src/main/res/drawable-xhdpi/ic_next.png +0 -0
  406. package/android/src/main/res/drawable-xhdpi/ic_pause.png +0 -0
  407. package/android/src/main/res/drawable-xhdpi/ic_play.png +0 -0
  408. package/android/src/main/res/drawable-xhdpi/ic_previous.png +0 -0
  409. package/android/src/main/res/drawable-xhdpi/ic_rewind.png +0 -0
  410. package/android/src/main/res/drawable-xhdpi/ic_stop.png +0 -0
  411. package/android/src/main/res/drawable-xxhdpi/ic_forward.png +0 -0
  412. package/android/src/main/res/drawable-xxhdpi/ic_logo.png +0 -0
  413. package/android/src/main/res/drawable-xxhdpi/ic_next.png +0 -0
  414. package/android/src/main/res/drawable-xxhdpi/ic_pause.png +0 -0
  415. package/android/src/main/res/drawable-xxhdpi/ic_play.png +0 -0
  416. package/android/src/main/res/drawable-xxhdpi/ic_previous.png +0 -0
  417. package/android/src/main/res/drawable-xxhdpi/ic_rewind.png +0 -0
  418. package/android/src/main/res/drawable-xxhdpi/ic_stop.png +0 -0
  419. package/android/src/main/res/drawable-xxxhdpi/ic_forward.png +0 -0
  420. package/android/src/main/res/drawable-xxxhdpi/ic_logo.png +0 -0
  421. package/android/src/main/res/drawable-xxxhdpi/ic_next.png +0 -0
  422. package/android/src/main/res/drawable-xxxhdpi/ic_pause.png +0 -0
  423. package/android/src/main/res/drawable-xxxhdpi/ic_play.png +0 -0
  424. package/android/src/main/res/drawable-xxxhdpi/ic_previous.png +0 -0
  425. package/android/src/main/res/drawable-xxxhdpi/ic_rewind.png +0 -0
  426. package/android/src/main/res/drawable-xxxhdpi/ic_stop.png +0 -0
  427. package/index.d.ts +0 -174
  428. package/index.js +0 -4
  429. package/ios/RNTrackPlayer/RNTrackPlayerBridge.h +0 -12
  430. package/ios/RNTrackPlayer/RNTrackPlayerBridge.m +0 -29
  431. package/ios/TrackPlayer.xcodeproj/project.pbxproj +0 -495
  432. package/ios/TrackPlayer.xcodeproj/project.xcworkspace/xcuserdata/marco.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  433. package/lib/ProgressComponent.js +0 -70
  434. package/lib/eventTypes.js +0 -28
  435. package/lib/hooks.js +0 -160
  436. package/lib/index.js +0 -177
  437. /package/ios/{TrackPlayer.xcodeproj → Example/SwiftAudio.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
@@ -0,0 +1,412 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 60;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ 9B88195D2BC8657A00E20DCE /* SwiftAudioApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B88195C2BC8657A00E20DCE /* SwiftAudioApp.swift */; };
11
+ 9B8819612BC8657B00E20DCE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9B8819602BC8657B00E20DCE /* Assets.xcassets */; };
12
+ 9B8819652BC8657B00E20DCE /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9B8819642BC8657B00E20DCE /* Preview Assets.xcassets */; };
13
+ 9B8819712BC866A300E20DCE /* AudioController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B88196C2BC866A300E20DCE /* AudioController.swift */; };
14
+ 9B8819742BC866A300E20DCE /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B88196F2BC866A300E20DCE /* Extensions.swift */; };
15
+ 9B8819752BC866A300E20DCE /* PlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B8819702BC866A300E20DCE /* PlayerView.swift */; };
16
+ 9B88197A2BC9883200E20DCE /* PlayerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B8819792BC9883200E20DCE /* PlayerViewModel.swift */; };
17
+ 9B88197C2BC98F5000E20DCE /* QueueView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B88197B2BC98F5000E20DCE /* QueueView.swift */; };
18
+ CCF141D92E463E9300D6683E /* SwiftAudioEx in Frameworks */ = {isa = PBXBuildFile; productRef = CCF141D82E463E9300D6683E /* SwiftAudioEx */; };
19
+ /* End PBXBuildFile section */
20
+
21
+ /* Begin PBXFileReference section */
22
+ 9B8819592BC8657A00E20DCE /* SwiftAudio.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftAudio.app; sourceTree = BUILT_PRODUCTS_DIR; };
23
+ 9B88195C2BC8657A00E20DCE /* SwiftAudioApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftAudioApp.swift; sourceTree = "<group>"; };
24
+ 9B8819602BC8657B00E20DCE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
25
+ 9B8819622BC8657B00E20DCE /* SwiftAudio.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SwiftAudio.entitlements; sourceTree = "<group>"; };
26
+ 9B8819642BC8657B00E20DCE /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
27
+ 9B88196B2BC865E100E20DCE /* SwiftAudioEx */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = SwiftAudioEx; path = ..; sourceTree = "<group>"; };
28
+ 9B88196C2BC866A300E20DCE /* AudioController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AudioController.swift; sourceTree = "<group>"; };
29
+ 9B88196F2BC866A300E20DCE /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
30
+ 9B8819702BC866A300E20DCE /* PlayerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayerView.swift; sourceTree = "<group>"; };
31
+ 9B8819792BC9883200E20DCE /* PlayerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerViewModel.swift; sourceTree = "<group>"; };
32
+ 9B88197B2BC98F5000E20DCE /* QueueView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueueView.swift; sourceTree = "<group>"; };
33
+ /* End PBXFileReference section */
34
+
35
+ /* Begin PBXFrameworksBuildPhase section */
36
+ 9B8819562BC8657A00E20DCE /* Frameworks */ = {
37
+ isa = PBXFrameworksBuildPhase;
38
+ buildActionMask = 2147483647;
39
+ files = (
40
+ CCF141D92E463E9300D6683E /* SwiftAudioEx in Frameworks */,
41
+ );
42
+ runOnlyForDeploymentPostprocessing = 0;
43
+ };
44
+ /* End PBXFrameworksBuildPhase section */
45
+
46
+ /* Begin PBXGroup section */
47
+ 9B8819502BC8657A00E20DCE = {
48
+ isa = PBXGroup;
49
+ children = (
50
+ 9B88196B2BC865E100E20DCE /* SwiftAudioEx */,
51
+ 9B88195B2BC8657A00E20DCE /* SwiftAudio */,
52
+ 9B88195A2BC8657A00E20DCE /* Products */,
53
+ 9B8819762BC866E800E20DCE /* Frameworks */,
54
+ );
55
+ sourceTree = "<group>";
56
+ };
57
+ 9B88195A2BC8657A00E20DCE /* Products */ = {
58
+ isa = PBXGroup;
59
+ children = (
60
+ 9B8819592BC8657A00E20DCE /* SwiftAudio.app */,
61
+ );
62
+ name = Products;
63
+ sourceTree = "<group>";
64
+ };
65
+ 9B88195B2BC8657A00E20DCE /* SwiftAudio */ = {
66
+ isa = PBXGroup;
67
+ children = (
68
+ 9B88196C2BC866A300E20DCE /* AudioController.swift */,
69
+ 9B88196F2BC866A300E20DCE /* Extensions.swift */,
70
+ 9B8819792BC9883200E20DCE /* PlayerViewModel.swift */,
71
+ 9B8819702BC866A300E20DCE /* PlayerView.swift */,
72
+ 9B88195C2BC8657A00E20DCE /* SwiftAudioApp.swift */,
73
+ 9B88197B2BC98F5000E20DCE /* QueueView.swift */,
74
+ 9B8819602BC8657B00E20DCE /* Assets.xcassets */,
75
+ 9B8819622BC8657B00E20DCE /* SwiftAudio.entitlements */,
76
+ 9B8819632BC8657B00E20DCE /* Preview Content */,
77
+ );
78
+ path = SwiftAudio;
79
+ sourceTree = "<group>";
80
+ };
81
+ 9B8819632BC8657B00E20DCE /* Preview Content */ = {
82
+ isa = PBXGroup;
83
+ children = (
84
+ 9B8819642BC8657B00E20DCE /* Preview Assets.xcassets */,
85
+ );
86
+ path = "Preview Content";
87
+ sourceTree = "<group>";
88
+ };
89
+ 9B8819762BC866E800E20DCE /* Frameworks */ = {
90
+ isa = PBXGroup;
91
+ children = (
92
+ );
93
+ name = Frameworks;
94
+ sourceTree = "<group>";
95
+ };
96
+ /* End PBXGroup section */
97
+
98
+ /* Begin PBXNativeTarget section */
99
+ 9B8819582BC8657A00E20DCE /* SwiftAudio */ = {
100
+ isa = PBXNativeTarget;
101
+ buildConfigurationList = 9B8819682BC8657B00E20DCE /* Build configuration list for PBXNativeTarget "SwiftAudio" */;
102
+ buildPhases = (
103
+ 9B8819552BC8657A00E20DCE /* Sources */,
104
+ 9B8819562BC8657A00E20DCE /* Frameworks */,
105
+ 9B8819572BC8657A00E20DCE /* Resources */,
106
+ );
107
+ buildRules = (
108
+ );
109
+ dependencies = (
110
+ );
111
+ name = SwiftAudio;
112
+ packageProductDependencies = (
113
+ CCF141D82E463E9300D6683E /* SwiftAudioEx */,
114
+ );
115
+ productName = SwiftAudio;
116
+ productReference = 9B8819592BC8657A00E20DCE /* SwiftAudio.app */;
117
+ productType = "com.apple.product-type.application";
118
+ };
119
+ /* End PBXNativeTarget section */
120
+
121
+ /* Begin PBXProject section */
122
+ 9B8819512BC8657A00E20DCE /* Project object */ = {
123
+ isa = PBXProject;
124
+ attributes = {
125
+ BuildIndependentTargetsInParallel = 1;
126
+ LastSwiftUpdateCheck = 1530;
127
+ LastUpgradeCheck = 1530;
128
+ TargetAttributes = {
129
+ 9B8819582BC8657A00E20DCE = {
130
+ CreatedOnToolsVersion = 15.3;
131
+ };
132
+ };
133
+ };
134
+ buildConfigurationList = 9B8819542BC8657A00E20DCE /* Build configuration list for PBXProject "SwiftAudio" */;
135
+ compatibilityVersion = "Xcode 14.0";
136
+ developmentRegion = en;
137
+ hasScannedForEncodings = 0;
138
+ knownRegions = (
139
+ en,
140
+ Base,
141
+ );
142
+ mainGroup = 9B8819502BC8657A00E20DCE;
143
+ packageReferences = (
144
+ CCF141D72E463E9300D6683E /* XCLocalSwiftPackageReference "../SwiftAudioEx" */,
145
+ );
146
+ productRefGroup = 9B88195A2BC8657A00E20DCE /* Products */;
147
+ projectDirPath = "";
148
+ projectRoot = "";
149
+ targets = (
150
+ 9B8819582BC8657A00E20DCE /* SwiftAudio */,
151
+ );
152
+ };
153
+ /* End PBXProject section */
154
+
155
+ /* Begin PBXResourcesBuildPhase section */
156
+ 9B8819572BC8657A00E20DCE /* Resources */ = {
157
+ isa = PBXResourcesBuildPhase;
158
+ buildActionMask = 2147483647;
159
+ files = (
160
+ 9B8819652BC8657B00E20DCE /* Preview Assets.xcassets in Resources */,
161
+ 9B8819612BC8657B00E20DCE /* Assets.xcassets in Resources */,
162
+ );
163
+ runOnlyForDeploymentPostprocessing = 0;
164
+ };
165
+ /* End PBXResourcesBuildPhase section */
166
+
167
+ /* Begin PBXSourcesBuildPhase section */
168
+ 9B8819552BC8657A00E20DCE /* Sources */ = {
169
+ isa = PBXSourcesBuildPhase;
170
+ buildActionMask = 2147483647;
171
+ files = (
172
+ 9B8819742BC866A300E20DCE /* Extensions.swift in Sources */,
173
+ 9B8819752BC866A300E20DCE /* PlayerView.swift in Sources */,
174
+ 9B8819712BC866A300E20DCE /* AudioController.swift in Sources */,
175
+ 9B88197A2BC9883200E20DCE /* PlayerViewModel.swift in Sources */,
176
+ 9B88197C2BC98F5000E20DCE /* QueueView.swift in Sources */,
177
+ 9B88195D2BC8657A00E20DCE /* SwiftAudioApp.swift in Sources */,
178
+ );
179
+ runOnlyForDeploymentPostprocessing = 0;
180
+ };
181
+ /* End PBXSourcesBuildPhase section */
182
+
183
+ /* Begin XCBuildConfiguration section */
184
+ 9B8819662BC8657B00E20DCE /* Debug */ = {
185
+ isa = XCBuildConfiguration;
186
+ buildSettings = {
187
+ ALWAYS_SEARCH_USER_PATHS = NO;
188
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
189
+ CLANG_ANALYZER_NONNULL = YES;
190
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
191
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
192
+ CLANG_ENABLE_MODULES = YES;
193
+ CLANG_ENABLE_OBJC_ARC = YES;
194
+ CLANG_ENABLE_OBJC_WEAK = YES;
195
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
196
+ CLANG_WARN_BOOL_CONVERSION = YES;
197
+ CLANG_WARN_COMMA = YES;
198
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
199
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
200
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
201
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
202
+ CLANG_WARN_EMPTY_BODY = YES;
203
+ CLANG_WARN_ENUM_CONVERSION = YES;
204
+ CLANG_WARN_INFINITE_RECURSION = YES;
205
+ CLANG_WARN_INT_CONVERSION = YES;
206
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
207
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
208
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
209
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
210
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
211
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
212
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
213
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
214
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
215
+ CLANG_WARN_UNREACHABLE_CODE = YES;
216
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
217
+ COPY_PHASE_STRIP = NO;
218
+ DEBUG_INFORMATION_FORMAT = dwarf;
219
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
220
+ ENABLE_TESTABILITY = YES;
221
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
222
+ GCC_C_LANGUAGE_STANDARD = gnu17;
223
+ GCC_DYNAMIC_NO_PIC = NO;
224
+ GCC_NO_COMMON_BLOCKS = YES;
225
+ GCC_OPTIMIZATION_LEVEL = 0;
226
+ GCC_PREPROCESSOR_DEFINITIONS = (
227
+ "DEBUG=1",
228
+ "$(inherited)",
229
+ );
230
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
231
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
232
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
233
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
234
+ GCC_WARN_UNUSED_FUNCTION = YES;
235
+ GCC_WARN_UNUSED_VARIABLE = YES;
236
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
237
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
238
+ MTL_FAST_MATH = YES;
239
+ ONLY_ACTIVE_ARCH = YES;
240
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
241
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
242
+ };
243
+ name = Debug;
244
+ };
245
+ 9B8819672BC8657B00E20DCE /* Release */ = {
246
+ isa = XCBuildConfiguration;
247
+ buildSettings = {
248
+ ALWAYS_SEARCH_USER_PATHS = NO;
249
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
250
+ CLANG_ANALYZER_NONNULL = YES;
251
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
252
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
253
+ CLANG_ENABLE_MODULES = YES;
254
+ CLANG_ENABLE_OBJC_ARC = YES;
255
+ CLANG_ENABLE_OBJC_WEAK = YES;
256
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
257
+ CLANG_WARN_BOOL_CONVERSION = YES;
258
+ CLANG_WARN_COMMA = YES;
259
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
260
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
261
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
262
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
263
+ CLANG_WARN_EMPTY_BODY = YES;
264
+ CLANG_WARN_ENUM_CONVERSION = YES;
265
+ CLANG_WARN_INFINITE_RECURSION = YES;
266
+ CLANG_WARN_INT_CONVERSION = YES;
267
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
268
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
269
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
270
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
271
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
272
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
273
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
274
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
275
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
276
+ CLANG_WARN_UNREACHABLE_CODE = YES;
277
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
278
+ COPY_PHASE_STRIP = NO;
279
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
280
+ ENABLE_NS_ASSERTIONS = NO;
281
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
282
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
283
+ GCC_C_LANGUAGE_STANDARD = gnu17;
284
+ GCC_NO_COMMON_BLOCKS = YES;
285
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
286
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
287
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
288
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
289
+ GCC_WARN_UNUSED_FUNCTION = YES;
290
+ GCC_WARN_UNUSED_VARIABLE = YES;
291
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
292
+ MTL_ENABLE_DEBUG_INFO = NO;
293
+ MTL_FAST_MATH = YES;
294
+ SWIFT_COMPILATION_MODE = wholemodule;
295
+ };
296
+ name = Release;
297
+ };
298
+ 9B8819692BC8657B00E20DCE /* Debug */ = {
299
+ isa = XCBuildConfiguration;
300
+ buildSettings = {
301
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
302
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
303
+ CODE_SIGN_ENTITLEMENTS = SwiftAudio/SwiftAudio.entitlements;
304
+ CODE_SIGN_STYLE = Automatic;
305
+ CURRENT_PROJECT_VERSION = 1;
306
+ DEVELOPMENT_ASSET_PATHS = "\"SwiftAudio/Preview Content\"";
307
+ DEVELOPMENT_TEAM = K6KUHVMMR8;
308
+ ENABLE_HARDENED_RUNTIME = YES;
309
+ ENABLE_PREVIEWS = YES;
310
+ GENERATE_INFOPLIST_FILE = YES;
311
+ "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
312
+ "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
313
+ "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
314
+ "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES;
315
+ "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES;
316
+ "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES;
317
+ "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault;
318
+ "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
319
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
320
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
321
+ IPHONEOS_DEPLOYMENT_TARGET = 17.4;
322
+ LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
323
+ "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
324
+ MACOSX_DEPLOYMENT_TARGET = 14.2;
325
+ MARKETING_VERSION = 1.0;
326
+ PRODUCT_BUNDLE_IDENTIFIER = com.doublesymmetry.SwiftAudio;
327
+ PRODUCT_NAME = "$(TARGET_NAME)";
328
+ SDKROOT = auto;
329
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
330
+ SWIFT_EMIT_LOC_STRINGS = YES;
331
+ SWIFT_VERSION = 5.0;
332
+ TARGETED_DEVICE_FAMILY = "1,2";
333
+ };
334
+ name = Debug;
335
+ };
336
+ 9B88196A2BC8657B00E20DCE /* Release */ = {
337
+ isa = XCBuildConfiguration;
338
+ buildSettings = {
339
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
340
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
341
+ CODE_SIGN_ENTITLEMENTS = SwiftAudio/SwiftAudio.entitlements;
342
+ CODE_SIGN_STYLE = Automatic;
343
+ CURRENT_PROJECT_VERSION = 1;
344
+ DEVELOPMENT_ASSET_PATHS = "\"SwiftAudio/Preview Content\"";
345
+ DEVELOPMENT_TEAM = K6KUHVMMR8;
346
+ ENABLE_HARDENED_RUNTIME = YES;
347
+ ENABLE_PREVIEWS = YES;
348
+ GENERATE_INFOPLIST_FILE = YES;
349
+ "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
350
+ "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
351
+ "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
352
+ "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES;
353
+ "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES;
354
+ "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES;
355
+ "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault;
356
+ "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
357
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
358
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
359
+ IPHONEOS_DEPLOYMENT_TARGET = 17.4;
360
+ LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
361
+ "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
362
+ MACOSX_DEPLOYMENT_TARGET = 14.2;
363
+ MARKETING_VERSION = 1.0;
364
+ PRODUCT_BUNDLE_IDENTIFIER = com.doublesymmetry.SwiftAudio;
365
+ PRODUCT_NAME = "$(TARGET_NAME)";
366
+ SDKROOT = auto;
367
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
368
+ SWIFT_EMIT_LOC_STRINGS = YES;
369
+ SWIFT_VERSION = 5.0;
370
+ TARGETED_DEVICE_FAMILY = "1,2";
371
+ };
372
+ name = Release;
373
+ };
374
+ /* End XCBuildConfiguration section */
375
+
376
+ /* Begin XCConfigurationList section */
377
+ 9B8819542BC8657A00E20DCE /* Build configuration list for PBXProject "SwiftAudio" */ = {
378
+ isa = XCConfigurationList;
379
+ buildConfigurations = (
380
+ 9B8819662BC8657B00E20DCE /* Debug */,
381
+ 9B8819672BC8657B00E20DCE /* Release */,
382
+ );
383
+ defaultConfigurationIsVisible = 0;
384
+ defaultConfigurationName = Release;
385
+ };
386
+ 9B8819682BC8657B00E20DCE /* Build configuration list for PBXNativeTarget "SwiftAudio" */ = {
387
+ isa = XCConfigurationList;
388
+ buildConfigurations = (
389
+ 9B8819692BC8657B00E20DCE /* Debug */,
390
+ 9B88196A2BC8657B00E20DCE /* Release */,
391
+ );
392
+ defaultConfigurationIsVisible = 0;
393
+ defaultConfigurationName = Release;
394
+ };
395
+ /* End XCConfigurationList section */
396
+
397
+ /* Begin XCLocalSwiftPackageReference section */
398
+ CCF141D72E463E9300D6683E /* XCLocalSwiftPackageReference "../SwiftAudioEx" */ = {
399
+ isa = XCLocalSwiftPackageReference;
400
+ relativePath = ../SwiftAudioEx;
401
+ };
402
+ /* End XCLocalSwiftPackageReference section */
403
+
404
+ /* Begin XCSwiftPackageProductDependency section */
405
+ CCF141D82E463E9300D6683E /* SwiftAudioEx */ = {
406
+ isa = XCSwiftPackageProductDependency;
407
+ productName = SwiftAudioEx;
408
+ };
409
+ /* End XCSwiftPackageProductDependency section */
410
+ };
411
+ rootObject = 9B8819512BC8657A00E20DCE /* Project object */;
412
+ }
@@ -2,6 +2,6 @@
2
2
  <Workspace
3
3
  version = "1.0">
4
4
  <FileRef
5
- location = "self:RNTrackPlayer.xcodeproj">
5
+ location = "self:">
6
6
  </FileRef>
7
7
  </Workspace>
@@ -9,9 +9,44 @@
9
9
  import Foundation
10
10
 
11
11
  enum Capability: String {
12
- case play, pause, stop, next, previous, jumpForward, jumpBackward, seek, like, dislike, bookmark
13
- }
12
+ case play, pause, togglePlayPause, stop, next, previous, jumpForward, jumpBackward, seek, like, dislike, bookmark
14
13
 
15
- enum PlayState: String {
16
- case none, playing, paused, stopped
14
+ func mapToPlayerCommand(forwardJumpInterval: NSNumber?,
15
+ backwardJumpInterval: NSNumber?,
16
+ likeOptions: [String: Any]?,
17
+ dislikeOptions: [String: Any]?,
18
+ bookmarkOptions: [String: Any]?) -> RemoteCommand {
19
+ switch self {
20
+ case .stop:
21
+ return .stop
22
+ case .play:
23
+ return .play
24
+ case .pause:
25
+ return .pause
26
+ case .togglePlayPause:
27
+ return .togglePlayPause
28
+ case .next:
29
+ return .next
30
+ case .previous:
31
+ return .previous
32
+ case .seek:
33
+ return .changePlaybackPosition
34
+ case .jumpForward:
35
+ return .skipForward(preferredIntervals: [(forwardJumpInterval ?? backwardJumpInterval) ?? 15])
36
+ case .jumpBackward:
37
+ return .skipBackward(preferredIntervals: [(backwardJumpInterval ?? forwardJumpInterval) ?? 15])
38
+ case .like:
39
+ return .like(isActive: likeOptions?["isActive"] as? Bool ?? false,
40
+ localizedTitle: likeOptions?["title"] as? String ?? "Like",
41
+ localizedShortTitle: likeOptions?["title"] as? String ?? "Like")
42
+ case .dislike:
43
+ return .dislike(isActive: dislikeOptions?["isActive"] as? Bool ?? false,
44
+ localizedTitle: dislikeOptions?["title"] as? String ?? "Dislike",
45
+ localizedShortTitle: dislikeOptions?["title"] as? String ?? "Dislike")
46
+ case .bookmark:
47
+ return .bookmark(isActive: bookmarkOptions?["isActive"] as? Bool ?? false,
48
+ localizedTitle: bookmarkOptions?["title"] as? String ?? "Bookmark",
49
+ localizedShortTitle: bookmarkOptions?["title"] as? String ?? "Bookmark")
50
+ }
51
+ }
17
52
  }
@@ -18,15 +18,21 @@ struct MediaURL {
18
18
  guard let object = object else { return nil }
19
19
  originalObject = object
20
20
 
21
+ // This is based on logic found in RCTConvert NSURLRequest,
22
+ // and uses RCTConvert NSURL to create a valid URL from various formats
21
23
  if let localObject = object as? [String: Any] {
22
- let uri = localObject["uri"] as! String
23
- isLocal = uri.lowercased().contains("http") ? false : true
24
- let encodedURI = uri.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
25
- value = RCTConvert.nsurl(encodedURI.replacingOccurrences(of: "file://", with: ""))
24
+ var url = localObject["uri"] as? String ?? localObject["url"] as! String
25
+
26
+ if let bundleName = localObject["bundle"] as? String {
27
+ url = String(format: "%@.bundle/%@", bundleName, url)
28
+ }
29
+
30
+ isLocal = url.lowercased().hasPrefix("http") ? false : true
31
+ value = RCTConvert.nsurl(url)
26
32
  } else {
27
33
  let url = object as! String
28
- isLocal = url.lowercased().contains("http") ? false : true
29
- value = RCTConvert.nsurl(url.replacingOccurrences(of: "file://", with: ""))
34
+ isLocal = url.lowercased().hasPrefix("file://")
35
+ value = RCTConvert.nsurl(url)
30
36
  }
31
37
  }
32
38
  }
@@ -0,0 +1,147 @@
1
+ //
2
+ // MetadataAdapter.swift
3
+ // react-native-track-player
4
+ //
5
+ // Created by David Chavez on 01.08.23.
6
+ // Copyright © 2023 Double Symmetry. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+ import AVFoundation
11
+
12
+ typealias RawMetadataGroup = [[String: Any]]
13
+
14
+ class MetadataAdapter {
15
+ private static func getMetadataItem(metadata: [AVMetadataItem], forIdentifier: AVMetadataIdentifier) -> String? {
16
+ return AVMetadataItem.metadataItems(from: metadata, filteredByIdentifier: forIdentifier).first?.stringValue
17
+ }
18
+
19
+ private static func convertToSerializableItems(items: [AVMetadataItem]) -> RawMetadataGroup {
20
+ var rawGroup: RawMetadataGroup = []
21
+
22
+ for metadataItem in items {
23
+ var rawMetadataItem: [String: Any] = [:]
24
+ rawMetadataItem["time"] = metadataItem.time.seconds
25
+ rawMetadataItem["value"] = metadataItem.value
26
+ rawMetadataItem["key"] = metadataItem.key
27
+ if let commonKey = metadataItem.commonKey?.rawValue {
28
+ rawMetadataItem["commonKey"] = commonKey
29
+ }
30
+ if let keySpace = metadataItem.keySpace?.rawValue {
31
+ rawMetadataItem["keySpace"] = keySpace
32
+ }
33
+
34
+ rawGroup.append(rawMetadataItem)
35
+ }
36
+
37
+ return rawGroup
38
+ }
39
+
40
+ // MARK: - Public
41
+
42
+ static func convertToGroupedMetadata(metadataGroups: [AVTimedMetadataGroup]) -> RawMetadataGroup {
43
+ var ret: RawMetadataGroup = []
44
+
45
+ for metadataGroup in metadataGroups {
46
+ let entry = convertToCommonMetadata(metadata: metadataGroup.items)
47
+ ret.append(entry)
48
+ }
49
+
50
+ return ret
51
+ }
52
+
53
+ static func convertToCommonMetadata(metadata: [AVMetadataItem], skipRaw: Bool = false) -> [String: Any] {
54
+ var rawMetadataItem: [String: Any] = [:]
55
+ rawMetadataItem["title"] = getMetadataItem(metadata: metadata, forIdentifier: .commonIdentifierTitle)
56
+ rawMetadataItem["artist"] = getMetadataItem(metadata: metadata, forIdentifier: .commonIdentifierArtist)
57
+ rawMetadataItem["albumName"] = getMetadataItem(metadata: metadata, forIdentifier: .commonIdentifierAlbumName)
58
+ rawMetadataItem["subtitle"] = getMetadataItem(metadata: metadata, forIdentifier: .id3MetadataSetSubtitle)
59
+ ?? getMetadataItem(metadata: metadata, forIdentifier: .iTunesMetadataTrackSubTitle)
60
+ rawMetadataItem["description"] = getMetadataItem(metadata: metadata, forIdentifier: .commonIdentifierDescription)
61
+ rawMetadataItem["artworkUri"] = getMetadataItem(metadata: metadata, forIdentifier: .commonIdentifierArtwork)
62
+ rawMetadataItem["trackNumber"] = getMetadataItem(metadata: metadata, forIdentifier: .id3MetadataTrackNumber)
63
+ ?? getMetadataItem(metadata: metadata, forIdentifier: .iTunesMetadataTrackNumber)
64
+ rawMetadataItem["composer"] = getMetadataItem(metadata: metadata, forIdentifier: .id3MetadataComposer)
65
+ ?? getMetadataItem(metadata: metadata, forIdentifier: .iTunesMetadataComposer)
66
+ ?? getMetadataItem(metadata: metadata, forIdentifier: .quickTimeMetadataComposer)
67
+ rawMetadataItem["conductor"] = getMetadataItem(metadata: metadata, forIdentifier: .id3MetadataConductor)
68
+ ?? getMetadataItem(metadata: metadata, forIdentifier: .iTunesMetadataConductor)
69
+ rawMetadataItem["genre"] = getMetadataItem(metadata: metadata, forIdentifier: .quickTimeMetadataGenre)
70
+ rawMetadataItem["compilation"] = getMetadataItem(metadata: metadata, forIdentifier: .iTunesMetadataDiscCompilation)
71
+ rawMetadataItem["station"] = getMetadataItem(metadata: metadata, forIdentifier: .id3MetadataInternetRadioStationName)
72
+ rawMetadataItem["mediaType"] = getMetadataItem(metadata: metadata, forIdentifier: .id3MetadataMediaType)
73
+ rawMetadataItem["creationDate"] = getMetadataItem(metadata: metadata, forIdentifier: .commonIdentifierCreationDate)
74
+ rawMetadataItem["creationYear"] = getMetadataItem(metadata: metadata, forIdentifier: .id3MetadataYear)
75
+ ?? getMetadataItem(metadata: metadata, forIdentifier: .quickTimeMetadataYear)
76
+
77
+ if !skipRaw {
78
+ rawMetadataItem["raw"] = convertToSerializableItems(items: metadata)
79
+ }
80
+
81
+ return rawMetadataItem
82
+ }
83
+
84
+ @available(*, deprecated, message: "Will be removed down the line")
85
+ static func legacyConversion(metadata: [AVMetadataItem]) -> [String : String?] {
86
+ var source: String {
87
+ switch metadata.first?.keySpace {
88
+ case AVMetadataKeySpace.id3:
89
+ return "id3"
90
+ case AVMetadataKeySpace.icy:
91
+ return "icy"
92
+ case AVMetadataKeySpace.quickTimeMetadata:
93
+ return "quicktime"
94
+ case AVMetadataKeySpace.common:
95
+ return "unknown"
96
+ default: return "unknown"
97
+ }
98
+ }
99
+
100
+ let album = getMetadataItem(metadata: metadata, forIdentifier: .commonIdentifierAlbumName) ?? ""
101
+ var artist = getMetadataItem(metadata: metadata, forIdentifier: .commonIdentifierArtist) ?? ""
102
+ var title = getMetadataItem(metadata: metadata, forIdentifier: .commonIdentifierTitle) ?? ""
103
+ var date = getMetadataItem(metadata: metadata, forIdentifier: .commonIdentifierCreationDate) ?? ""
104
+ var url = "";
105
+ var genre = "";
106
+ if (source == "icy") {
107
+ url = getMetadataItem(metadata: metadata, forIdentifier: .icyMetadataStreamURL) ?? ""
108
+ } else if (source == "id3") {
109
+ if (date.isEmpty) {
110
+ date = getMetadataItem(metadata: metadata, forIdentifier: .id3MetadataDate) ?? ""
111
+ }
112
+ genre = getMetadataItem(metadata: metadata, forIdentifier: .id3MetadataContentType) ?? ""
113
+ url = getMetadataItem(metadata: metadata, forIdentifier: .id3MetadataOfficialAudioSourceWebpage) ?? ""
114
+ if (url.isEmpty) {
115
+ url = getMetadataItem(metadata: metadata, forIdentifier: .id3MetadataOfficialAudioFileWebpage) ?? ""
116
+ }
117
+ if (url.isEmpty) {
118
+ url = getMetadataItem(metadata: metadata, forIdentifier: .id3MetadataOfficialArtistWebpage) ?? ""
119
+ }
120
+ } else if (source == "quicktime") {
121
+ genre = getMetadataItem(metadata: metadata, forIdentifier: .quickTimeMetadataGenre) ?? ""
122
+ }
123
+
124
+ // Detect ICY metadata and split title into artist & title:
125
+ // - source should be either "unknown" (pre iOS 14) or "icy" (iOS 14 and above)
126
+ // - we have a title, but no artist
127
+ if ((source == "unknown" || source == "icy") && !title.isEmpty && artist.isEmpty) {
128
+ if let index = title.range(of: " - ")?.lowerBound {
129
+ artist = String(title.prefix(upTo: index));
130
+ title = String(title.suffix(from: title.index(index, offsetBy: 3)));
131
+ }
132
+ }
133
+ var data : [String : String?] = [
134
+ "title": title.isEmpty ? nil : title,
135
+ "url": url.isEmpty ? nil : url,
136
+ "artist": artist.isEmpty ? nil : artist,
137
+ "album": album.isEmpty ? nil : album,
138
+ "date": date.isEmpty ? nil : date,
139
+ "genre": genre.isEmpty ? nil : genre
140
+ ]
141
+ if (data.values.contains { $0 != nil }) {
142
+ data["source"] = source
143
+ }
144
+
145
+ return data
146
+ }
147
+ }
@@ -0,0 +1,13 @@
1
+ //
2
+ // PitchAlgorithms.swift
3
+ // RNTrackPlayer
4
+ //
5
+ // Created by Anders Lemke on 28/02/2018.
6
+ // Copyright © 2018 David Chavez. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+
11
+ enum PitchAlgorithm: String {
12
+ case linear, music, voice
13
+ }