react-native-nitro-player 1.7.0-alpha.4 → 1.7.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/android/src/main/AndroidManifest.xml +8 -0
  2. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrary.kt +51 -0
  3. package/android/src/main/java/com/margelo/nitro/nitroplayer/connection/AndroidAutoConnectionDetector.kt +2 -2
  4. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/ExoPlayerCore.kt +17 -2
  5. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/NitroPlayerLogger.kt +2 -2
  6. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerAndroidAuto.kt +41 -31
  7. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCast.kt +1 -1
  8. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +47 -2
  9. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerListener.kt +10 -17
  10. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerNotify.kt +5 -0
  11. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerPlayback.kt +3 -1
  12. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerQueueBuild.kt +16 -1
  13. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerRecovery.kt +97 -0
  14. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerSetup.kt +0 -5
  15. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerUrlLoader.kt +15 -2
  16. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadDatabase.kt +3 -0
  17. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/TrackItemJson.kt +6 -0
  18. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/CastSessionController.kt +2 -0
  19. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaBrowserService.kt +96 -45
  20. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaLibrary.kt +2 -0
  21. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaLibraryManager.kt +147 -0
  22. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaLibraryParser.kt +3 -0
  23. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaSessionCallbackFactory.kt +102 -24
  24. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaSessionManager.kt +44 -2
  25. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/PlaybackService.kt +57 -1
  26. package/android/src/main/java/com/margelo/nitro/nitroplayer/playlist/PlaylistManager.kt +15 -0
  27. package/lib/index.js +5 -1
  28. package/lib/specs/AndroidAutoMediaLibrary.nitro.d.ts +12 -0
  29. package/lib/types/AndroidAutoMediaLibrary.d.ts +11 -0
  30. package/lib/utils/androidAutoMediaLibrary.d.ts +13 -1
  31. package/lib/utils/androidAutoMediaLibrary.js +23 -0
  32. package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +6 -0
  33. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  34. package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
  35. package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string.hpp +76 -0
  36. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.cpp +29 -0
  37. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.hpp +6 -0
  38. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void.kt +80 -0
  39. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__string.kt +80 -0
  40. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__string_std__string.kt +80 -0
  41. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrarySpec.kt +44 -0
  42. package/nitrogen/generated/shared/c++/HybridAndroidAutoMediaLibrarySpec.cpp +6 -0
  43. package/nitrogen/generated/shared/c++/HybridAndroidAutoMediaLibrarySpec.hpp +7 -0
  44. package/package.json +1 -1
  45. package/src/index.ts +9 -1
  46. package/src/specs/AndroidAutoMediaLibrary.nitro.ts +18 -0
  47. package/src/types/AndroidAutoMediaLibrary.ts +24 -0
  48. package/src/utils/androidAutoMediaLibrary.ts +48 -1
@@ -1,6 +1,24 @@
1
- import type { MediaLibrary } from '../types/AndroidAutoMediaLibrary'
1
+ import type {
2
+ MediaItem,
3
+ MediaLibrary,
4
+ SessionButton,
5
+ } from '../types/AndroidAutoMediaLibrary'
2
6
  import { AndroidAutoMediaLibrary as AndroidAutoMediaLibraryModule } from '../index'
3
7
 
8
+ type ItemsProvider = (
9
+ argument: string
10
+ ) => Promise<MediaItem[] | null | undefined>
11
+
12
+ const answer = (requestId: string, provide: () => ReturnType<ItemsProvider>) =>
13
+ provide()
14
+ .catch(() => null)
15
+ .then((items) =>
16
+ AndroidAutoMediaLibraryModule?.resolveRequest(
17
+ requestId,
18
+ JSON.stringify(items ?? [])
19
+ )
20
+ )
21
+
4
22
  /**
5
23
  * Helper utilities for Android Auto Media Library
6
24
  * Android-only functionality
@@ -57,6 +75,35 @@ export const AndroidAutoMediaLibraryHelper = {
57
75
  AndroidAutoMediaLibraryModule.clearMediaLibrary()
58
76
  },
59
77
 
78
+ /** Children of folders published with `children: []`; playable ids are `${playlistId}:${trackId}`, empty after 10s. Register at module scope: the car can start the app without UI. */
79
+ setChildrenLoader: (loader: ItemsProvider): void => {
80
+ AndroidAutoMediaLibraryModule?.onLoadChildren((requestId, parentId) =>
81
+ answer(requestId, () => loader(parentId))
82
+ )
83
+ },
84
+
85
+ /** Answers car searches and unmatched voice requests (first playable result plays); search shows from the next connection. */
86
+ setSearchHandler: (handler: ItemsProvider): void => {
87
+ AndroidAutoMediaLibraryModule?.onSearch((requestId, query) =>
88
+ answer(requestId, () => handler(query))
89
+ )
90
+ },
91
+
92
+ /** Buttons beside the transport controls in Android Auto and the notification; call again to change their state. */
93
+ setSessionButtons: (buttons: SessionButton[]): void => {
94
+ AndroidAutoMediaLibraryModule?.setSessionButtons(JSON.stringify(buttons))
95
+ },
96
+
97
+ /** Called with the pressed button's `action`. */
98
+ onSessionButtonPress: (callback: (action: string) => void): void => {
99
+ AndroidAutoMediaLibraryModule?.onSessionButtonPress(callback)
100
+ },
101
+
102
+ /** Car auto-play or play-on-connect found nothing loaded: restore your last queue (playback starts once it is loaded). */
103
+ onPlaybackResumption: (callback: () => void): void => {
104
+ AndroidAutoMediaLibraryModule?.onPlaybackResumption(callback)
105
+ },
106
+
60
107
  /**
61
108
  * Check if Android Auto Media Library is available (Android only)
62
109
  */