Here is a set of links that I recommend you follow to get up to speed with Android development. Most of these are from the official documentation page. I feel like the documentation isn't arranged too great, not everything is where you'd expect, making some things hard to find. In fact, while compiling this list, I came upon some very useful pages that I had missed up to this point. The order of these links are slightly different from the official documentation, and I skip a lot of areas, so make sure you look at the rest of the documentation based on your needs.
Start out by installing the Android SDK and related tools.
http://code.google.com/android/intro/...
After that, follow these step-by-step instructions for a simple Hello World app. This will confirm you have your SDK and development environment set up correctly, and also give you a good introduction to basic Android concepts.
http://code.google.com/android/intro/...
Now get your hands even more dirty, and complete the Notepad tutorial. I strongly recommend this, even if it starts out boring! You'll learn more about UI creation, creating menus, using SQLite, creating apps with multiple screens, and dealing with life-cycle events. This tutorial assumes you're comfortable with Java, but you should be fine if you have experience with any OO language. If not, maybe you can go through the tutorial with a more experienced partner. The entire tutorial should take between 1-2 hours.
http://code.google.com/android/intro/...
Now would be a good time to gain a better understanding of some of the underlying concepts. Some of these are stuff we discussed, but you should still read these. The Activity reference page is probably the most important and will apply to almost all applications.
http://code.google.com/android/intro/...
http://code.google.com/android/refere...
http://code.google.com/android/refere...
More serious developers should read these too:
http://code.google.com/android/intro/...
http://code.google.com/android/intro/...
http://code.google.com/android/refere...
http://code.google.com/android/refere...
http://code.google.com/android/devel/...
http://code.google.com/android/kb/fra...
You're probably going to want a nice UI for whatever app you develop. Here are some short guides on various UI implementation topics:
http://code.google.com/android/devel/...
If you find yourself wondering about data storage options, take a look at this:
http://code.google.com/android/devel/...
Some features available in Android are protected. To use these, you must declare specific permissions. Features that are protected include internet access, fetching location info, using the camera, and many more. When users install an application, they are informed of the permissions being requested by the app. This will tell you what you need to know:
http://code.google.com/android/devel/...
Here is an incredibly useful page. Common Tasks and How To Do Them in Android. I had to figure some of this stuff out on my own before discovering this page, I can tell you it was not fun.
http://code.google.com/android/kb/com...
Another very useful source of coding wisdom are the API demos that come with the SDK. This should be pre-installed in the emulator. I recommend going through all the items in the demo, to get a sense of what's available. If you find some functionality that is similar to what you need in your app, you can locate the source code for that particular functionality and copy it into your project. Create a new project in Eclipse using the existing API Demos project folder to view and fool around with the source code. This can be a very enlightening experience. Details here:
http://code.google.com/android/intro/...
Another set of sample apps with source code is available on Google Code. These are more sophisticated programs, including games and multimedia and online apps. The code isn't as easy to read as the API Demos, but it can still be useful if you find something you need in your own app. If you import the source code into Eclipse, you can actually compile and run the apps on the emulator. Here's where you can find it (go to the source tab and click browse and look under the "trunk" node):
http://code.google.com/p/apps-for-and...
Here is some useful information for debugging application in Eclipse:
http://code.google.com/android/intro/...
http://code.google.com/android/intro/...
Here are some other tools that may come in handy. adb will give you command line access. ddms connects eclipse to the emulator (or device).
http://code.google.com/android/intro/...
Info on location APIs and how to fake location data on the emulator:
http://code.google.com/android/toolbo...
Sensors (accelerometers, compass, orientation) are accessible through the android.hardware package, which may not be immediately obvious. There isn't much documentation on using the sensors. Do read the SensorListener and SensorManager reference pages. There is a thorough sensor example in the API Demos.
http://code.google.com/android/refere...
Speaking of sensors, how can you simulate sensor data in the emulator? Here's how:
http://code.google.com/p/openintents/...
http://www.openintents.org/en/node/23
If you're really into it, you can even get the emulator to respond to sensor data from a Wii-mote! (Not tested by me!)
http://blog.dalethatcher.com/2008/04/...
In the same vein, you can use a webcam to provide camera imagery to your app! (Not tested by me, looks complicated!)
http://www.tomgibara.com/android/came...
If you manage to get the last two links working, your emulator will be on par with the actual G1 phone in terms of API features! Want it to match the G1 in terms of looks?
http://www.jsharkey.org/blog/2008/10/...
Unless your app is really simple, it will probably require some sort of threading. Here's a good article on threading in Android:
http://www.ociweb.com/jnb/jnbJan2009....
Links to useful development blogs and forums:
http://www.curious-creature.org/categ...
http://www.jsharkey.org/blog/
http://www.tomgibara.com/android/
http://mylifewithandroid.blogspot.com/
http://android-developers.blogspot.com/
http://developerlife.com/tutorials/?c...
http://www.helloandroid.com/tutorials
http://androidcommunity.com/ (go on the forums)