Android APIs are Java. Since 2010, Google provides the NDK (a SDK) for C/C++ developers. 

The NDK offers two ways:

 - for android 1.5 devices, you can load an elf library and uses it from the java application via a JNI  bridge
 - for android 2.3 devices, you can use a NativeActivity to bypass the Java Activity code for Fullscreen Application.

The NDK offers few C/C++ API:

 - a pseudo libc called bionics: many functions aren't availabled
 - a pthread library
 - OpenGL ES 1.x (>Android 1.5) and OpenGL ES 2.x (Android 2.0)
 - OpenSL (limited support on Android 2.3) 

But many API are Java only (also available via JNI).

NDK 5 version is the first usable for C++ developers because it offers:

 - RTTI
 - Exceptions supports
 - STLport
 - gdb support for multi-threaded programs

The most painful operation is debugging on android devices. So i develop my own multi-platform framework (OS X, Windows, Linux, iOS and Android) to debug first on desktop platform, next iOS platform (on Simulator) and Last (Android).

The android Emulator (not a simulator) have a poor performance and can't emulate OpenGL ES 2.x. I recommend real devices to develop.

You can find many useful informations :

 - [input code][1]
 - [Phil hassley porting Galcon][2]  (10 articles)


  [1]: http://www.ellismarkov.com/keyboard-input-with-ndk
  [2]: http://www.philhassey.com/blog/2010/07/20/android-day-1-sdk-eclipse-ide-and-device-activation/