Change Log¶
[1.4.0.2017001]¶
Changed¶
- (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.
Removed¶
- (kohii-core): jcenter repository and its usage.
[1.3.0.x]¶
This version is skipped.
[1.2.0.2011008]¶
Added¶
- (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.
Changed¶
- (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)
Removed¶
- (kohii-exoplayer): Remove
ExoPlayerProvider
and its default implementation. - (kohii-androidx): Remove
MediaPlayerProvider
and its default implementation.
[1.1.1.2011003]¶
Added¶
- Fix an issue that cause cache doesn't write to file (https://github.com/eneim/kohii/pull/91);
[1.1.0.2011003]¶
- 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
.
[1.0.0.2010004]¶
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()
1.0.0.2010004-beta.5¶
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.
1.0.0.2010004-beta.3¶
2019.12.18
This is the very first release that is documented. Please visit document page for detail.
- First public beta release.