- (kohii-core): ExoPlayer 2.18.5, Kotlin 1.8.10, Target Android SDK 33.
- (kohii-exoplayer): ExoPlayer 2.18.5.
- (kohii-exoplayer): Add implementations for StyledPlayerView and deprecate those for (deprecated) PlayerView.
- (kohii-experiments): YouTube experiment that uses the (deprecated) Official YouTube Player API.
- (kohii-sample): Demo using the Official YouTube Player API.
- (kohii-exoplayer): DefaultTrackSelectorHolder is removed.
- (kohii-core): Compatible with ExoPlayer 2.17.1.
- (kohii-core): Target SDK and Compile SDK are updated to 32.
- (kohii-core): Kotlin 1.6.21.
- (kohii-exoplayer): ExoPlayer is updated to 2.17.1.
- (kohii-core): jcenter repository and its usage.
This version is skipped.
- (kohii-core): Add
PlayerPool
implementation. - (kohii-core): Expose
Playback.lock
flag. - (kohii-exoplayer): Add
ExoPlayerPool
that extendsPlayerPool
and replace theExoPlayerProvider
. - (kohii-androidx): Add
MediaPlayerPool
that extendsPlayerPool
and replace theMediaPlayerProvider
. - (kohii-ads): Initial implementation using ExoPlayer and Ima Extension API.
- (kohii-core): Update selection logic. If there is a Playback started manually, the Selector will receive that Playback, otherwise it receives the default candidates.
- (kohii-exoplayer): ExoPlayer is updated to 2.11.8.
- (kohii-exoplayer): Use default CacheDataSourceFactory, which uses default fragment size of 5MB.
- (kohii-exoplayer): DefaultMediaSourceFactoryProvider now accepts nullable DrmSessionManagerProvider.
- (kohii-exoplayer): Default ExoPlayer implementation will always update the AudioAttributes when the Volume setting is called.
- (kohii-core): Always use LOW memory mode if system needs it. (#127)
- (kohii-core): Using ProcessLifecycleOwner instead of screen state broadcast for system-wide toggle the playback. (#125)
- (kohii-exoplayer): Remove
ExoPlayerProvider
and its default implementation. - (kohii-androidx): Remove
MediaPlayerProvider
and its default implementation.
- Fix an issue that cause cache doesn't write to file (#91);
-
ExoPlayer: 2.11.3
-
Support multiple playback. Check out docs and recipe for more information.
-
Experimental manual playback. Read more here .
-
Add method
Kohii.createControlDispatcher(Playback)
. Read more here . -
Introduce
PlayableObserver
, Read more here. -
Introduce
activeLifecycleState
setting for the Manager. Default toState.STARTED
. All the playbacks in a Manager can be played only if the lifecycle state of the Manager is at least this value. -
Experimental
PlayerParameters
,NetworkTypeChangeListener
: the callback from aNetworkTypeChangeListener
needs to return aPlayerParameters
value so that the player can switch the video/audio quality, resolution, etc. -
Deprecate the
VideoSize
. Its value is no longer used anymore in the library. -
Experimental
initialPlaybackInfo
setting for the Binder. Setting this value will allow the Playback to start from a specificPlaybackInfo
value. -
Experimental
releaseOnInActive
setting for the Binder. Setting this to false will let the Playback keep its state when it is inactive, but not yet detached from the Manager. -
Add method
Playback.Controller.setupRenderer(Playback, Any?)
andPlayback.Controller.teardownRenderer(Playback, Any?)
. Client can configure the renderer with custom manual control logic. -
Support Playback locking: if a Playback is locked, it will still be selected but will not be played.
-
Add
ExoPlayerCache
to thekohii-exoplayer
package. It can be used to obtain a pre-built Cache easily. -
Add
TrackSelectorFactory
,LoadControlFactory
to thekohii-exoplayer
package. -
Add
ExoPlayerConfig
to gather most of the detailed setting for aSimpleExoPlayer
instance. -
Add
createKohii
convenient methods to easily createKohii
instance with custom parameters. -
Add
Engine.lock*
andEngine.unlock*
methods to support manual lock/unlock an Activity/Manager/Bucket or Playback. -
Add a simple demonstration that builds TikTok-alike UI/UX: source code.
-
Another document hub for Kohii: https://www.notion.so/The-Kohii-Library-c89a75e2df2b485391b425b5dc83adce
-
[Breaking] Rename
Playable#considerRequestRenderer
->Playable#setupRenderer
. -
[Breaking] Rename
Playable#considerReleaseRenderer
->Playable#teardownRenderer
. -
[Breaking]
RendererProvider#releaseRenderer
now needs to return a boolean. -
[Breaking]
Playback#addCallback
andPlayback#removeCallback
are now internal. -
[Breaking] The
DefaultControlDispatcher
is now internal. -
[Breaking] Include Playback in the
ArtworkHintListener#onArtworkHint
. -
[Breaking] Remove default implementations for
BandwidthMeterFactory
.
2020.03.15
- Open
Builder
forKohii
andLatte
. Clients can now use custom implementations to construct those classes. Example usages:
val kohii = Kohii.Builder(context)
.setPlayableCreator(customPlayableCreator)
.build()
Experiment release for Bucket.Selector
, usage is not finalized yet. Currently it is proved to
allow select multiple Playbacks for a Bucket, but finally only one Playback will be picked to play
by the Group.
- Add
@JvmOverloads
annotation to support calling from Java. - Other internal improvements.
2019.12.18
This is the very first release that is documented. Please visit document page for detail.
- First public beta release.