Commit Graph

385 Commits

Author SHA1 Message Date
Steve Howard
d82968d8d8 Merge "Improve accelerometer-based orientation sensing." 2010-02-25 13:42:43 -08:00
Bjorn Bringert
8354fa65eb Make setBackgroundResource() remotable
Change-Id: Iad9c2bdf743a81a085024cad9dc340ae8a983f34
2010-02-25 10:46:03 +00:00
Steve Howard
1ba101f82e Improve accelerometer-based orientation sensing.
There were three main complains about orientation sensing:
* Switching to landscape when putting a device down on a table (or picking it up)
* Changing orientation due to road bumps or vehicle vibrations while in a car dock
* Switching to upside-down too easily

This change includes three primary enhancements.

First, we run the accelerometer output through a lowpass filter before considering its orientation.  This avoids glitches due to brief phone movement, particularly when the phone hits a table.  The filter uses a very low default time constant of 200ms to retain responsiveness (note the samping period is ~200ms, so the effect of this filtering is pretty mild).  At tilt angles beyond 45 degrees, however, we increase the time constant to 600ms, which helps greatly with avoiding glitches picking the phone up from a table.  It does introduce some sluggishness when rotating while the phone is tilted back, i.e. being used in one's lap.

It's also worth mentioning that the accelerometer output on Sapphire appears to be pre-lowpass-filtered with a time constant of around 500ms, making this less necessary on that device, but the added effect doesn't noticeably degrade user experience in my opinion.

Second, we check the magnitude of the raw accelerometer output.  If it deviates from the strength of gravity by more than one m/s^2, we distrust the data, since that implies the device is under external acceleration and the sensor data doesn't accurately reflect orientation.  This helps avoid glitches due to shocks and vibrations, as in the car dock scenario.  However, rather than ignore the data entirely, we filter it with a very high time constant (5 sec).  As a result, if the device is rotated while vibrating, even if we never pick up a clean sample, we will eventually detect the orientation switch.  Of course, with a sampling period of 200ms, we're prone to aliasing, but that seems like a highly unlikely corner case.

Third, we restrict transitions to upside-down orientation to a much narrower range, both in terms of orientation and tilt.  This should prevent upside-down mode from activating in most cases where it's not desired.

I also updated a lot of stale documentation, added a lot of documentation, and cleaned up a lot of the code, so as to make this (often subtle) code as transparent as possible.
2010-02-24 18:41:59 -08:00
Romain Guy
dcc490f201 Fix the build. 2010-02-24 17:59:35 -08:00
Romain Guy
a440b002aa Prevents ListView items children to modify properties of other children.
Bug #2464502

This fix introduce a new dispatch mechanism to tell views when they are temporary
detached/reattached from/to a ListView. This is very important to remove pending
callbacks or cleanup temporary states.

This change also modifies TextView which was relying on that callback in a very
particular case: a focused EditText in a ListView. The modified code acts only
when in that case, not if onStart/FinishTemporaryDetach() is called via
dispatch*() (== recycled views in ListView.)
2010-02-24 17:15:40 -08:00
Adam Powell
32637cf9fd Merge "Recycle MotionEvents properly in GestureDetector" 2010-02-19 14:15:19 -08:00
Adam Powell
45f2ca7f7d Recycle MotionEvents properly in GestureDetector 2010-02-18 15:53:59 -08:00
Dianne Hackborn
e36d6e277e Work on issue #2263557: PMF3000 showing hybrid of portrait and landscape modes
This is a bunch of reworking of how configuration changes are handled:

- When orientation is changing (for whatever reason), the window manager no
  longer tries to pre-emptively compute a new configuration.  Instead, it
  just determines  change is happening and tells the window manager.
- The activity manager is now responsible for giving the window manager the
  final configuration it is using.  This is both so it knows whem the
  activity manager is done with its configuration updates, and so the window
  manager can use the "real" configuration.
- When an orientation or other configuration change is happening, freeze the
  screen and keep it frozen until the activity manager has given us the
  final configuration.
- The window manager can now send new configurations to its clients during
  its layout pass, as part of a resize, if it has determined that it has
  changed.  This allows for a new View.onConfigurationChanged() API for any
  view to easily find out when the configuration has changed.
- ViewRoot now also works with the activity thread to make sure the process's
  current resources are updated to the new configuration when it receives one
  from a window.  This ensures that at the time onConfigurationChanged() and
  other view callbacks are happening, the correct configuration is in force.
- There is now a sequence number associated with Configuration, which
  ActivityThread uses to avoid using stale configurations.  This is needed now
  that it can receive configurations asynchronously from both the window
  manager and activity manager.
- The hack for keeping the locale has been removed, and underlying problem
  fixed by having Configuration initialize its locale to "unknown" instead of
  a valid default value.
2010-02-18 15:47:34 -08:00
Jeff Sharkey
2b95c24138 Added more @RemotableViewMethod methods, mutate ImageView.
Catch some View methods missed during the first pass of
marking with @RemotableViewMethod annotation.  Also adds new
ImageView.setColorFilter(int) to match the android:tint XML
attribute.

When ImageView touches ColorFilter or alpha, mutate the
underlying Drawable. Fix NPE in StateListDrawable.mutate().
2010-02-17 15:03:32 -08:00
Adam Powell
c9fbaabc1b XML attribute for overscrolling behavior 2010-02-17 11:47:00 -08:00
Adam Powell
3d0ff09e35 Merge "VelocityTracker now uses pointer id instead of index when referring to multiple pointers. VelocityTracker now correctly handles multitouch. Addresses http://b/issue?id=2439030" 2010-02-16 10:14:05 -08:00
Adam Powell
73d8fca6ba VelocityTracker now uses pointer id instead of index when referring to
multiple pointers. VelocityTracker now correctly handles
multitouch. Addresses http://b/issue?id=2439030
2010-02-12 19:35:40 -08:00
Dianne Hackborn
b125dc5599 Fix MotionEvent pointer API.
Ooops.  The API said that the pointer down and up actions contained
the pointer id, but it is actually the index.  Actually it makes
much more sense for it to be the index, and those ACTION_POINTER_1_DOWN
etc. constants were stupid.
2010-02-12 17:52:22 -08:00
Gilles Debunne
f5c6eff63d Force layout on TableRows when column widths are shrinked or streched.
Also features some comment typos and import re-ordering.

Change-Id: I32cb14419d7d349064032718469daf62a0a72e3a
2010-02-12 15:57:12 -08:00
Amith Yamasani
0499498935 Add a new KEYBOARD_TAP haptic feedback type for very short, low-latency vibration.
The minimum value varies from device to device, so this is useful for defining
the shortest and most efficient vibration. The VibratorService creates a Thread
when playing back vibration patterns, so this allows you to avoid thread creation
and associated scheduling delays by specifying a one-shot duration in the config
file.
2010-02-12 15:10:37 -08:00
Dianne Hackborn
90d2db3d21 Add Pointer Location to the window manager.
The window manager now has pointer location built into it.
Viva la touch!
2010-02-12 13:19:06 -08:00
Adam Powell
4886d40091 Fix javadoc link for SDK build breakage 2010-02-12 11:32:47 -08:00
Adam Powell
0b8bb4282a Overscrolling modifications. Overscroll will not allow the user to
scroll content out of view. Scrolling will slow down halfway to the
barrier point. API added in View. AbsListView, ScrollView,
HorizontalScrollView all use this API. Overscrolling uses haptic
feedback. Added scroll barrier pattern to config.xml.
2010-02-12 10:26:25 -08:00
Romain Guy
5180d1c522 Prevent infinite loop in the Phone UI. 2010-02-10 11:29:22 -08:00
Romain Guy
b4a107d826 Fix the lock screen. 2010-02-09 18:50:08 -08:00
Adam Powell
e1d683074b am 87da8606: Manually merged VelocityTracker changes
Merge commit '87da860616009a86e260e49bbefffe12c1a06607'

* commit '87da860616009a86e260e49bbefffe12c1a06607':
  Use a circular buffer in VelocityTracker
2010-02-09 17:35:52 -08:00
Adam Powell
87da860616 Manually merged VelocityTracker changes 2010-02-09 14:25:41 -08:00
Romain Guy
305a2eb8e5 Properly notifies listener when an animation is cancelled.
Bug: #2428005.
2010-02-09 11:36:44 -08:00
Adam Powell
18f75bd45c am e88192b9: Cleanup fixes for ScaleGestureDetector
Merge commit 'e88192b9d2a8c364d8545471907c5baa275bb5f6' into eclair-plus-aosp

* commit 'e88192b9d2a8c364d8545471907c5baa275bb5f6':
  Cleanup fixes for ScaleGestureDetector
2010-02-09 10:55:57 -08:00
Adam Powell
e88192b9d2 Cleanup fixes for ScaleGestureDetector 2010-02-09 10:27:48 -08:00
The Android Open Source Project
5d36c46d2d am ad9bcb22: merge from open-source master
Merge commit 'ad9bcb22d05fbf130ac64254abd51a137e9a3d3f'

* commit 'ad9bcb22d05fbf130ac64254abd51a137e9a3d3f':
  Fix x coordinate of the ACTION_UP event in TouchUtils.drag() method
  Fixed Android animation framework, for using interpolators that do not start at 0.0f
  Fix for GPS engines without separate session and engine status events.
  Be tolerant of GPS session and engine on status messages arriving out of order.
  GpsLocationProvider: Do not release wakelock until the GPS engine is fully off
2010-02-08 09:17:10 -08:00
The Android Open Source Project
ad9bcb22d0 merge from open-source master 2010-02-05 13:55:16 -08:00
Adam Powell
b09ef7b4fa Merge "Use a circular buffer in VelocityTracker" 2010-02-05 13:01:22 -08:00
Andreas Agvard
4766defdd0 Fixed Android animation framework, for using interpolators that do not start at 0.0f
There is a bug that affects interpolators that do not return 0.0f when given 0.0f as input. All default interpolators in Android do return 0.0f, which is why it hasn't been
noticed. Some custom interpolators can for example run backwards, returning 1.0f when given input 0.0f.
2010-02-05 08:16:01 +01:00
Dianne Hackborn
2a9094d079 Framework part of issue #2391576: Add method to start the Jit and call it 2010-02-04 11:54:34 -08:00
Adam Powell
732ebb1bc3 Fixed a regression in View.cancelLongPress 2010-02-03 11:31:10 -08:00
Adam Powell
ab905c87b7 Javadoc fixes to ScaleGestureDetector for SDK builds 2010-02-03 11:01:58 -08:00
Marc Capdevielle
ce760cd6df Use a circular buffer in VelocityTracker
Optimizes the frequently called addPoint() method while keeping the
same velocity computation.

Thx Cyril Mottier for help and tests.
2010-02-03 11:15:38 +01:00
Adam Powell
216bccf804 Updated GestureDetector to ignore multitouch if requested by the app
or if targetSdkVersion >= Froyo. Made ScaleGestureDetector
public. current.xml API updates for gestures.
2010-02-02 17:52:29 -08:00
Christopher Tate
95f7850a9d Fix build: javadoc @link pointers need HTML-style #refname
Change-Id: I0e061516fce2bcf5dea401f58180f2ff396482ab
2010-01-29 15:57:34 -08:00
Mike Lockwood
ef73162887 Support for triggering the lockscreen while the screen is on:
Add new ALLOW_LOCK_WHILE_SCREEN_ON window manager flag, which when set
causes the window manager to put up the lockscreen after the
normal screen timeout has elapsed.

Add plumbing to pass PowerManager.userActivity() to the window manager policy.

Change-Id: I05adc52bad39c56031a08e8ec3cbcf5c2d9b9827
Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-01-29 17:05:04 -05:00
Dianne Hackborn
254cb446fa More device admin.
- Clean up device policy manager APIs.
- Implement lockNow().  For now this just turns the screen off to lock the device.
2010-01-28 13:15:57 -08:00
Romain Guy
43c9cdffb6 New View.dispatchDisplayHint() API.
Bug #2399147

This new API will be used by scrollable containers to tell children that they
are/are not displayed. This will allow lists to hide their filter popup window
for instance.
2010-01-27 15:53:40 -08:00
Grace Kloba
f96a91abb6 am 5b745762: am d5ada83c: ScaleGestureDetector needs to query the displaymetrics for the width/height on each touch down as orientation can change.
Merge commit '5b74576218055f1c9d31d9559255e8cf504cd662'

* commit '5b74576218055f1c9d31d9559255e8cf504cd662':
  ScaleGestureDetector needs to query the displaymetrics
2010-01-25 18:13:12 -08:00
Grace Kloba
8ad96ae820 am f8c7d06f: am 89e3c1ab: Merge "Fix the sloppy detection in the ScaleGestureDetector." into eclair
Merge commit 'f8c7d06ffa67015516b822a992513ab86aad1ad5'

* commit 'f8c7d06ffa67015516b822a992513ab86aad1ad5':
  Fix the sloppy detection in the ScaleGestureDetector.
2010-01-25 18:11:02 -08:00
Adam Powell
a948f4787b am 97b10853: am 5910cb53: Merge "Edge of screen slop detection for ScaleGestureDetector." into eclair
Merge commit '97b108532f04f72af035e372be7b827f77888650'

* commit '97b108532f04f72af035e372be7b827f77888650':
  Edge of screen slop detection for ScaleGestureDetector.
2010-01-22 12:00:24 -08:00
Romain Guy
cf635ae7c6 Bring back buttons in dialogs.
Bug #2390537
2010-01-22 11:00:29 -08:00
Grace Kloba
d5ada83c71 ScaleGestureDetector needs to query the displaymetrics
for the width/height on each touch down as orientation
can change.

This should fix the problem where we can't pinch on the
top right corner when device is in landscape mode.
2010-01-20 23:06:43 -08:00
Grace Kloba
8f9fbb0c45 Fix the sloppy detection in the ScaleGestureDetector.
Fix http://b/issue?id=2385061
2010-01-20 17:35:50 -08:00
Adam Powell
380b525220 Edge of screen slop detection for ScaleGestureDetector. 2010-01-19 16:33:46 -08:00
Romain Guy
bc9fdc9260 Make sure the drawing cache is invalidated when reattaching a view.
Bug #2373677
2010-01-19 13:27:48 -08:00
Adam Powell
3e22d199a0 am b5a5a397: am 56a17690: Merge "TransformGestureDetector is now ScaleGestureDetector - scope reduced. N1 screen can\'t reliably handle translation and scaling at the same time." into eclair
Merge commit 'b5a5a39716502be2cd325a6f9b393e155c0636ee'

* commit 'b5a5a39716502be2cd325a6f9b393e155c0636ee':
  TransformGestureDetector is now ScaleGestureDetector - scope reduced.
2010-01-19 00:02:00 -08:00
Dianne Hackborn
d68478467e First pass at new device policy and administration APIs.
This adds new DevicAdmin, DevicePolicyManager, and DeviceAdminInfo classes.
See the java docs for each on documentation on them.  Basically: a DeviceAdmin
is what you derive from to administer a device; DevicePolicyManager is what you
use to apply and check your policy requirements and perform other administration
tasks.
2010-01-17 15:10:24 -08:00
Romain Guy
52e2ef8cac Update ListView's children when the drawing cache color hint changes.
Bug #2371777
2010-01-14 12:18:15 -08:00
Adam Powell
ae542ff055 TransformGestureDetector is now ScaleGestureDetector - scope reduced.
N1 screen can't reliably handle translation and scaling at the same time.
2010-01-13 17:08:31 -08:00