Many people feel a little dizzy or nauseous when reading on a train or
car. This happens because your eyes see that the phone (or book) moves
up and down but your body doesn't feel that movement. (more info
<http://www.nytimes.com/2008/07/15/science/15qna.html>)
This is a pretty common situation. Particularly for me as a student I
spend hours of commuting time daily reading or browsing on my phone.
Now that Ubuntu has a goal of improving user experience on mobile and
desktop, I was thinking about what we can do to help people feel
better in these kinds of situation.
The logical solution to this is compensating phone movements by
reading input from accelerometer sensors and moving screen buffer a
little bit to compensate that movement.
Scenario goes like this:
1. Every few seconds when phone is awake, it checks for vertical
vibrations with frequencies in order of 1-2Hz. If we keep record
of one second of data from sensor, measuring this is easy with
a discrete Fourier transform or any other similar method.
2. If the amount of vibrations passed a threshold and stayed more
than that amount for a couple of seconds, phone shrinks the screen
vertically for a small amount (a couple of millimeters)
3. Every couple of frames phone reads from accelerometer and moves
the screen vertically to compensate that movement.
4. When phone detected that the vibrations have come down below the
threshold, it will grow the screen back to its full size.
I have made some some assumptions here:
* That reading constantly from accelerometer does not have a drastic
effect on battery usage (compared to battery usage of screen,
because this needs to happen only when screen is on).
* That we can shrink the screen vertically a millimeter or two on
the fly when device detects these movements or the feature is enabled.
* That moving visual output on scale of millimeters is actually
enough to make user feel less dizzy.
* That we can read input and move buffer fast enough. If we don't
act fast enough, we might be making it worse for the user :)
* And that moving vertically is enough to help users. Maybe we
should move horizontally too.
It is not something that is totally impossible to implement, for
example iOS has an eye-candy that it moves background picture a little
bit (in real time) when you tilt the device. (The difference is that
we need to react to movement and not angular movement.)
It's just an idea :) Let's talk about it.
Arash