What is it?
READ is an Android WearOS app I created in May 2020, for my Project and Portfolio 5 class. I came up with the idea, designed the layout, and coded the functionality. The goal of READ is to encourage users to read more often.
Java | XML | Wear OS | Chronometer | Broadcast Receiver | Alarm Manager | Firebase (Auth & Firestore) | GraphView | GitHub
Show App Pitch
The name of my application is READ. Its purpose is to help readers and those who wish to become readers setup a consistent reading schedule and track the amount of time they spend reading. READ fulfills this purpose by allowing users to set daily reading goals as well as set daily reading reminders. READ also allows users to leverage the power of accountability to enforce reading habits by making it easy for users to share their daily progress with others.
READ will be developed for use on Wear OS by Google wearable devices. I have chosen this platform because there appear to be fewer apps for Android devices than there are for iOS devices, and many reading apps available on iOS either do not support Android or take longer to support features on Android. The smaller quantity of apps for Android increases the chances of a user discovering and using READ.
Only the wearable device would be needed to use the core functionality of the app. However, another device would be needed if the user wanted to share their progress or sign in through a method other than Google Sign-In. Social media apps may not be available on the wearable device and users may want to customize the shared message which requires more screen space so sharing attempts to open the READ app on the user’s phone. The phone app will then provide the user with the apps they can share to. READ would use the wearable devices built-in stopwatch and clock functionality to track the users reading time and provide daily reminders. Tracking the reading time through READ instead of simply using the clock app makes understanding tracked time easier for users, allows users to view a record of tracked reading time, and frees up the stopwatch functionality in the clock app for other purposes. Setting reminders through READ allows users to receive informative notifications at the chosen time versus setting an alarm in the clock app which does not provide any additional information about why the alarm was set. This also keeps the user’s clock alarms from becoming cluttered with active alarms as the reminder is set and executed from within the READ app.
The three key features of READ are the reading time tracker, the daily reading time and goal reminders, and the past reading time progress. The reading time tracker uses stopwatch functionality to track the amount of time the user spends reading in any given session. Reading times are saved only if the user is logged in and the user will be given the chance to log in when starting and stopping the timer if they are not already signed in. Users can set their daily reading time and daily goal upon the first launch of the app, or in the settings section of the app. The daily reading time can be selected using a time picker and the daily reading goal can be set using a number picker which represents the number of minutes. Tracked reading time is only available if the user is logged in. Signed in users will be able to view a simple graph showing the past 7 days reading time statistics. Clicking on a day will display a dialog with the total time spent reading on that day.
The target audience of READ is made up of two main groups of people, readers aged 12-20 and 50+ who want to track their reading time and young adults/adults aged 16-40 who are trying to start a reading habit. The first group is comprised of people who are already readers, meaning they don’t need a reminder to spend time each day with a book. This group is more interested in tracking their time spent reading. The second group is comprised of people who do not already have a consistent reading habit, but wish to acquire one for school, work, or personal improvement. This second group consists of people who have relatively busy lives, but enough free time to devote to reading although they currently spend it doing other things. One example of a person who falls into the first group is a kid in their local library’s summer reading program who wants to track his time spent reading for the summer program. An example of a person who falls into the second group is a businessman in his mid-30s who knows that most successful businessmen have a steady reading habit and is trying to establish one of his own.
One application that is somewhat similar to READ is the Reader Tracker app. Reader Tracker allows users to keep track of the books they’ve read and are currently reading. This is different from READ because READ tracks the users reading time not the books being read. Additionally, Reader Tracker is an iPhone app, not a wearable app. Another reading app is the Goodreads app, but similarly to the Reader Tracker app, Goodreads focuses on the books being read rather than the time spent reading. While apps like Reader Tracker and Goodreads focus on what the user is reading, READ focuses on the process of reading, ensuring that users can easily track their reading time and set up a reading schedule. Both Reader Tracker and Goodreads do not appear to be available for use on wearable devices. I believe this lack of reading apps for wearables is due to the fact that most reading apps focus on the books being read which requires more information from the user and to be displayed to the user which may not be possible on wearables with smaller screens. As READ focuses on tracking reading time rather than books, READ can easily work on a smaller screen and is designed for use on wearables as this allows users to easily track their reading time with minimal distractions. For example, a user may get distracted by their Facebook or Instagram feed after turning on a reading tracker on their phone which offers many more apps than their watch, but on the watch, the user simply presses start to track their reading and then focuses on the book in their hands, not on the device.
App Demo Transcript
Show App Demo Transcript
[First Launch Goal Screen] This is the READ app. The goal of READ is to encourage users to read more often. Upon the very first launch of the app, users are presented with the option to set a reading goal or skip to the next step. [Set goal]
[First Launch Reminder Screen] Next, users are prompted to set a reading reminder time. READ will send users a daily notification to read at the time they choose for their reminder. [Set reminder] Users can also choose to skip this step.
[First Launch Log In Screen] This is the last of the first launch only screens. Users are now given the option to log in with Google or skip to the main app. [Scroll down to show skip button] My watch hasn’t been connecting to my phone, this is a separate issue independent of READ, so I also have a test login button which provides a workaround to logging in with Google for testing only. [Click test login]
[Home Screen Logged In] This is the home screen of READ. Logged in users will be able to see their reading records of up to 7 days. If you use the app and are not logged in, this button is hidden from view. [Click start reading]
[Start Reading Screen] This is the screen the user will use the most. When the user wishes to track their reading time, they go here and click play to start tracking their time. [Click play] Users can pause the reading tracker, [pause tracker] or click done reading when they’re done which will take them back to the home screen and will save their reading time if they are logged in. [go back]
[Home Screen] Users can view their total time spent reading per day for up to 7 days in the reading records screen. [click reading records]
[Reading Records Screen] This graph shows up to 7 days worth of reading records. Users can tap a data point to view the details of that day. [tap data point] The date labels show the earliest recorded date and the latest recorded date. Note these dates update to reflect only the last 7 days of records. [go back]
[Home Screen] [go to settings]
[Settings Screen] Here, users can change their reading goal, [click reading goal] [go back to settings], or their reading reminder time [click reading reminder] [go back to settings]. Users can also log in or out here. [log out]
[Home Screen Logged Out] As you can see, now that I have logged out, the reading records button is no longer available. If I log in again, [go to settings]
[Settings Screen] [log in with test]
[Home Screen] Then the records button is once again visible. That concludes the demo of READ.
Show Postmortem Transcript
The project I worked on this month is READ. READ is an app that encourages users to read by tracking their reading time, sending them reading reminders, and displaying up to 7 days worth of reading records.
Let’s start with the sticky. What went wrong? This is a tricky question to answer because I could say that everything went wrong or that nothing went wrong. Let me explain. If I were looking at this project with the mindset that after some research and hard work I would get the product I had envisioned at the start of the month exactly as I thought it would be, then I might say that everything went wrong because the end product is not the same as the vision. However, if I look at this project as an opportunity to learn and develop an app that fulfills the originally decided upon purpose, then nothing went wrong. On principle, my mindset is generally the latter.
However, one major thing that could have gone better was connecting the watch to the phone. This is completely unrelated to the app as far as actual code goes, but it did cause a bit of frustration when it came to testing the Google sign in feature. I managed to test the feature several times before the watch stopped connecting, and I’m still a little bothered that it stopped working. Upon further research, I discovered a closed thread with the last reply dating December of last year in which users discussed the connectivity issue and how it is apparently a semi known bug.
On to brighter topics. What went right? Lots. It may not have seemed like it at the time as most, all of the features apart from creating Toasts, took a lot of time, research, and debugging, but most of the project went right. There was a bit of a snag when I discovered that Firebase Authentication wasn’t supported on Wear OS which put a pin in the alternative sign in methods I had planned on implementing, but the final app is extremely similar to the one I had envisioned at the start of the class. As many things can change over the course of the month, and this month was the first I had even laid eyes on an Android wearable, I consider that a huge win.
What did I learn from the experience? A lot. I learned how to implement google sign in, I learned, rather painfully, that Wear OS doesn’t support Google Play Services, I learned how to graph data and make that data interactive using GraphView, and I learned that I do not want to develop wear apps at all, just to name a few of the things I’ve learned over the course of the month. I’ve also gained a new appreciation of Git and I practiced using branches for fixing and implementing a few of the features.
What would I have done differently given the hindsight I have now? Assuming begging to develop a mobile app instead is out of the question, I would probably pitch an entirely different app. This is, of course, assuming that by hindsight this question also means that I retain all of the knowledge I’ve gained over the course of this month. I would, therefore, pitch a different app because I would want to learn new things and experience frustration caused by different errors and logic problems.
Thank you for taking the time to watch this postmortem. I enjoyed developing READ and I’m looking forward to a new month of learning. On a side note, the app demo is in a separate video as this is stretching the time limit. Thank you!