Worldreader: Building Apps for Low-End Android Devices
Worldreader is a non-profit organization which brings digital books to families and children across many countries where accessibility to literature is poor. It has received tremendous recognition and support from many authors, publishers and donors all over the world including the Bill and Melinda Gates Foundation, Opera Mini, Pearson and over 60 others.
UNESCO statistics state that there are 740 million illiterate people and 250 million children of primary school age who lack reading skills. Worldreader offer a web platform, mobile applications and programs for schools which include e-readers.
As sales of mobile phones continue to increase around the world, it’s become an attractive sector to make literature readily available in an easy way. Here’s where the Mobile Jazz collaboration starts with Worldreader; to create, design and deliver the brand new Worldreader Mobile application for Android.
A Very Specific Target
Worldreader operates in areas where literacy access is low. Despite certain situations of developing countries, sales of mobile devices are actually increasing. This is partly due to collaborations between network providers and device manufacturers, offering low-cost smartphones (such as the Android One series) at subsidized prices.
For app developers targeting low-end devices, there are two main points to consider. Firstly, the app must be built for Android due it’s high availability. Secondly, developers need to consider the requirements of these devices, for example; design, performance and user experience (UX).
In recent trends, we’ve grown to see apps use high-end graphics, creating heavy-weight complex applications, which are not suitable for low-end devices. We had to take this consideration and act according when creating Worldreader, we wanted to build a great app, without compromising some of the fantastic features available on Android.
Building an ePub Reader for Low Data Consumption
One of the toughest challenges we faced when building an e-reader app was the data consumption. Worldreader distributes books in the ePub format which are predominantly text, however often contain images and other assets. Some books, such as comics or illustrated books for kids can be entirely constructed from images resulting in large file sizes. To avoid high or unnecessary data consumption, we prepared the app to handle both streaming and downloading of books for offline use.
The Worldreader app across devices
Streaming a book allowed us to provide the user only with the chapters they required at the time. Reading is very personal and everyone has their own preferences, sometimes you’ll need a read a chapter or two before realizing the book is or isn’t for you. Having to download multiple books in their entirety would consume a lot of unnecessary data.
We then continued to improve on this by combining streaming with caching, keeping the book’s text and assets accessible without using any more data. Caching the book’s chapters also offers other benefits such as decreased loading times within the app as the data was already stored in the device.
Caching also enabled us to create an offline mode, in developing countries where cellular data isn’t always available or may be expensive, this was a great feature to add, and one of the most appreciated.
As we’re dealing with books, there were copyright and licensing issues we needed to consider, to prevent users from sharing or exporting the books. We created a complex logic system that encrypts the downloaded data, preventing users from sharing, but still enabled it to be read on the user’s account.
An Android One smartphone
Working with Low to Mid-Ranged Phones in Android
Another challenge we faced, even tougher than managing data consumption, was to create an app that worked well across an incredible number of Android devices (more than 24,000 as of 2015). In terms of design, we needed to keep lower-resolution devices in mind, making sure they functioned as well as high-end devices.
Low to mid-ranged phones are tougher to work with, having a higher number of constraints. This includes, screen real estate and densities, RAM, local storage and even branded layers overlaying the OS.
As mentioned in the previous section, the caching system was important as it provided a boost in overall performance, decreasing lag and loading times across all devices. We also took advantage of VectorDrawables, this allowed us to use a single vector image for assets like icons, so we didn’t need the app to contain multiple versions of the same image for different devices.
Lastly, it didn’t make sense to use high-end assets on low-end phones. Android has a feature called APK Split, which allows you to compile several versions of the application, each suited to devices with different screen densities. This is preferable over a single app, suitable for all devices, as it drastically reduces the app’s filesize. In the Play Store, users will only see a single app relevant to their device.
Developing for Android not only enables you to reach millions of users across thousands of devices, it also allows you take advantage of some of the most advanced features available today, enhancing user experience and interface.
Worldreader wants to encourage both children and adults to improve their reading skills by providing easy access to good literature. To inspire users to read, we added a gamification aspect to the platform, applying gameplay scenarios to books.
We record statistics that allow us to monitor progress and return the details to the user. By setting their own goals, users can earn Pages; an in-app measurement that lets them rank against a region, or even the world. By making these statistics visually appealing, you can retain user attention in the application. Giving the user control over their goals also increases the chances of keeping them interested and feel rewarded.
We’ve developed a fantastic long-term relationship with Worldreader and are continuing to develop new and exciting features for the app. For more information, visit the Worldreader website or download the app!
If you enjoyed this post, visit our blog for more.