Release Notes
3.0.17
Release Date: 2026-06-09
Fixed
- Fixed -8615 error when switching to main content after playing a short intro
- Reproduction path: When the pre-load of the main content is not complete, a short intro video of around 2 seconds finishes playing and transitions to the main content playback point, causing a -8615 error
- Reason for change: Fix -8615 error
- Scope of impact: None
- App change required: None
3.0.16
Release Date: 2026-05-27
Added APIs
- Added multiple audio track selection feature
// MediaPlayer Class
public void selectAudio(String language);
// Audio track info query API (can be called after receiving MediaPlayer.onPrepared() event)
public MediaPlayerBase.TrackInfo[] getTrackInfo();TrackInfointernal methodspublic int getTrackType();
public String getLanguage();- Track types
MEDIA_TRACK_TYPE_UNKNOWNMEDIA_TRACK_TYPE_VIDEOMEDIA_TRACK_TYPE_AUDIOMEDIA_TRACK_TYPE_TIMEDTEXT
- Reason for change: Support multiple audio tracks
- Scope of impact: None
- App change required: None
Deleted APIs
- Removed
MediaPlay.erreleaseWhenFinishingmethod- Reason for change: No longer in use
- Scope of impact: None
- App change required: None
Fixed
-
Fixed -8028 error occurring when playing new content during playback
- Reason for change: Side effect from the ANR prevention patch applied when exiting during buffering in v3.0.12
- Scope of impact: None
- App change required: None
-
Added defensive code for DRM callback data validation
- Reason for change: Defense against player crash when
expiration_date,expiration_count,expiration_playtimevalues are received as strings instead of integers - Scope of impact: None
- App change required: None
- Reason for change: Defense against player crash when
-
Fixed bug where incorrect error code was delivered to
onErrorwhen playing expired DRM content- Reason for change: Fixed a bug where an incorrect error code was passed to the player
onErrorevent delegate when downloaded content expired due to accumulatedexpiration_countorexpiration_playtime(supplement to v3.0.4 bug) - Scope of impact: None
- App change required: None
- Reason for change: Fixed a bug where an incorrect error code was passed to the player
-
Changed calculation basis for LMS statistics data (
runtime,showtime)- Reason for change: When the device's system clock changes during playback, LMS statistics become inaccurate, so the time measurement basis was changed from the device system clock to the actual elapsed time since device boot
- Scope of impact: None
- App change required: None
3.0.15
Release Date: 2026-04-14
Fixed
- Improved ANR (App Not Responding) issue when exiting the player during buffering in a weak signal area
- Reproduction path: ANR occurs when entering airplane mode during streaming playback > performing seek operation > exiting the player
- Reason for change: Improve ANR issue when exiting the player during buffering
- Scope of impact: None
- App change required: None
3.0.14
Release Date: 2026-03-19
Added Features
-
Live concurrent viewer count reporting transmission
- Reason for change: To collect detailed statistics on live concurrent viewer counts
- Scope of impact: None
- App change required: None
-
Live unauthorized IP playback blocking
- Reason for change: Defense against live playback link exposure
- Scope of impact: None
- App change required: None
-
Modified to send log messages including error stack trace when reporting error logs to Kibana
- Reason for change: Detailed information needed when errors occur due to exceptions
- Scope of impact: None
- App change required: None
3.0.13
Release Date: 2026-01-26
Added APIs
- Added
playback_limitfeature// KollusContent Class
public int getPlaybackLimitDuration();
public String getPlaybackLimitMessage();- Reason for change: Reflects customer requirements for playback up to a specific UTC time
- Scope of impact: None
- App change required: None
Added Features
- Event data collection for content download feature
- Reason for change: Collect statistics related to content downloads
- Scope of impact: None
- App change required: None
Changed Features
-
Hidden internal functions of StorageManager
- Reason for change: Strengthen SDK security
- Scope of impact: None
- App change required: None
-
Process proxy server shutdown in a Thread
- Reason for change: Respond to ANR issues on Google Play
- Scope of impact: None
- App change required: None
Fixed
- Fixed intermittent crash when playing ABR content
- Reason for change: Respond to NullPointerException when changing bitrate internally
- Scope of impact: None
- App change required: None
3.0.12
Release Date: 2025-12-16
Fixed
-
Fixed forced termination when playing content with AI chapters
- Reason for change: During the rollback from 3.0.11 to 3.0.10, the AI chapter bug was restored, causing forced termination
- Scope of impact: Customers using 3.0.11 who use the AI chapter service must apply this patch
- App change required: None
-
Fixed forced termination when downloading content without concurrent playback prevention settings
- Reason for change: Forced termination occurred when checking for concurrent playback prevention settings that were not configured during download
- Scope of impact: Customers using download without concurrent playback prevention settings configured
- App change required: None
3.0.11
Release Date: 2025-12-05
Changed Features
- Reverted changes so that DRM Callback and PlayCallback error codes appear in the -9000 and -10000 range
- Reason for change: Reverted because the error code change caused error message mapping failures, resulting in changed messages
- Scope of impact: None
- App change required: None
3.0.10
Release Date: 2025-12-04
Added APIs
-
Added APIs related to user behavior analysis
// KollusContent Class
public String getActionStatsUrl();
public String getActionStatsSecretKey();- Reason for change: Utilize for UI planning through user behavior analysis
- Scope of impact: None (used in KollusPlayer App)
- App change required: None
-
Added chapter feature
// KollusContent Class
public String getDefaultChapterLanguage();
public List<ChapterInfo> getChapterInfos();
// KollusContent.ChapterInfo Class
public String getLanguage();
public List<Chapter> getChapters();- Reason for change: Display subtitles for each section to convey an overview of the content to users
- Scope of impact: None
- App change required: None
Added Features
- Added keep alive when connecting to edge server
- Reason for change: Strengthen server network resource efficiency
- Scope of impact: None
- App change required: None
Changed Features
-
Modified DRM Callback and PlayCallback error codes to appear in the -9000 and -10000 range
- Reason for change: Some error codes were output in the -8000 range, making error analysis difficult using error codes alone
- Scope of impact: None
- App change required: None
-
Changed response data of KollusPlayerLMSListener.onLMS
// Before
{"error":1,"status":"HTTP Code:28"}
// After
{"error":1, "code":28, "time":10005}- Reason for change: Added time spent on LMS data transmission result. This is purely for debugging purposes and has no impact on the app.
- Scope of impact: None
- App change required: None
Fixed
-
Fixed issue where dns lookup, connect, and tls handshake values in QoE data were being added and incorrectly reported
- Reason for change: Fix QoE data errors
- Scope of impact: None
- App change required: None
-
Fixed cases where showtime in LMS data was occasionally reported incorrectly
- Reason for change: Reports of showtime in LMS data occasionally showing negative values or sudden spikes; modified so that if an error is detected in the data, the previous value is used
- Scope of impact: None
- App change required: None
3.0.9
Release Date: 2025-09-04
Fixed
- Fixed forced termination when calling finish on KollusStorage
- Reason for change: Bug patch for forced termination caused by not initializing QoE instance during finish
- Scope of impact: Customers using SDK 3.0.8 who use KollusStorage's finish must apply the updated SDK
- App change required: None
3.0.8
Release Date: 2025-08-06
Added APIs
- Added QoE feature
- Reason for change: Added feature for network quality evaluation
- Scope of impact: None
- App change required: None
Added the following APIs to KollusContent
/**
* Function to get the channel key
* @return Channel key
*/
public String getChannelKey();
/**
* [Internal SDK Only]
* URL for sending QoE session information
* @return Session URL
*/
public String getQoeSessionUrl();
/**
* [Internal SDK Only]
* URL for sending QoE network information
* @return Network URL
*/
public String getQoeNetworkUrl();
/**
* [Internal SDK Only]
* URL for sending QoE playback information
* @return Playback info URL
*/
public String getPlaybackUrl();
/**
* [Internal SDK Only]
* QoE encryption key
* @return Encryption key
*/
public String getQoeSecretKey();
Changed Features
- Changed behavior when live stream ends during broadcast from playback complete to -3012 (not on air)
- Reason for change: Modified so that when a live stream ends, instead of processing as playback complete and closing the app, a -3012 error popup is displayed so the user is notified
- Scope of impact: None
- App change required: None
Added Features
- Added 16KB page size support
- Reason for change: Proactive response as Android 15 started supporting 16KB page size (previously 4KB page size). Using a 4KB library on a 16KB device causes app crash at runtime
- Scope of impact: None
- App change required: None
3.0.7
Release Date: 2025-06-12
Fixed
-
Added stability code when listener is not registered
- Reason for change: Crash discovered when MediaPlayer.setKollusPlayerLMSListener is not registered
- Scope of impact: None
- App change required: None
-
Enhanced stability when exiting during buffering
- Reason for change: Stability enhancement
- Scope of impact: None
- App change required: None
3.0.6
Release Date: 2025-05-16
Added APIs
- AI Subtitle
Added the following to KollusContents.SubtitleInfopublic boolean ai; - Reason for change: Indicates whether the subtitle is AI-generated (true: AI-generated subtitle, false: regular subtitle)
- Scope of impact: None
- App change required: None
Changed Features
- Removed setMute from MediaPlayer
- Reason for change: No longer needed as KollusMediaPlayer has a software-based mute API (since 3.0.4)
- Scope of impact: None
- App change required: None
Fixed
- Exception handling for abnormal response from PlayCallback
- Reason for change: Exception handling for abnormal responses from some customers (unrelated to Japanese customers)
- Scope of impact: None
- App change required: None
3.0.5
Release Date: 2025-04-08
Added APIs
- Added option item for controlling background audio playback feature
- Reason for change: Added necessary items for media notification during background playback
- Scope of impact: None
- App change required: None
- Added the following APIs to KollusContent
/**
* [Internal SDK Only]
* Function to get the name of the content provider
* @return Content provider name
*/
public String getContentProviderName();
/**
* Function to get whether to ignore user settings related to background playback
* @return If true, background playback is unconditionally disallowed regardless of user settings
* If false, background playback is determined according to user settings
*/
public boolean isDisableBackgroundAudio();
Changed Features
- Modified to send LMS data stored in Database asynchronously
- Reason for change: When there is failed LMS data to retransmit, it was being retransmitted synchronously (Sync), which could cause ANR in the following situations due to network delays, so changed to asynchronous (Async)
- When seeking in Pause state
- When exiting at the start of playback
- Scope of impact: None
- App change required: None
- Reason for change: When there is failed LMS data to retransmit, it was being retransmitted synchronously (Sync), which could cause ANR in the following situations due to network delays, so changed to asynchronous (Async)
3.0.4
Release Date: 2025-03-13
Added Features
- Enhanced error collection
- Added the following APIs to KollusContent
/**
* [Internal SDK Only]
* UAL server address for error collection when an error occurs
* @return UAL error server address
*/
public String getUalErrorReportUrl();
/**
* [Internal SDK Only]
* Server address for error collection when an error occurs
* @return Error server address
*/
public String getErrorReportUrl();
/*
* [Internal SDK Only]
* Function to get the content provider
* @return Content provider
*/
public String getContentProviderKey() ;
/*
* [Internal SDK Only]
* Additional data to send to the error collection server when an error occurs
* @return Additional data
*/
public String getErrorAdditionalInfo();
- Added the following APIs to KollusContent
Changed Features
-
Discontinued audio watermark support
- Reason for change: End of support
- Scope of impact: None
- App change required: Customers using the APIs being removed
- Removed KollusMediaPlayer
- Reason for change: This player was used for devices below version 5.0 or for playing audio watermark content and is no longer needed
- Removed the following items
- Removed from MediaPlayer
- setVolumeLevel
- enum RENDER_MODE
- OnCencDrmListener
- setOnCencDrmListener
- getPlayerType
- Removed from KollusContent
- getAudioWaterMark
- Removed from Utils
- getPlayerType
- setRenderType
- getRenderType
- enum DecoderType
- setDecoderType
- getDecoderType
- Removed from MediaPlayer
-
Enhanced error collection
- Reason for change: To collect error codes when errors occur before retrieving media information
- Update
build.gradleimplementation 'com.squareup.okhttp3:okhttp:4.12.0'
implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0' - Changed
KollusStorageinitialization error codes- Removed the following values from
ErrorCodesConstant name Value Description ERROR_EXPIRED_KEY-2 Authentication key expired ERROR_INVALID_KEY-1 Authentication key error - Added the following values to
ErrorCodesConstant name Value Description ERROR_INCORRECT_PACKAGE_NAME-2103 Invalid PackageNameprovided duringKollusStorageinitializationERROR_EXPIRED_AUTH_DATE-2104 Usage period expired during KollusStorageinitializationERROR_INCORRECT_AUTH_DATE-2105 Invalid usage period input format during KollusStorageinitializationERROR_INCORRECT_AUTH_KEY-2106 Invalid authentication key during KollusStorageinitializationERROR_NOT_ENOUGH_AUTH_INFO-2107 Authentication information not fully entered during KollusStorageinitialization - Reason for change: Align error codes with iOS
- App change required: When checking error code values of
KollusStorage.initialize, must check with the updated error codes
- Removed the following values from
3.0.3
Release Date: 2025-01-14
Added APIs
- Added show/hide option for next episode button
- Added the following API to KollusContent
/**
* Function to get whether to show the UI button when auto-play next episode is enabled and within the time of getNextEpisodeShowTime
* @return Whether to show the next episode button (true: show, false: hide)
*/
public boolean isNextEpisodeShowButton(); - Reason for change: When the auto-play next episode option is enabled, the next episode button is not displayed; this reflects customer requirements for showing the button. Customers using the SDK may implement this themselves.
- Scope of impact: None (only needs to be applied for customers who require this flag value)
- App change required: None (only needs to be applied for customers who require this flag value)
- Added the following API to KollusContent
Added Features
-
Applied per-content media info decryption key
- Reason for change: Security enhancement
- Scope of impact: None
- App change required: None
-
Added support for Multi DRM content next episode playback
- Reason for change: Feature addition
- Scope of impact: Customers using Multi DRM content
- App change required: None
Fixed
- Fixed issue where app crashes 1 minute after closing when using onDetectDebuggingMode
- Reason for change: Bug fix
- Scope of impact: Customers who close the app using this API
- App change required: Yes
3.0.2
Release Date: 2024-11-07
Added APIs
- Added
public boolean isIgnoreZero()to KollusContent- Returns the value of the ign_z flag passed as a query parameter in the playback URL. (default: false)
- Reason for change: Added at the request of customers who want to ignore the scenario of playing from the beginning when the resume position is within a certain time from the start or end (Kollus Player uses less than 10 seconds), and instead always resume playback
- Scope of impact: None (only needs to be applied for customers who require this flag value)
- App change required: None (only needs to be applied for customers who require this flag value)
Changed Features
- Strengthened Kollus DRM and content security
- Reason for change: Strengthen Kollus security
- Scope of impact: Kollus customers (V/G encryption version upgrade and DRM encryption/decryption module update)
- App change required: None
Fixed
-
Fixed AI Speed not working
- Reason for change: Bug fix occurring from media3
- Scope of impact: Customers using the AI Speed feature
- App change required: None
-
Addressed the following Google app vulnerability warning
- App has implicit internal intent vulnerability.
com.teruten.mcm.module.a0.F - Reason for change: Module update due to Google app vulnerability warning
- Scope of impact: Update required when this warning occurs in Google Play Console
- App change required: None
- App has implicit internal intent vulnerability.
3.0.1
Release Date: 2024-09-11
Added APIs
- Added API to MediaPlayer
/**
* Function to save the time when the app state changes to background or foreground,
* to include that time when sending LMS data.
* Valid when {APP_STATUS_JSON} is added to LMS Callback settings.
* @param status App state
*/
public void setAppStatus(@APP_STATUS int status); // 1: background, 2: foreground- Reason for change: Added feature to calculate the time a user spends in the background
- Scope of impact: No impact as this is a new API
- App change required: Not required
Fixed
- Addressed NullPointerException when exiting during seek (addressing Google Play Console vitals)
- Reason for change: Bug fix identified in SDK 3.0.0
- Scope of impact: Apps using SDK 3.0.0 are affected; applying 3.0.1 is mandatory
- App change required: Not required
3.0.0
Release Date: 2024-08-29
Changed APIs
- Changed KollusStorage setDevice/setDeviceASync
- Reason for change: Changed due to requirements for using a custom player ID
- Before
public int setDevice(String storagePath, String playerId, String playerIdMd5, boolean bTablet);
public void setDeviceASync(String storagePath, String playerId, String playerIdMd5, boolean bTablet, OnKollusStorageDeviceListener listener); - After
public int setDevice(String storagePath, boolean bTablet);
public void setDeviceASync(String storagePath, boolean bTablet, OnKollusStorageDeviceListener listener);
- Before
- Reason for change: Changed due to requirements for using a custom player ID
Added Features
-
Upgraded from ExoPlayer2 to media3
- Reason for change: ExoPlayer2 is no longer supported by Google
-
Changed Multi DRM library
- Reason for change: Updated due to migration to media3
Fixed
- Exception handling for missing newline characters in SRT subtitles
- Transmit AI-related information only in nscreen data upon exit
Warning
-
If using a custom PlayerId (calling Utils.setPlayerId), you must set the PlayerId via Utils.setPlayerId before calling KollusStorage's setDevice/setDeviceASync.
-
ProGuard update
- Remove exoplayer2 entries
- Add the following entries
-dontwarn androidx.media3.**
-keep interface androidx.media3.** { *; }
-
Multi DRM library change
- Multi DRM content downloaded with a previous version is not compatible. That is, it will appear in the download list but cannot be played.
- minSDK is raised to 21.
PallyconWVMSDK.aarmust be added as a subproject or placed in the libs folder.- Update build.gradle
- Since the Multi DRM library is written in Kotlin, Kotlin configuration is required.
//apply plugin: 'com.android.application'
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-android'
id 'kotlin-parcelize'
}
- Since the Multi DRM library is written in Kotlin, Kotlin configuration is required.
-
Add media3-related dependencies
- Update build.gradle
dependencies {
api ('com.google.guava:guava:31.1-android') {
// Exclude dependencies that are only used by Guava at compile time
// (but declared as runtime deps) [internal b/168188131].
exclude group: 'com.google.code.findbugs', module: 'jsr305'
exclude group: 'org.checkerframework', module: 'checker-compat-qual'
exclude group: 'org.checkerframework', module: 'checker-qual'
exclude group: 'com.google.errorprone', module: 'error_prone_annotations'
exclude group: 'com.google.j2objc', module: 'j2objc-annotations'
exclude group: 'org.codehaus.mojo', module: 'animal-sniffer-annotations'
}
compileOnly 'com.google.errorprone:error_prone_annotations:2.15.0'
compileOnly 'org.checkerframework:checker-qual:3.13.0'
compileOnly 'org.checkerframework:checker-compat-qual:2.5.0'
implementation "androidx.security:security-crypto-ktx:1.1.0-alpha03"
...
}
- Update build.gradle
2.0.23
- Added defensive code for AI Speed script path errors
2.0.22
- Fixed ANR issue that occurred when an error arose in ExoPlayer while attempting playback on a poor network
- Separated error codes for situations causing -1007 error
-1018: When KollusStorage argument error or playback path error occurs
-1019: When KollusStorage is not initialized - Changed SocketTimeoutException from -1010 to -8028
2.0.21
- Fixed forced termination when initializing Pallycon library on Google-uncertified devices
Skip initialization by device name
2.0.20
- Added AI Speed content info to N-screen
- Added ChromeOS to Kollus User-Agent
2.0.19
- Added next episode
Added the following APIs to KollusContent/**
* Function to get the next episode callback URL
* @return Next episode callback URL
*/
public String getNextEpisodeCallbackUrl();
/**
* Function to get the post data when calling the next episode callback URL
* @return Post data when calling the next episode callback URL
*/
public String getNextEpisodeCallbackData();
/**
* Function to get the time to show the UI button when there is a next episode
* @return Time to show
*/
public int getNextEpisodeShowTime(); - Cleaned up KollusContent API
AddedRemoved all set functions except the following/**
* [Internal SDK Only]
* Function to set playback content information via Parcel
* @param in Parcel containing content information
*/
public void setForPlay(Parcel in);
/**
* [Internal SDK Only]
* Function to set download content information via Parcel
* @param in Parcel containing content information
*/
public void setForDownload(Parcel in);
/**
* [Internal SDK Only]
* Function to set content information via JSON String
* @param jsonString JSON String containing content information
*/
public void setByJSON(String jsonString);
/**
* Function to copy content information to the given argument
* @param content Target KollusContent to copy content information to
*/
public void copy(KollusContent content);public void setMediaContentKey(String key);
public void setContentType(ContentType type);
public void setUriIndex(int index);
public void setPlaytime(int playtime);
public void setReceivedSize(long receiveSize);
public void setReceivingSize(long receiveSize);
public void setFileSize(long fileSize);
public void setLocalMediaUrl(String mediaUrl);
public void setDownloadPercent(int percent);
public void setDownloadCompleted(boolean complete);
public void setDownloadError(boolean bError);
public void setLoaded(boolean bLoaded);
public void setContentExpired (boolean expired);
public void setDownloading(boolean downloading);
public void setDownloadCanceled();
public void setServiceProviderMessage(String message); - Fixed video watermark error in live
- Fixed forced termination when playing at playback speed on devices running version 2 or below