The Android ecosystem while improving is still a huge challenge for a great video experience.
The Android ecosystem has always been a challenging landscape to conquer, not just for video players but for apps in general. In today's market, end users expect a great experience regardless of the device they are using or the operating system version it's running on.
With the diversity of Android devices in terms of manufacturers, size, performance and behaviour, as well as the different versions of the operating system, it's a huge challenge to provide the experience that users expect. To put it into perspective, if application developers want to support 90%+ of the market in terms of operating systems then they must support Android KitKat (4.4) through to the latest Android Pie (9.0) – see Google's statistics dashboard.
As well as the complexity of supporting a wide range of operating systems, the device fragmentation is also a key consideration. Android devices come in all shapes and sizes, different screen sizes, resolutions and performance variation.
According to OpenSignal, in 2015 their app had been downloaded to 24,093 distinct Android devices – a 28% increase on the previous year. If we assume the same growth rate year on year, then we can assume that there are approximately 38,000 distinct Android devices.
How can I ensure a great playout experience across all of these devices?
The Player SDK for Android is a proprietary player stack written in a mixture of C++ and Java. It was built from the ground up because the playback experience on the native video player for Android had nuances and issues across differing devices, with limited support for adaptive streaming format such as DASH and HLS. These differences became evident when deploying to large user bases across our customers and fixing issues was problematic as we had no control over the native player.
The OpenTV Player SDK provides a solid playback experience across a huge device range with support from Android Lollipop (5.0) to Android Pie (9.0). Having control of the full player stack ensures that we can fix issues that are seen in the field, drive our own innovative roadmap as well as tweak the player to gain the best playout performance across the device and OS range.