86 Commits

Author SHA1 Message Date
Mathias Agopian
e558010a62 NDK sensor API
Change-Id: Ie07afc349ca3331e065725ba9d7ebe9722959653
2010-07-13 21:17:40 -07:00
Dianne Hackborn
2388ad9eef am f8d9379b: am d76b67c3: IME events are now dispatched to native applications.
Merge commit 'f8d9379bd834573feca085284970cf686993c330'

* commit 'f8d9379bd834573feca085284970cf686993c330':
  IME events are now dispatched to native applications.
2010-07-13 19:50:36 -07:00
Dianne Hackborn
d76b67c340 IME events are now dispatched to native applications.
And also:

- APIs to show and hide the IME, and control its interaction with the app.
- APIs to tell the app when its window resizes and needs to be redrawn.
- API to tell the app the content rectangle of its window (to layout
  around the IME or status bar).

There is still a problem with IME interaction -- we need a way for the
app to deliver events to the IME before it handles them, so that for
example the back key will close the IME instead of finishing the app.

Change-Id: I37b75fc2ec533750ef36ca3aedd2f0cc0b5813cd
2010-07-13 18:36:46 -07:00
Jeff Brown
6ac7674e14 am 89ee578b: am fd035829: Add initial gamepad support.
Merge commit '89ee578b7053d27a50922f82feb94bf6054b330c'

* commit '89ee578b7053d27a50922f82feb94bf6054b330c':
  Add initial gamepad support.
2010-07-13 17:48:56 -07:00
Jeff Brown
fd03582995 Add initial gamepad support.
Change-Id: I0439648f6eb5405f200e4223c915eb3a418b32b9
2010-07-13 17:04:57 -07:00
Dianne Hackborn
d63c5d4e93 am bbf0bde5: am faccac76: Make a stupid thing about the glue less stupid.
Merge commit 'bbf0bde5d8311f84b6f0a8d018d78a78429602b7'

* commit 'bbf0bde5d8311f84b6f0a8d018d78a78429602b7':
  Make a stupid thing about the glue less stupid.
2010-07-09 18:30:22 -07:00
Dianne Hackborn
faccac7616 Make a stupid thing about the glue less stupid.
There is no reason to make the app developer delete the
glue.  Seriously.

Change-Id: Ic6a93ba17b44889783b35a2a0a2b67ffcd647f47
2010-07-09 18:20:09 -07:00
Dianne Hackborn
8445ca6c3b am b14f325a: am 289b9b62: Add ANativeWindow API for directly drawing to the surface bits.
Merge commit 'b14f325a0118ffce286155caaabaae149653462c'

* commit 'b14f325a0118ffce286155caaabaae149653462c':
  Add ANativeWindow API for directly drawing to the surface bits.
2010-07-09 17:05:23 -07:00
Dianne Hackborn
289b9b6237 Add ANativeWindow API for directly drawing to the surface bits.
Also other cleanup and fixes:

- We now properly set the default window format to 565.
- New APIs to set the window format and flags from native code.
- Tweaked glue for simpler handling of the "destroy" message.
- Um, other stuff.

Change-Id: Id7790a21a2fa9a19b91854d225324a7c1e7c6ade
2010-07-09 16:58:19 -07:00
Dianne Hackborn
d8a6271bb1 am 49159f07: am 74bf59b4: Merge "Add new glue code for writing native apps." into gingerbread
Merge commit '49159f0748c704e53a7bd754f26113d9ab844a97'

* commit '49159f0748c704e53a7bd754f26113d9ab844a97':
  Add new glue code for writing native apps.
2010-07-08 19:10:17 -07:00
Dianne Hackborn
85448bbecd Add new glue code for writing native apps.
This factors out the boiler-plate code from the sample
app to a common glue code that can be used for everyone
writing this style of app: a dedicated app thread that
takes care of waiting for events and processing them.

As part of doing this, ALooper has a new facility to allow
registration of fds that cause ALooper_pollOnce() to return
the fd that has data, allowing the app to drive the loop
without callbacks.  Hopefully this makes some people feel better. :)

Also do some other cleanup of the ALooper API, plus some
actual documentation.

Change-Id: Ic53bd56bdf627e3ba28a3c093faa06a92be522b8
2010-07-08 11:06:59 -07:00
Dianne Hackborn
97250d5c4a am e24901d3: am 68267415: Add new native Looper API.
Merge commit 'e24901d3adb28fff72821d4e8e2ccc25b2184550'

* commit 'e24901d3adb28fff72821d4e8e2ccc25b2184550':
  Add new native Looper API.
2010-07-07 09:14:57 -07:00
Dianne Hackborn
682674154e Add new native Looper API.
This allows us to avoid exposing the file descriptor of
the event queue; instead, you attach an event queue to
a looper.  This will also should allow native apps to be
written without the need for a separate thread, by attaching
the event queue to the main thread's looper and scheduling
their own messages there.

Change-Id: I38489282635895ae2cbfacb88599c1b1cad9b239
2010-07-02 18:57:02 -07:00
Dianne Hackborn
4847e630e5 am 39c921c6: am 8ae5a8e7: Get to the point of being able to do native drawing.
Merge commit '39c921c6e5316696d8c61d1ee465f9b5f894c4ed'

* commit '39c921c6e5316696d8c61d1ee465f9b5f894c4ed':
  Get to the point of being able to do native drawing.
2010-07-01 19:26:57 -07:00
Dianne Hackborn
8ae5a8e7c0 Get to the point of being able to do native drawing.
A little cleanup.

Change-Id: I37ef0557abf330d91d6fe47e81d062206b3bc346
2010-07-01 18:44:46 -07:00
Dianne Hackborn
738639ccd0 am 58f35ff4: am 54a181b1: Make real API for native code to get its window.
Merge commit '58f35ff41601769ca4f357575a9385f16c01b991'

* commit '58f35ff41601769ca4f357575a9385f16c01b991':
  Make real API for native code to get its window.
2010-07-01 16:04:02 -07:00
Dianne Hackborn
54a181b1a2 Make real API for native code to get its window.
Added implementation to use ANativeWindow and provide
it to a NativeActivity.

Change-Id: I890d71b6e15d4af71e6cf81b327961d7061ec1c2
2010-07-01 14:43:23 -07:00
Dianne Hackborn
efcd77407b am 177c405a: am c6e1d880: Merge "Introduce official public NativeWindow type." into gingerbread
Merge commit '177c405a242e811b1010bd8382b5807ab8df31a8'

* commit '177c405a242e811b1010bd8382b5807ab8df31a8':
  Introduce official public NativeWindow type.
2010-06-30 16:11:21 -07:00
Dianne Hackborn
25a98b8e21 resolved conflicts for merge of 7f6c6e8f to master
Change-Id: Id9dddb78c51f16ff8c4b60339421c94fde506db2
2010-06-30 15:44:58 -07:00
Dianne Hackborn
8b49bd1a2f Introduce official public NativeWindow type.
Not yet hooked up to anything in the NDK, but requires renaming
the existing android_native_window_t type everywhere.

Change-Id: Iffee6ea39c93b8b34e20fb69e4d2c7c837e5ea2e
2010-06-30 15:32:04 -07:00
Dianne Hackborn
3c80a4a044 Implement default key handling for native code.
The native code now maintains a list of all keys that may use
default handling.  If the app finishes one of these keys
without handling it, the key will be passed back off to Java
for default treatment.

Change-Id: I6a842a0d728eeafa4de7142fae573f8c11099e18
2010-06-30 10:49:40 -07:00
Dianne Hackborn
639061d9c2 am b5f05d00: am 0934fbb6: Merge "Update native activity & event APIs to follow correct conventions." into gingerbread
Merge commit 'b5f05d0018d72531e40c2afadfee90e9bc0c8893'

* commit 'b5f05d0018d72531e40c2afadfee90e9bc0c8893':
  Update native activity & event APIs to follow correct conventions.
2010-06-29 12:21:16 -07:00
Dianne Hackborn
2e9f93e8db Update native activity & event APIs to follow correct conventions.
Change-Id: Ie64fb3a9c68bc9c117fa5621b75d1f609e304e0e
2010-06-29 10:43:54 -07:00
Dianne Hackborn
320742b15a am e3e2883f: am e24a60aa: Merge "First stab at attaching native event dispatching." into gingerbread
Merge commit 'e3e2883f2232007174ead562610eb01201890d9b'

* commit 'e3e2883f2232007174ead562610eb01201890d9b':
  First stab at attaching native event dispatching.
2010-06-23 10:32:25 -07:00
Dianne Hackborn
a95e4cb62f First stab at attaching native event dispatching.
Provides the basic infrastructure for a
NativeActivity's native code to get an object representing
its event stream that can be used to read input events.

Still work to do, probably some API changes, and reasonable
default key handling (so that for example back will still
work).

Change-Id: I6db891bc35dc9683181d7708eaed552b955a077e
2010-06-22 11:21:50 -07:00
Jeff Brown
4e74ae3d5b am 42bb545a: am 5c225b16: Even more native input dispatch work in progress.
Merge commit '42bb545a54d89f0ddbb230d7a01ea4210c0f6c00'

* commit '42bb545a54d89f0ddbb230d7a01ea4210c0f6c00':
  Even more native input dispatch work in progress.
2010-06-17 13:32:45 -07:00
Jeff Brown
5c225b1680 Even more native input dispatch work in progress.
Added more tests.
Fixed a regression in Vector.
Fixed bugs in pointer tracking.
Fixed a starvation issue in PollLoop when setting or removing callbacks.
Fixed a couple of policy nits.

Modified the internal representation of MotionEvent to be more
efficient and more consistent.

Added code to skip/cancel virtual key processing when there are multiple
pointers down.  This helps to better disambiguate virtual key presses
from stray touches (such as cheek presses).

Change-Id: I2a7d2cce0195afb9125b23378baa94fd2fc6671c
2010-06-17 13:27:16 -07:00
Jeff Brown
8e03b7566c resolved conflicts for merge of 9e660c82 to master
Change-Id: Ic4bd85cbaa5b9a10dcb474a0dad46490bf967e43
2010-06-13 19:16:55 -07:00
Jeff Brown
46b9ac0ae2 Native input dispatch rewrite work in progress.
The old dispatch mechanism has been left in place and continues to
be used by default for now.  To enable native input dispatch,
edit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy.

Includes part of the new input event NDK API.  Some details TBD.

To wire up input dispatch, as the ViewRoot adds a window to the
window session it receives an InputChannel object as an output
argument.  The InputChannel encapsulates the file descriptors for a
shared memory region and two pipe end-points.  The ViewRoot then
provides the InputChannel to the InputQueue.  Behind the
scenes, InputQueue simply attaches handlers to the native PollLoop object
that underlies the MessageQueue.  This way MessageQueue doesn't need
to know anything about input dispatch per-se, it just exposes (in native
code) a PollLoop that other components can use to monitor file descriptor
state changes.

There can be zero or more targets for any given input event.  Each
input target is specified by its input channel and some parameters
including flags, an X/Y coordinate offset, and the dispatch timeout.
An input target can request either synchronous dispatch (for foreground apps)
or asynchronous dispatch (fire-and-forget for wallpapers and "outside"
targets).  Currently, finding the appropriate input targets for an event
requires a call back into the WindowManagerServer from native code.
In the future this will be refactored to avoid most of these callbacks
except as required to handle pending focus transitions.

End-to-end event dispatch mostly works!

To do: event injection, rate limiting, ANRs, testing, optimization, etc.

Change-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25
2010-06-13 17:42:16 -07:00
David 'Digit' Turner
01f2f960e7 Improved native TTS interface header.
The purpose of this patch is to add a C-based ABI that can be exposed by the NDK
for developers wanting to write a TTS Engine. This replaces the C++ ABI that is
currently under frameworks/base/include/tts/TtsEngine.h but is *binary* compatible
with it.

As a consequence, the svox pico plugin under external/svox/pico/tts/, which
links against tts/TtsEngine.h can be loaded by the TTS service properly.

Another patch would modify the pico tts to use <android/tts.h>, then we will
be able to get rid of <tts/TtsEngine.h> in the source tree.

Change-Id: I16844cef9b5b006cc32655a29e4f9f193c8c1a91
2010-06-11 18:02:51 -07:00
Dianne Hackborn
74323fd1ab Update NativeActivity to allow direct surface access.
No actual native API for using a surface, but it's a step.

Change-Id: I627f26b705abc7a05edf9117411abfacf0fae64a
2010-05-18 18:16:35 -07:00
Dianne Hackborn
dc8a7f69d7 Add new API to take over a window's Surface.
Change-Id: Iad6245faadc95f19ea63c8e229a1c02e9188f69e
2010-05-18 10:46:33 -07:00
Dan Bornstein
ea5477c854 am 89ad07b0: am 42ee86e6: Merge "For issue #2651381, allow library prelinking." into froyo
Merge commit '89ad07b048ff035394596d6a8916f639f3f0b868' into kraken

* commit '89ad07b048ff035394596d6a8916f639f3f0b868':
  For issue #2651381, allow library prelinking.
2010-05-06 12:43:52 -07:00
Dan Bornstein
782e9fd749 For issue #2651381, allow library prelinking.
Change-Id: I1cb467a158e21fc02cac6af585ac8d27c2bf42de
2010-05-05 18:23:05 -07:00
Dianne Hackborn
69969e48f2 First pass at NativeActivity.
This is a rough sketch of the new pure-native API, which you can
use through a NativeActivity in your manifest (no Java code in
the .apk needed!).

Intentionally no docs yet, the API is still being seriously
messed with.  But it works.

Change-Id: I0e916d58a0d159ecaf3689e41834eb8dc681c0c0
2010-05-05 15:17:26 -07:00
Dima Zavin
3227631fe9 Move the NDK graphics wrapper (libjnigraphics) to frameworks/base/native
Change-Id: I2a5adde9f8e4683c4b4526a29ad276c3e581e029
Signed-off-by: Dima Zavin <dima@android.com>
2010-02-04 15:31:19 -08:00