Monday, December 23, 2013

Attempting to Fix Android's Back

Problem Overview

Android app switching is often both slow and confusing.  If a user wants to switch from the current app to the most recently used app, they have more than one way to make that switch.  The easiest way is to tap the recent applications button, and then choose the app the most recent app.  Users can also go to home launcher, and then choose the recent app from its shortcut icon.  And for the most confusing way; a user can sometimes get to the most recently used app by pressing the back button.  With the exception of the last method, each of these steps takes a minimum of two screen taps, and the last method often takes multiple taps.  Although two taps isn't a significant amount of time relative to the age of the universe, I figured it would be a fun project to try and improve these actions.  In the end I would say I've been kinda, sorta, but not really, successful.

Fixing the Issues

At first my plan was to edit everything about the way the back and recent apps buttons worked by adding a new recent apps list and simplified back button actions, but after digging through the android source I realized that would require a ton of work.  I would have needed to reinvent and create new actions and a whole new set of functions and classes, more of a challenge than I really wanted to take on.  So, in the interests of time and laziness, I decided to steal some already existing code, and come up with a simple modification that would make a significant effect.  The end result was an "overloading" the back and recent apps buttons resulting in quick app switching by a simple modification to the Google Now launcher code.

When a user launches Google Now, they hold down the home button and swipe up, an "overload" of the home button.  In order to implement my simple app switches, I used this same action to allow instant switching between the most recently used application by swiping left (overloading the back button) and the second most recently used app by swiping right (overloading the recent apps button).  




Using the Google Now code in the SearchPanelView apk, these modifications were easy, and to make the actions more obvious I added two icons "above" the back button and the recent apps button. (Technically they are next to the back and recent apps buttons due to my laziness.  Just use imagination you see them as beautifully crafted icons hovering gently above the back and recent apps buttons.)


With these new swiping gestures a user can go back to the most recently used application by  simply hold down the home button as if to activate Google Now, and swipe left. To access the second most recently used application, a user can swipe right to the "up" arrow icon.  I also decided that I am a fan of the way that iOS allows users to four finger swipe through the list of recently used applications, and so I allowed users to perform the same list iteration through  repeated swipes to the right.  The iteration stops when the end of the list is reached; it does not wrap to preserve the concept of ordered recent apps.


These new actions allow users to switch apps faster and more effectively than what is currently available.  I will say that going from two taps to a tap and a swipe may not seem like a speed boost on a fast and sexy device like the Nexus 5, but lower-end hardware would benefit from this action.  The recent apps list in android is notorious for slow loading, and even with the improvements that have been made, I think a tap and swipe is faster (or at least way more fun than waiting for the recent apps list to load).  With the tap and swipe, the recent apps list doesn't need to be displayed or even loaded, saving a few seconds of time.  

Another cool side-effect of these actions is that, users can move between three apps easily.  This comes in handy when a users needs to get information from one app to use in another.    Let's say I need to send my friend a piece of text from a web page.  Assuming it was not recently used, I need to go home, open the browser, copy the text, and switch back to google voice.  With this implementation once I have copied the text I can swipe right and presto!  I'm back in voice.  



Final Thoughts

After using this new system for the past two months, I'd say it really hasn't made a huge difference.  It's been helpful to quickly move back an application, but often the most recently used app is the home launcher, and there is already a button for that.  I tried to remove the home button from the recently used apps list, but that caused even more confusion.  The three app switching mentioned above I rarely used, because I kept forgetting that I could swipe right.

About the only actual added benefit I received from this modification was entertainment.  I often toy with my phone when I'm bored by swiping around the home screens or swiping up into Google Now.  With these new swipes I could swipe around my list of recently used apps, which I found more entertaining than looping 'round the home screens.  

Implementation and Source

The implementation of this code isn't very difficult, and is mostly localized to the SearchPanelView java file.  To recreate it you will also need to add icons to the GlowPadView associated with the Google Now launching (the ring you see when activating search intent).  I'd also recommend resizing the ring so that the icons sit directly on top of the back and recent apps buttons.  I was too lazy to make pretty icons or worry about the exact locations.  

Link to search panel code:  SearchPanelView.java

(Please note that there are probably some bugs in the modifications I made.  Don't expect perfection)

+Android 

No comments:

Post a Comment