Add following in build.gradle (Project level):
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Add following in build.gradle (App level):
dependencies {
implementation 'com.github.rever-ai:goonj:0.5.8'
// Exo Player
implementation 'com.google.android.exoplayer:exoplayer-core:2.10.3'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.10.3'
implementation 'com.google.android.exoplayer:extension-mediasession:2.10.0'
// Rx
implementation "io.reactivex.rxjava2:rxkotlin:2.4.0"
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
}
To register Goonj, add following line:
Goonj.register<AudioPlayerActivity>(context)
where AudioPlayerActivity is activity that will open on clicking Notification.
To unregister Goonj, add following line:
Goonj.unregister()
To use player actions, implement GoonjPlayer interface or use Goonj singleton instance
class AudioPlayerActivity : AppCompatActivity(), GoonjPlayer
....
someMethod()
val property = someProperty
....
Goonj.someMethod() or Goonj.someProperty
| Method/Property | Description |
|---|---|
| startNewSession() | Starts a new Audio Session. Clears existing playlist. |
| resume() | Resume the player. |
| pause() | Pauses the player. |
| finishTrack() | Manual finish track. |
| seekTo(positionMs: Long) | Seek by a certain position, could be used with trackPosition to move forward or backward. |
| addTrack(track : Track, index: Int? = null) | Add an audio to playlist. |
| removeTrack(index : Int) | Removes track from current Index in the playlist. |
| moveTrack(currentIndex : Int, finalIndex : Int) | Moves a particular track from one place in the playlist to another. |
| skipToNext() | Skip to next track. |
| skipToPrevious() | Skip to previous track. |
| customiseNotification(useNavigationAction: Boolean, usePlayPauseAction: Boolean, fastForwardIncrementMs: Long, rewindIncrementMs: Long, smallIcon: Int) | Customise notification which appear while playing. |
| changeActivityIntentForNotification(intent: Intent) | Set activity on notification click. |
| removeNotification() | Remove notification. |
| register(context: Context) | Simplest way to register Goonj. |
| register(context: Context, activityIntent: Intent) | Extras with intent could be sent. |
| register<S: GoonjService>(context: Context, activityIntent: Intent, audioServiceClass: Class |
Advanced registration for custom AudioService implementation. |
| unregister() | unregister Goonj |
| imageLoader | Track image loader, used to load image in notification (((Track, (Bitmap?) -> Unit) -> Unit)) |
| tryPreFetchAtProgress | Try pre-fetching at track progress |
| trackPreFetcher | Track pre-fetcher, which could be used to load further tracks |
| preFetchDistanceWithAutoplay | Try pre-fetching when this much track left to play, while on autoplay |
| preFetchDistanceWithoutAutoplay | Try pre-fetching when this much track left to play, while not on autoplay |
| autoplay | Enable autoplay with auto-fetch tracks, could be used get current state of autoplay. |
| trackList | Get current playlist. |
| playerState | Get player state (GoonjPlayerState). |
| currentTrack | Get current track (Track). |
| lastCompletedTrack | Get last completed track (Track). |
| trackPosition | Get current track position in milli-seconds (Long). |
| trackProgress | Get current track progress between 0 to 1 (Double). |
| playerStateFlowable | Flowable of (GoonjPlayerState) that tells if the Player state. Helps in updating Play/Pause Icon/Button in UI. |
| currentTrackFlowable | Flowable of (Track) that contains details of the Current Track that is playing. |
| autoplayFlowable | Flowable of (Track) that contains details of the Current Track that is playing. |
| downloadStateFlowable | Flowable of (DownloadState). |
| isDownloaded(trackId: String) | Check if given track is downloaded. |
| trackCompletionObservable | Observable of (Track) that get completed after subscription. |
| iconWhileDownload | Drawable int used as icon while download active in notification. |
| maxCacheBytes | Max cache size in bytes. |
Feature under development