capacitor-plugin-playlist 0.5.1 → 0.6.1

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 (127) hide show
  1. package/README.md +29 -23
  2. package/android/build.gradle +2 -4
  3. package/android/src/main/java/org/dwbn/plugins/playlist/App.kt +0 -43
  4. package/android/src/main/java/org/dwbn/plugins/playlist/PlaylistPlugin.kt +217 -153
  5. package/android/src/main/java/org/dwbn/plugins/playlist/RmxAudioPlayer.java +4 -2
  6. package/android/src/main/java/org/dwbn/plugins/playlist/manager/PlaylistManager.kt +8 -6
  7. package/android/src/main/java/org/dwbn/plugins/playlist/playlist/AudioApi.kt +20 -11
  8. package/android/src/main/java/org/dwbn/plugins/playlist/playlist/AudioPlaylistHandler.java +1 -46
  9. package/android/src/main/java/org/dwbn/plugins/playlist/playlist/BaseMediaApi.kt +4 -8
  10. package/android/src/main/java/org/dwbn/plugins/playlist/service/MediaService.kt +17 -0
  11. package/package.json +1 -1
  12. package/android/.gradle/8.0.2/checksums/checksums.lock +0 -0
  13. package/android/.gradle/8.0.2/checksums/md5-checksums.bin +0 -0
  14. package/android/.gradle/8.0.2/checksums/sha1-checksums.bin +0 -0
  15. package/android/.gradle/8.0.2/dependencies-accessors/dependencies-accessors.lock +0 -0
  16. package/android/.gradle/8.0.2/dependencies-accessors/gc.properties +0 -0
  17. package/android/.gradle/8.0.2/executionHistory/executionHistory.bin +0 -0
  18. package/android/.gradle/8.0.2/executionHistory/executionHistory.lock +0 -0
  19. package/android/.gradle/8.0.2/fileChanges/last-build.bin +0 -0
  20. package/android/.gradle/8.0.2/fileHashes/fileHashes.bin +0 -0
  21. package/android/.gradle/8.0.2/fileHashes/fileHashes.lock +0 -0
  22. package/android/.gradle/8.0.2/fileHashes/resourceHashesCache.bin +0 -0
  23. package/android/.gradle/8.0.2/gc.properties +0 -0
  24. package/android/.gradle/8.2.1/checksums/checksums.lock +0 -0
  25. package/android/.gradle/8.2.1/checksums/md5-checksums.bin +0 -0
  26. package/android/.gradle/8.2.1/checksums/sha1-checksums.bin +0 -0
  27. package/android/.gradle/8.2.1/dependencies-accessors/dependencies-accessors.lock +0 -0
  28. package/android/.gradle/8.2.1/dependencies-accessors/gc.properties +0 -0
  29. package/android/.gradle/8.2.1/executionHistory/executionHistory.bin +0 -0
  30. package/android/.gradle/8.2.1/executionHistory/executionHistory.lock +0 -0
  31. package/android/.gradle/8.2.1/fileChanges/last-build.bin +0 -0
  32. package/android/.gradle/8.2.1/fileHashes/fileHashes.bin +0 -0
  33. package/android/.gradle/8.2.1/fileHashes/fileHashes.lock +0 -0
  34. package/android/.gradle/8.2.1/gc.properties +0 -0
  35. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  36. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  37. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  38. package/android/.gradle/config.properties +0 -2
  39. package/android/.gradle/file-system.probe +0 -0
  40. package/android/.gradle/vcs-1/gc.properties +0 -0
  41. package/android/.idea/compiler.xml +0 -6
  42. package/android/.idea/gradle.xml +0 -19
  43. package/android/.idea/kotlinc.xml +0 -6
  44. package/android/.idea/migrations.xml +0 -10
  45. package/android/.idea/misc.xml +0 -9
  46. package/android/.idea/vcs.xml +0 -6
  47. package/android/bin/.gradle/8.0.2/checksums/checksums.lock +0 -0
  48. package/android/bin/.gradle/8.0.2/checksums/md5-checksums.bin +0 -0
  49. package/android/bin/.gradle/8.0.2/checksums/sha1-checksums.bin +0 -0
  50. package/android/bin/.gradle/8.0.2/dependencies-accessors/dependencies-accessors.lock +0 -0
  51. package/android/bin/.gradle/8.0.2/dependencies-accessors/gc.properties +0 -0
  52. package/android/bin/.gradle/8.0.2/executionHistory/executionHistory.bin +0 -0
  53. package/android/bin/.gradle/8.0.2/executionHistory/executionHistory.lock +0 -0
  54. package/android/bin/.gradle/8.0.2/fileChanges/last-build.bin +0 -0
  55. package/android/bin/.gradle/8.0.2/fileHashes/fileHashes.bin +0 -0
  56. package/android/bin/.gradle/8.0.2/fileHashes/fileHashes.lock +0 -0
  57. package/android/bin/.gradle/8.0.2/fileHashes/resourceHashesCache.bin +0 -0
  58. package/android/bin/.gradle/8.0.2/gc.properties +0 -0
  59. package/android/bin/.gradle/8.2.1/checksums/checksums.lock +0 -0
  60. package/android/bin/.gradle/8.2.1/checksums/md5-checksums.bin +0 -0
  61. package/android/bin/.gradle/8.2.1/checksums/sha1-checksums.bin +0 -0
  62. package/android/bin/.gradle/8.2.1/dependencies-accessors/dependencies-accessors.lock +0 -0
  63. package/android/bin/.gradle/8.2.1/dependencies-accessors/gc.properties +0 -0
  64. package/android/bin/.gradle/8.2.1/executionHistory/executionHistory.bin +0 -0
  65. package/android/bin/.gradle/8.2.1/executionHistory/executionHistory.lock +0 -0
  66. package/android/bin/.gradle/8.2.1/fileChanges/last-build.bin +0 -0
  67. package/android/bin/.gradle/8.2.1/fileHashes/fileHashes.bin +0 -0
  68. package/android/bin/.gradle/8.2.1/fileHashes/fileHashes.lock +0 -0
  69. package/android/bin/.gradle/8.2.1/gc.properties +0 -0
  70. package/android/bin/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  71. package/android/bin/.gradle/buildOutputCleanup/cache.properties +0 -2
  72. package/android/bin/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  73. package/android/bin/.gradle/config.properties +0 -2
  74. package/android/bin/.gradle/file-system.probe +0 -0
  75. package/android/bin/.gradle/vcs-1/gc.properties +0 -0
  76. package/android/bin/.idea/compiler.xml +0 -6
  77. package/android/bin/.idea/gradle.xml +0 -19
  78. package/android/bin/.idea/kotlinc.xml +0 -6
  79. package/android/bin/.idea/migrations.xml +0 -10
  80. package/android/bin/.idea/misc.xml +0 -9
  81. package/android/bin/.idea/vcs.xml +0 -6
  82. package/android/bin/.project +0 -34
  83. package/android/bin/build.gradle +0 -79
  84. package/android/bin/gradle/wrapper/gradle-wrapper.jar +0 -0
  85. package/android/bin/gradle/wrapper/gradle-wrapper.properties +0 -7
  86. package/android/bin/gradle.properties +0 -22
  87. package/android/bin/gradlew +0 -248
  88. package/android/bin/gradlew.bat +0 -92
  89. package/android/bin/local.properties +0 -8
  90. package/android/bin/proguard-rules.pro +0 -21
  91. package/android/bin/settings.gradle +0 -2
  92. package/android/bin/src/androidTest/java/com/getcapacitor/android/ExampleInstrumentedTest.class +0 -0
  93. package/android/bin/src/main/AndroidManifest.xml +0 -4
  94. package/android/bin/src/main/java/org/dwbn/plugins/playlist/App.kt +0 -62
  95. package/android/bin/src/main/java/org/dwbn/plugins/playlist/FakeR.kt +0 -39
  96. package/android/bin/src/main/java/org/dwbn/plugins/playlist/OnStatusCallback.kt +0 -34
  97. package/android/bin/src/main/java/org/dwbn/plugins/playlist/OnStatusReportListener.class +0 -0
  98. package/android/bin/src/main/java/org/dwbn/plugins/playlist/PlaylistItemOptions.class +0 -0
  99. package/android/bin/src/main/java/org/dwbn/plugins/playlist/PlaylistPlugin.kt +0 -356
  100. package/android/bin/src/main/java/org/dwbn/plugins/playlist/RmxAudioErrorType.class +0 -0
  101. package/android/bin/src/main/java/org/dwbn/plugins/playlist/RmxAudioPlayer.class +0 -0
  102. package/android/bin/src/main/java/org/dwbn/plugins/playlist/RmxAudioStatusMessage.class +0 -0
  103. package/android/bin/src/main/java/org/dwbn/plugins/playlist/RmxConstants.class +0 -0
  104. package/android/bin/src/main/java/org/dwbn/plugins/playlist/TrackRemovalItem.class +0 -0
  105. package/android/bin/src/main/java/org/dwbn/plugins/playlist/data/AudioTrack.kt +0 -94
  106. package/android/bin/src/main/java/org/dwbn/plugins/playlist/manager/MediaControlsListener.kt +0 -13
  107. package/android/bin/src/main/java/org/dwbn/plugins/playlist/manager/Options.kt +0 -77
  108. package/android/bin/src/main/java/org/dwbn/plugins/playlist/manager/PlaylistManager.kt +0 -286
  109. package/android/bin/src/main/java/org/dwbn/plugins/playlist/notification/PlaylistNotificationProvider.kt +0 -26
  110. package/android/bin/src/main/java/org/dwbn/plugins/playlist/playlist/AudioApi.kt +0 -101
  111. package/android/bin/src/main/java/org/dwbn/plugins/playlist/playlist/AudioPlaylistHandler$Builder.class +0 -0
  112. package/android/bin/src/main/java/org/dwbn/plugins/playlist/playlist/AudioPlaylistHandler.class +0 -0
  113. package/android/bin/src/main/java/org/dwbn/plugins/playlist/playlist/BaseMediaApi.kt +0 -40
  114. package/android/bin/src/main/java/org/dwbn/plugins/playlist/service/MediaImageProvider.kt +0 -79
  115. package/android/bin/src/main/java/org/dwbn/plugins/playlist/service/MediaService.kt +0 -53
  116. package/android/bin/src/main/res/.gitkeep +0 -0
  117. package/android/bin/src/main/res/drawable/ic_closed_caption_white_24dp.xml +0 -9
  118. package/android/bin/src/main/res/drawable/ic_demo_icon_adaptive.xml +0 -15
  119. package/android/bin/src/main/res/drawable/ic_launcher_background.xml +0 -48
  120. package/android/bin/src/main/res/drawable/ic_launcher_foreground.xml +0 -22
  121. package/android/bin/src/main/res/drawable/ic_notification_icon.png +0 -0
  122. package/android/bin/src/main/res/layout/bridge_layout_main.xml +0 -15
  123. package/android/bin/src/main/res/values/colors.xml +0 -3
  124. package/android/bin/src/main/res/values/strings.xml +0 -3
  125. package/android/bin/src/main/res/values/styles.xml +0 -3
  126. package/android/bin/src/test/java/com/getcapacitor/ExampleUnitTest.class +0 -0
  127. package/android/local.properties +0 -8
@@ -1,356 +0,0 @@
1
- package org.dwbn.plugins.playlist
2
-
3
- import android.util.Log
4
- import com.devbrackets.android.playlistcore.data.MediaProgress
5
- import com.getcapacitor.*
6
- import com.getcapacitor.annotation.CapacitorPlugin
7
- import org.dwbn.plugins.playlist.data.AudioTrack
8
- import org.json.JSONArray
9
- import org.json.JSONObject
10
- import java.util.*
11
-
12
- @CapacitorPlugin(name = "Playlist")
13
- class PlaylistPlugin : Plugin(), OnStatusReportListener {
14
- var TAG = "PlaylistPlugin"
15
- private var statusCallback: OnStatusCallback? = null
16
- private var audioPlayerImpl: RmxAudioPlayer? = null
17
- private var resetStreamOnPause = true
18
-
19
- override fun load() {
20
- audioPlayerImpl = RmxAudioPlayer(this, (this.context.applicationContext as App))
21
- }
22
-
23
- @PluginMethod
24
- fun initialize(call: PluginCall) {
25
- statusCallback = OnStatusCallback(this)
26
- onStatus(RmxAudioStatusMessage.RMXSTATUS_REGISTER, "INIT", null)
27
- Log.i(TAG, "Initialized...")
28
- audioPlayerImpl!!.resume()
29
- call.resolve()
30
- }
31
- @PluginMethod
32
- fun setOptions(call: PluginCall) {
33
- val options: JSObject = call.getObject("options") ?: JSObject()
34
- resetStreamOnPause = options.optBoolean("resetStreamOnPause", this.resetStreamOnPause)
35
- Log.i("AudioPlayerOptions", options.toString())
36
- audioPlayerImpl!!.resetStreamOnPause = resetStreamOnPause
37
- audioPlayerImpl!!.setOptions(options)
38
- call.resolve()
39
- }
40
-
41
- @PluginMethod
42
- fun release(call: PluginCall) {
43
- destroyResources()
44
- call.resolve()
45
- Log.i(TAG,"released")
46
- }
47
-
48
- @PluginMethod
49
- fun setLoop(call: PluginCall) {
50
- val loop: Boolean = call.getBoolean("loop", audioPlayerImpl!!.playlistManager.loop)!!
51
- audioPlayerImpl!!.playlistManager.loop = loop
52
- call.resolve()
53
- Log.i(TAG,"setLoop: " + (if (loop) "TRUE" else "FALSE"))
54
- }
55
-
56
- @PluginMethod
57
- fun setPlaylistItems(call: PluginCall) {
58
- val items: JSArray = call.getArray("items")
59
- val optionsArgs: JSONObject = call.getObject("options")
60
- val options = PlaylistItemOptions(optionsArgs)
61
-
62
- val trackItems: ArrayList<AudioTrack> = getTrackItems(items)
63
- audioPlayerImpl!!.playlistManager.setAllItems(trackItems, options)
64
- for (playerItem in trackItems) {
65
- if (playerItem.trackId != null) {
66
- onStatus(RmxAudioStatusMessage.RMXSTATUS_ITEM_ADDED, playerItem.trackId, playerItem.toDict())
67
- }
68
- }
69
-
70
- call.resolve()
71
-
72
- Log.i(TAG,"setPlaylistItems" + items.length().toString())
73
- }
74
-
75
- @PluginMethod
76
- fun addItem(call: PluginCall) {
77
- val item: JSONObject = call.getObject("item")
78
- val playerItem: AudioTrack? = getTrackItem(item)
79
- audioPlayerImpl!!.getPlaylistManager().addItem(playerItem)
80
-
81
-
82
- if (playerItem?.trackId != null) {
83
- onStatus(RmxAudioStatusMessage.RMXSTATUS_ITEM_ADDED, playerItem.trackId, playerItem.toDict())
84
- }
85
- call.resolve()
86
- Log.i(TAG,"addItem")
87
- }
88
-
89
- @PluginMethod
90
- fun addAllItems(call: PluginCall) {
91
- val items: JSONArray = call.getArray("items")
92
- val trackItems = getTrackItems(items)
93
- audioPlayerImpl!!.playlistManager.addAllItems(trackItems)
94
-
95
- for (playerItem in trackItems) {
96
- if (playerItem.trackId != null) {
97
- onStatus(RmxAudioStatusMessage.RMXSTATUS_ITEM_ADDED, playerItem.trackId, playerItem.toDict())
98
- }
99
- }
100
- call.resolve()
101
- Log.i(TAG,"addAllItems")
102
- }
103
-
104
- @PluginMethod
105
- fun removeItem(call: PluginCall) {
106
- val trackIndex: Int = call.getInt("index", -1)!!
107
- val trackId: String = call.getString("id", "")!!
108
- Log.i(TAG,"removeItem trackIn" )
109
- val item = audioPlayerImpl!!.playlistManager.removeItem(trackIndex, trackId)
110
-
111
- if (item != null) {
112
- onStatus(RmxAudioStatusMessage.RMXSTATUS_ITEM_REMOVED, item.trackId, item.toDict())
113
- call.resolve()
114
- }
115
- else {
116
- call.reject("Could not find item!")
117
- }
118
- }
119
-
120
- @PluginMethod
121
- fun removeItems(call: PluginCall) {
122
- val items: JSONArray = call.getArray("items")
123
- var removed = 0
124
-
125
- val removals = ArrayList<TrackRemovalItem>()
126
- for (index in 0 until items.length()) {
127
- val entry = items.optJSONObject(index) ?: continue
128
- val trackIndex = entry.optInt("trackIndex", -1)
129
- val trackId = entry.optString("trackId", "")
130
- removals.add(TrackRemovalItem(trackIndex, trackId))
131
- val removedTracks = audioPlayerImpl!!.playlistManager.removeAllItems(removals)
132
- if (removedTracks.size > 0) {
133
- for (removedItem in removedTracks) {
134
- onStatus(RmxAudioStatusMessage.RMXSTATUS_ITEM_REMOVED, removedItem.trackId, removedItem.toDict())
135
- }
136
- removed = removedTracks.size
137
- }
138
- }
139
-
140
- val result = JSObject()
141
- result.put("removed", removed)
142
- call.resolve(result)
143
-
144
- Log.i(TAG,"removeItems")
145
- }
146
-
147
- @PluginMethod
148
- fun clearAllItems(call: PluginCall) {
149
- audioPlayerImpl!!.playlistManager.clearItems()
150
-
151
- onStatus(RmxAudioStatusMessage.RMXSTATUS_PLAYLIST_CLEARED, "INVALID", null)
152
- call.resolve()
153
-
154
- Log.i(TAG,"clearAllItems")
155
- }
156
-
157
- @PluginMethod
158
- fun play(call: PluginCall) {
159
- if (audioPlayerImpl!!.playlistManager.playlistHandler != null) {
160
- val isPlaying = (audioPlayerImpl!!.playlistManager.playlistHandler?.currentMediaPlayer != null
161
- && audioPlayerImpl!!.playlistManager.playlistHandler?.currentMediaPlayer?.isPlaying!!)
162
- // There's a bug in the threaded repeater that it stacks up the repeat calls instead of ignoring
163
- // additional ones or starting a new one. E.g. every time this is called, you'd get a new repeat cycle,
164
- // meaning you get N updates per second. Ew.
165
- if (!isPlaying) {
166
- audioPlayerImpl!!.playlistManager.playlistHandler?.play()
167
- //audioPlayerImpl.getPlaylistManager().playlistHandler.seek(position)
168
- }
169
- }
170
-
171
- call.resolve()
172
-
173
- Log.i(TAG,"play")
174
- }
175
-
176
- @PluginMethod
177
- fun playTrackByIndex(call: PluginCall) {
178
- val index: Int = call.getInt("index", audioPlayerImpl!!.playlistManager.currentPosition)!!
179
- val seekPosition = (call.getInt("position", 0)!! * 1000.0).toLong()
180
-
181
- audioPlayerImpl!!.playlistManager.currentPosition = index
182
- audioPlayerImpl!!.playlistManager.beginPlayback(seekPosition, false)
183
-
184
- call.resolve()
185
-
186
- Log.i(TAG,"playTrackByIndex")
187
- }
188
-
189
- @PluginMethod
190
- fun playTrackById(call: PluginCall) {
191
- val id: String = call.getString("id")!!
192
- if ("" != id) {
193
- // alternatively we could search for the item and set the current index to that item.
194
- val code = id.hashCode()
195
- val seekPosition = (call.getInt("position", 0)!! * 1000.0).toLong()
196
- audioPlayerImpl!!.playlistManager.setCurrentItem(code.toLong())
197
- audioPlayerImpl!!.playlistManager.beginPlayback(seekPosition, false)
198
- }
199
-
200
- call.resolve()
201
-
202
- Log.i(TAG,"playTrackById")
203
- }
204
-
205
- @PluginMethod
206
- fun selectTrackByIndex(call: PluginCall) {
207
- val index: Int = call.getInt("index", audioPlayerImpl!!.playlistManager.currentPosition)!!
208
-
209
- audioPlayerImpl!!.playlistManager.currentPosition = index
210
-
211
- val seekPosition = (call.getInt("position", 0)!! * 1000.0).toLong()
212
-
213
- audioPlayerImpl!!.playlistManager.beginPlayback(seekPosition, true)
214
-
215
- call.resolve()
216
-
217
- Log.i(TAG,"selectTrackByIndex")
218
- }
219
-
220
-
221
- @PluginMethod
222
- fun selectTrackById(call: PluginCall) {
223
- val id: String = call.getString("id")!!
224
- if ("" != id) {
225
- // alternatively we could search for the item and set the current index to that item.
226
- val code = id.hashCode()
227
- audioPlayerImpl!!.playlistManager.setCurrentItem(code.toLong())
228
-
229
- val seekPosition = (call.getInt("position", 0)!! * 1000.0).toLong()
230
-
231
- audioPlayerImpl!!.playlistManager.beginPlayback(seekPosition, true)
232
- }
233
- call.resolve()
234
-
235
- Log.i(TAG,"selectTrackById")
236
- }
237
-
238
- @PluginMethod
239
- fun pause(call: PluginCall) {
240
- audioPlayerImpl!!.playlistManager.invokePausePlay()
241
-
242
- call.resolve()
243
-
244
- Log.i(TAG,"pause")
245
- }
246
-
247
- @PluginMethod
248
- fun skipForward(call: PluginCall) {
249
- audioPlayerImpl!!.playlistManager.invokeNext()
250
-
251
- call.resolve()
252
-
253
- Log.i(TAG,"skipForward")
254
- }
255
-
256
- @PluginMethod
257
- fun skipBack(call: PluginCall) {
258
- audioPlayerImpl!!.playlistManager.invokePrevious()
259
-
260
- call.resolve()
261
-
262
- Log.i(TAG,"skipBack")
263
- }
264
-
265
- @PluginMethod
266
- fun seekTo(call: PluginCall) {
267
- var position: Long = 0
268
- val progress: MediaProgress? = audioPlayerImpl!!.playlistManager.currentProgress
269
- if (progress != null) {
270
- position = progress.position
271
- }
272
-
273
- val seekPosition = (call.getInt("position", (position / 1000.0f).toInt())!! * 1000.0).toLong()
274
-
275
- val isPlaying: Boolean? = audioPlayerImpl!!.playlistManager.playlistHandler?.currentMediaPlayer?.isPlaying
276
- audioPlayerImpl!!.playlistManager.playlistHandler?.seek(seekPosition)
277
- if (isPlaying === null || !isPlaying) {
278
- audioPlayerImpl!!.playlistManager.playlistHandler?.pause(false)
279
- }
280
-
281
- call.resolve()
282
-
283
- Log.i(TAG,"seekTo")
284
- }
285
-
286
- @PluginMethod
287
- fun setPlaybackRate(call: PluginCall) {
288
- val speed = call.getFloat("rate", audioPlayerImpl!!.playlistManager.getPlaybackSpeed())!!
289
- audioPlayerImpl!!.playlistManager.setPlaybackSpeed(speed)
290
-
291
- call.resolve()
292
-
293
- Log.i(TAG,"setPlaybackRate")
294
- }
295
-
296
- @PluginMethod
297
- fun setVolume(call: PluginCall) {
298
- val volume = call.getFloat("volume", audioPlayerImpl!!.volume)!!
299
- audioPlayerImpl!!.volume = volume
300
-
301
- call.resolve()
302
-
303
- Log.i(TAG,"addItem")
304
- }
305
-
306
- override fun handleOnDestroy() {
307
- Log.d(TAG, "Plugin destroy")
308
- super.handleOnDestroy()
309
- destroyResources()
310
- }
311
-
312
- override fun onError(errorCode: RmxAudioErrorType?, trackId: String?, message: String?) {
313
- if (statusCallback == null) {
314
- return
315
- }
316
- val errorObj = OnStatusCallback.createErrorWithCode(errorCode, message)
317
- onStatus(RmxAudioStatusMessage.RMXSTATUS_ERROR, trackId, errorObj)
318
- }
319
-
320
- override fun onStatus(what: RmxAudioStatusMessage, trackId: String?, param: JSONObject?) {
321
- if (statusCallback == null) {
322
- return
323
- }
324
- statusCallback!!.onStatus(what, trackId, param)
325
- }
326
-
327
- private fun destroyResources() {
328
- statusCallback = null
329
- audioPlayerImpl!!.playlistManager.clearItems()
330
- }
331
-
332
- private fun getTrackItem(item: JSONObject?): AudioTrack? {
333
- if (item != null) {
334
- val track = AudioTrack(item)
335
- return if (track.trackId != null) {
336
- track
337
- } else null
338
- }
339
- return null
340
- }
341
- private fun getTrackItems(items: JSONArray?): ArrayList<AudioTrack> {
342
- val trackItems = ArrayList<AudioTrack>()
343
- if (items != null && items.length() > 0) {
344
- for (index in 0 until items.length()) {
345
- val obj = items.optJSONObject(index)
346
- val track: AudioTrack = getTrackItem(obj) ?: continue
347
- trackItems.add(track)
348
- }
349
- }
350
- return trackItems
351
- }
352
-
353
- fun emit(name: String, data: JSObject) {
354
- this.notifyListeners(name, data, true)
355
- }
356
- }
@@ -1,94 +0,0 @@
1
- package org.dwbn.plugins.playlist.data
2
-
3
- import com.devbrackets.android.playlistcore.annotation.SupportedMediaType
4
- import com.devbrackets.android.playlistcore.api.PlaylistItem
5
- import com.devbrackets.android.playlistcore.manager.BasePlaylistManager
6
- import org.json.JSONException
7
- import org.json.JSONObject
8
-
9
- class AudioTrack (private val config: JSONObject) : PlaylistItem {
10
- var bufferPercentFloat = 0f
11
- set(buff) {
12
- // There is a bug in MediaProgress where if bufferPercent == 100 it sets bufferPercentFloat
13
- // to 100 instead of to 1.
14
- field = Math.min(Math.max(bufferPercentFloat, buff), 1f)
15
- }
16
- var bufferPercent = 0
17
- set(buff) {
18
- field = Math.max(bufferPercent, buff)
19
- }
20
- var duration: Long = 0
21
- set(dur) {
22
- field = Math.max(0, dur)
23
- }
24
-
25
- fun toDict(): JSONObject {
26
- val info = JSONObject()
27
- try {
28
- info.put("trackId", trackId)
29
- info.put("isStream", isStream)
30
- info.put("assetUrl", mediaUrl)
31
- info.put("albumArt", thumbnailUrl)
32
- info.put("artist", artist)
33
- info.put("album", album)
34
- info.put("title", title)
35
- } catch (e: JSONException) {
36
- // I can think of no reason this would ever fail
37
- }
38
- return info
39
- }
40
-
41
- override val id: Long
42
- get() =
43
- if (trackId == null) {
44
- 0
45
- } else trackId.hashCode().toLong()
46
-
47
- val isStream: Boolean
48
- get() = config.optBoolean("isStream", false)
49
-
50
- val trackId: String?
51
- get() {
52
- val trackId = config.optString("trackId")
53
- return if (trackId == "") {
54
- null
55
- } else trackId
56
- }
57
-
58
- // Would really like to set this to true once the cache has it...
59
- override val downloaded: Boolean
60
- get() = false // Would really like to set this to true once the cache has it...
61
-
62
- // ... at which point we can return a value here.
63
- override val downloadedMediaUri: String?
64
- get() = null // ... at which point we can return a value here.
65
-
66
- @get:SupportedMediaType
67
- override val mediaType: Int
68
- get() = BasePlaylistManager.AUDIO
69
-
70
- override val mediaUrl: String
71
- get() = config.optString("assetUrl", "")
72
-
73
- // we should have a good default here.
74
- override val thumbnailUrl: String?
75
- get() {
76
- val albumArt = config.optString("albumArt")
77
- return if (albumArt == "") {
78
- null
79
- } else albumArt // we should have a good default here.
80
- }
81
-
82
- override val artworkUrl: String?
83
- get() = thumbnailUrl
84
-
85
- override val title: String
86
- get() = config.optString("title")
87
-
88
- override val album: String
89
- get() = config.optString("album")
90
-
91
- override val artist: String
92
- get() = config.optString("artist")
93
-
94
- }
@@ -1,13 +0,0 @@
1
- package org.dwbn.plugins.playlist.manager
2
-
3
- import org.dwbn.plugins.playlist.data.AudioTrack
4
-
5
- /*
6
- * Interface to enable the PlaylistManager to send these events out.
7
- * We could add more like play/pause/toggle/stop, but right now there
8
- * are other ways to get all the other information.
9
- */
10
- interface MediaControlsListener {
11
- fun onNext(currentItem: AudioTrack?, currentIndex: Int)
12
- fun onPrevious(currentItem: AudioTrack?, currentIndex: Int)
13
- }
@@ -1,77 +0,0 @@
1
- /*
2
- * Apache 2.0 License
3
- *
4
- * Copyright (c) Sebastian Katzer 2017
5
- *
6
- * This file contains Original Code and/or Modifications of Original Code
7
- * as defined in and that are subject to the Apache License
8
- * Version 2.0 (the 'License'). You may not use this file except in
9
- * compliance with the License. Please obtain a copy of the License at
10
- * http://opensource.org/licenses/Apache-2.0/ and read it before using this
11
- * file.
12
- *
13
- * The Original Code and all software distributed under the License are
14
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18
- * Please see the License for the specific language governing rights and
19
- * limitations under the License.
20
- */
21
- package org.dwbn.plugins.playlist.manager
22
-
23
- import android.content.Context
24
- import org.json.JSONObject
25
-
26
- class Options {
27
- /**
28
- * Wrapped JSON object.
29
- */
30
- // The original JSON object
31
- val dict: JSONObject
32
-
33
- /**
34
- * Application context.
35
- */
36
- // The application context
37
- val context: Context
38
-
39
- /**
40
- * Constructor
41
- *
42
- * @param context The application context.
43
- */
44
- constructor(context: Context) {
45
- this.context = context
46
- dict = JSONObject()
47
- }
48
-
49
- /**
50
- * Constructor
51
- *
52
- * @param context The application context.
53
- * @param options The options dict map.
54
- */
55
- constructor(context: Context, options: JSONObject) {
56
- this.context = context
57
- dict = options
58
- }
59
-
60
- /**
61
- * JSON object as string.
62
- */
63
- override fun toString(): String {
64
- return dict.toString()
65
- }
66
-
67
- /**
68
- * icon resource ID for the local notification.
69
- */
70
- val icon: String
71
- get() = dict.optString("icon", DEFAULT_ICON)
72
-
73
- companion object {
74
- // Default icon path
75
- private const val DEFAULT_ICON = "icon"
76
- }
77
- }