Skip to main content

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();
    • TrackInfo internal methods
      public int getTrackType();
      public String getLanguage();
    • Track types
      • MEDIA_TRACK_TYPE_UNKNOWN
      • MEDIA_TRACK_TYPE_VIDEO
      • MEDIA_TRACK_TYPE_AUDIO
      • MEDIA_TRACK_TYPE_TIMEDTEXT
    • Reason for change: Support multiple audio tracks
    • Scope of impact: None
    • App change required: None

Deleted APIs

  • Removed MediaPlay.erreleaseWhenFinishing method
    • 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_playtime values are received as strings instead of integers
    • Scope of impact: None
    • App change required: None
  • Fixed bug where incorrect error code was delivered to onError when playing expired DRM content

    • Reason for change: Fixed a bug where an incorrect error code was passed to the player onError event delegate when downloaded content expired due to accumulated expiration_count or expiration_playtime (supplement to v3.0.4 bug)
    • Scope of impact: None
    • App change required: None
  • 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_limit feature
    // 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.SubtitleInfo
    public 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

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();

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
  • Enhanced error collection

    • Reason for change: To collect error codes when errors occur before retrieving media information
    • Update build.gradle
      implementation 'com.squareup.okhttp3:okhttp:4.12.0'
      implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'
    • Changed KollusStorage initialization error codes
      • Removed the following values from ErrorCodes
        Constant nameValueDescription
        ERROR_EXPIRED_KEY-2Authentication key expired
        ERROR_INVALID_KEY-1Authentication key error
      • Added the following values to ErrorCodes
        Constant nameValueDescription
        ERROR_INCORRECT_PACKAGE_NAME-2103Invalid PackageName provided during KollusStorage initialization
        ERROR_EXPIRED_AUTH_DATE-2104Usage period expired during KollusStorage initialization
        ERROR_INCORRECT_AUTH_DATE-2105Invalid usage period input format during KollusStorage initialization
        ERROR_INCORRECT_AUTH_KEY-2106Invalid authentication key during KollusStorage initialization
        ERROR_NOT_ENOUGH_AUTH_INFO-2107Authentication information not fully entered during KollusStorage initialization
      • 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

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 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

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);

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.aar must 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'
        }
  • 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"
      ...
      }

2.0.23

  1. Added defensive code for AI Speed script path errors

2.0.22

  1. Fixed ANR issue that occurred when an error arose in ExoPlayer while attempting playback on a poor network
  2. Separated error codes for situations causing -1007 error
    -1018: When KollusStorage argument error or playback path error occurs
    -1019: When KollusStorage is not initialized
  3. Changed SocketTimeoutException from -1010 to -8028

2.0.21

  1. Fixed forced termination when initializing Pallycon library on Google-uncertified devices
    Skip initialization by device name

2.0.20

  1. Added AI Speed content info to N-screen
  2. Added ChromeOS to Kollus User-Agent

2.0.19

  1. 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();
  2. Cleaned up KollusContent API
    Added
    /**
    * [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);
    Removed all set functions except the following
    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);
  3. Fixed video watermark error in live
  4. Fixed forced termination when playing at playback speed on devices running version 2 or below