Brainstorm

Optimize time/performance/usability of common actions in Phone UI

Posted on 2010-01-26 23:47 UTC by Erik Nygren. Status: Under consideration, Categories: User Experience.

One of the challenges in using the N900 as a phone is that user interactivity with phone calls often has soft real-time requirements which application performance issues sometimes get in the way of.  This can be particularly bad when using services such as Google Voice or calling cards which require multiple interactions.

For example, take the following scenario that I have experienced many times:

  • My phone starts ringing in my pocket with a call routed via Google Voice (which means the caller has already been waiting 1-3 seconds as that latency seems to be inherent in the system).
  • I pull the phone out of my pocket (which is sometimes a tricky decision due to the lack of per-caller ringtones so I have no idea who is calling).  This takes a few seconds.
  • I try to look at the screen to see who is calling, but it is busy rotating the screen (which has an animation that can take a second during which time the screen is unreadable).
  • I click answer once the screen is done rotating and then press the button to bring up the keypad so I can press "1" to accept the call.  If I'm unlucky, at some point the accelerometer will have decided that I rotated the phone differently as part of taking it out of my pocket and I'll have to wait through the animation again.  If I'm particularly unlucky, some part of the UI or application will have gotten swapped out when I had the phone off and things will crawl down and take a few more seconds.
  • The result of all of this is that I end up with a missed call more often than not as the caller sometimes has given up by the time I've completed the task of answering the phone.

Google Voice is just one example use-case for this.  Similar problems exist with calling cards or phone trees where users need to jump back and forth between the keypad, the phone app, and other apps.

This brainstorm is for identifying solutions for improving this class of experience --- in particular, making the phone more usable as a phone where people need to interact with it in real-time.  (Some of the solutions will presumably overlap with solutions for other brainstorms.)

More general phone-related improvements are discussed in this other brainstorm:

http://maemo.org/community/brainstorm/view/improving_the_maemo_5_cell_phone_experience/

 

Discussion and comments should go to this thread:

http://talk.maemo.org/showthread.php?t=42359

Solutions for this brainstorm

0
0
0

Solution #1: Speed up or eliminate screen rotation animation

Posted on 2010-01-26 23:47 UTC by Erik Nygren.

The slowness of the screen rotation animation can get in the way of usability, especially when the system is under load.  Some options here include:

  • Speed up the default animation
  • Allow the animation speed to be user-configurable (there is an alpha-quality app in devel that provides some degree of control over this).
  • Eliminate the rotation animation during some time-critical tasks (such as phone answering)
0
0
0

Solution #2: Add physical buttons for some common phone actions

Posted on 2010-01-26 23:50 UTC by Erik Nygren.

In particular, these buttons would be valuable as hard buttons in future versions of the hardware:

  • Answer
  • Reject/end call (although the "flip phone on its face to reject" feature helps here)
  • Mute/unmute   (I really miss this button from my Nokia E51, especially during conference calls)

There might be ways to overload existing buttons in future software --- for example, use the camera button to mute and unmute if the camera is not active, and similarly allow it to be used to accept calls?

0
0
0

Solution #3: Numeric keypad always available in phone app

Posted on 2010-01-26 23:51 UTC by Erik Nygren.

Make the numeric keypad appear by default when the phone app is active.

0
0
0

Solution #4: Add per-caller and per-call-group ringtones

Posted on 2010-01-26 23:54 UTC by Erik Nygren.

Adding per-caller or per-call-group ringtones would be very useful for knowing when to answer the phone without looking at it.  (This has plenty of CRs and at least one other brainstorm devoted to it.)

0
0
0

Solution #5: Improve real-time task performance of phone app/ui under resource pressure

Posted on 2010-01-27 00:00 UTC by Erik Nygren.

Profile and optimize the behavior of the phone app as well as UI elements on which it relies, under both CPU load and memory pressure (including the latter after the phone has been turnd on for some degree of time).

Ways to improve this might include changing the nice level of some processes, putting some processes into a real-time scheduling queue, or perhaps pinning memory for the phone app and related UI elements into memory so that they don't get swapped out.

(It appears some effort has been put into this already.  For example, active ringtones appear to get copied onto faster storage.)

Latest activities to brainstorm Optimize time/performance/usability of common actions in Phone UI