Surfmeter Player SDK (Android) Changelog¶
This is the changelog for the Surfmeter Player SDK for Android.
v0.12.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.
- Do not count pauses as play time, and do not count buffering while paused (for example, after seeking) as a stall. Playback that the system suppresses, for example during a phone call, counts as a pause.
- Change in behavior: if the app prepares the player before starting playback, the initial loading delay now starts when playback is requested, not when the player starts loading
v0.12.0 (2026-10-30)¶
- Add the builder methods
setContentType(),setDeviceType()andsetDisplaySize(), which set the content type of the videos (for example,liveorfeature), and the device type (mobileorpc) and display size used to calculate the video quality score. A display size set withsetDisplaySize()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) usepc. Previously, all devices usedmobile, 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
unknowninstead offeature, as in the other Player SDKs, unless you set a content type withsetContentType(). This changes the content type of Android measurements in the dashboard.
v0.11.1 (2026-10-30)¶
- Changed: a session that ends because of a fatal player error is now sent with the aborted reason
playbackError, the same as in the other Player SDKs. Previously, the error message was sent as the aborted reason. The error message, type and code are still sent as an error event. - Changed: a session that ends because the player has no media item, or its URL cannot be read, is now sent with the aborted reason
configurationErrorinstead of the error message abort(reason)still sends the reason given by the app, andabort()sends "User aborted"
v0.11.0 (2026-10-29)¶
- Failed final reports are now retried up to five times, with increasing delays between attempts
- Reports that the server rejects with a client error (for example, 403) are not retried
- Final reports that cannot be converted to JSON are dropped and reported to the listener instead of being retried
v0.10.0 (2026-10-29)¶
- Every session now ends with a final report that says whether it finished or was aborted, for example when the player is released, the playlist becomes empty, or a player error occurs
- Player errors are now sent as error events with the error type
PLAYER - A missing media item or a media URL that cannot be parsed now aborts the session and is sent as an error event with the error type
CONFIGURATION - Connection details and error events are no longer lost when sending a report fails; they are sent with the next report
- Data that the server rejects is no longer marked as sent
- Fixed the reporting of dropped video frames
v0.9.3 (2026-10-29)¶
- Reuse one HTTPS connection for all reports, which reduces network overhead
v0.9.2 (2026-06-22)¶
- Fixed media time advancing after playback has ended
- Fixed connection detail tracing on devices without a GPS provider
- Replaced the Jackson dependency with Gson
v0.9.1 (2026-03-17)¶
- Internal code changes, no change in behavior
v0.9.0 (2026-03-17)¶
- Added error event reporting: player errors are now captured and sent with the reports
- Updated dependencies to their latest versions
- Fixed edge-to-edge display in the demo app on Android 15 and later
v0.8.4 (2026-02-19)¶
- Possible fix for large duration chunks in live cases
v0.8.3 (2025-07-03)¶
- Fix for large duration chunks leading to too long total play time statistics
v0.8.2 (2025-06-18)¶
- Filter out any stallings longer than 1 hour
v0.8.1 (2025-06-16)¶
- Add demo implementation for
PerformanceMonitoringHttpDataSourceto the app code
v0.8.0 (2025-06-16)¶
- Added support for performance monitoring via
PerformanceMonitoringHttpDataSource, see our docs on ExoPlayer Quality Test for more information.
v0.7.2 (2025-03-24)¶
- Fix for some AVC codecs not being parsed properly
v0.7.1 (2025-02-10)¶
- Added additional logging capabilities
v0.7.0 (2025-01-28)¶
- Added support for connection detail tracing
- Fixed timestamp handling
v0.6.2 (2025-01-02)¶
- Added custom user agent for requests
v0.6.1 (2024-12-05)¶
- Improved error handling with automatic backoff on 403 errors
v0.6.0 (2024-12-05)¶
- Added support for audio-only streams
- Added client context attributes
v0.5.0 (2024-09-24)¶
- Implemented connection pooling for improved performance
- Major networking improvements with okhttp/okio
v0.4.4 (2024-09-18)¶
- Added protection against oversized chunks
- Improved ExoPlayer analytics integration
v0.4.3 (2024-06-28)¶
- Added ability to set aborted reason
- Improved error handling and logging
- Fixed potential null value issues
v0.4.2 (2024-06-19)¶
- Fixed issue with user-supplied API key handling
- Added support for looping videos/channels
- Added localhost support
- Improved crash handling
v0.4.1 (2023-12-01)¶
- Increased data send interval to 30 seconds
v0.4.0 (2023-10-05)¶
- Migrated to Media3 ExoPlayer
v0.3.1 (2023-10-03)¶
- Added support for request compression
- Improved segment compression
v0.3.0 (2023-03-06)¶
- Implemented incremental data sending
v0.2.2 (2023-03-01)¶
- Fixed handling of manual endpoint override
v0.2.1 (2023-02-27)¶
- Improved stalling detection by filtering out small events
- Added data validation for remote API
v0.2.0 (2023-02-27)¶
- Implemented periodic data sending
v0.1.4 (2023-02-21)¶
- Fixed chunk sending behavior
v0.1.3 (2023-01-12)¶
- Improved error handling
- Added null pointer checks
v0.1.2 (2022-11-24)¶
- Updated default configuration values
v0.1.1 (2022-11-24)¶
- Added version information output
v0.1.0 (2022-11-21)¶
- Initial release