Skip to content

Surfmeter Player SDK (THEOplayer Android) Changelog

This is the changelog for the Surfmeter Player SDK for THEOplayer on Android.

v0.3.1 (2026-10-30)

  • Fix for stalls being counted as play time. Sessions with stalls reported a play time that was too long, which also lowered the stalling ratio and changed the quality score.
  • Fix for video and audio segments being sent again after a short stall or another event that split a segment of the same quality. The sent segments overlapped, which could change the quality score.
  • Do not count pauses as play time, and do not count buffering while paused (for example, after seeking) as a stall
  • Connection details and error events are no longer lost when sending a report fails; they are sent with the next report

v0.3.0 (2026-10-30)

  • Add the builder methods setContentType(), setDeviceType() and setDisplaySize(), which set the content type of the videos (for example, live or feature), and the device type (mobile or pc) and display size used to calculate the video quality score. A display size set with setDisplaySize() replaces the size reported by the player for the whole session. The SDK logs a warning and ignores invalid values.
  • Change in behavior: the device type for the quality score is now detected from the hardware. Smartphones and tablets use mobile, all other devices (for example, TVs) use pc. Previously, all devices used mobile, so the quality score of TVs can change.
  • Send the type of hardware (smartphone, tablet or TV), the device vendor and model, and the screen resolution with each measurement
  • Change in behavior: a video that is not live is now sent with the content type unknown instead of feature, as in the other Player SDKs, unless you set a content type with setContentType(). This changes the content type of Android measurements in the dashboard.
  • Fixed media time advancing after playback has ended
  • Fixed a missing video quality and quality score for HLS streams that declare no resolution in the manifest. The first quality of a session was not recorded, so a session without quality switches had no video quality at all. The SDK now takes the resolution from the video size reported by the player.

v0.2.1 (2026-10-30)

  • Change in behavior: when THEOplayer reports a player error, the session now ends as aborted with the aborted reason playbackError, as in the other Player SDKs. The error is still reported as an error event with the THEOplayer error category and code.
  • Report only one error event per session, also when THEOplayer reports two errors for the same failure
  • Content protection errors are still reported as error events only, and do not end the session
  • When the source URL cannot be read, abort the session with the aborted reason configurationError and report an error event. Previously, this report was not sent.
  • abort(reason) now sends the reason given by the app, and abort() sends "User aborted"
  • End the session when the source is removed, for example with player.stop(), instead of starting an empty session

v0.2.0 (2026-10-29)

  • Start a new session for every new source of the player. Previously, sessions after the second source change did not record any events.
  • Retry sending the final report of a session if it fails, up to five times with increasing delays between attempts. Client errors are not retried.
  • Drop final reports that cannot be converted to JSON
  • Send an unknown media time as 0
  • Ignore calls to finish or abort after the session has ended
  • Remove the player listeners when a session ends
  • Use Gson instead of Jackson to create the reports