The basic concept of android is JFX(or JSP) like development of UI in java. You should know that android testing using emulator is very slow (unless you do it on an actual device eg droid incredible)- and unlike iphone you can freely deploy your apps on your phone. Android (like java permission file or vista/widows 7 model) like to warn before installing application - and applications have to indicate what kind of permission it needs.
Prerequisites:
Before starting Android development - you should know java first - by reading books like Core java (other programming back ground is useful) etc
Getting Started:
You should get started using :
http://www.vogella.de/articles/Android/article.html (or androids website).
Other links:
With android - you have to develop java program like in 90s(but at least its still java) :
http://developer.android.com/guide/practices/design/performance.html
You can access unix shell (eg adb shell) and analyze memory from this tutorial:
http://kohlerm.blogspot.com/2009/04/analyzing-memory-usage-off-your-android.html
Open GL ES
Android uses Open GL ES(subset of Open Gl for mobile ) for game development- just like Iphone.
Its however tough to find good books or a good tutorial on Open Gl Es for android.
Android Game video tutorial:
http://www.edu4java.com/androidgame.html
Android 3D game tutorial
http://www.droidnova.com/android-3d-game-tutorial-part-i,312.html
Making games on Android
http://www.brighthub.com/hubfolio/matthew-casperson/blog/archive/2010/01/04/making-games-on-android.aspx
Getting started Link -in games - http://www.brighthub.com/hubfolio/matthew-casperson/blog/archive/2010/01/04/making-games-on-android.aspx
OpenGlEs for Iphone(similar to OpenGl Es on Android)
http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html
Opengl(not openGles) redbook
http://fly.cc.fer.hr/~unreal/theredbook/
Android Books :
a) General Ones:
This a tough one(as they are moderate quality or will easily get outdated).
However top books seems to be :
Professional Android 2 application development (This one covers most topics- but does not explain in detail)
Pro Android 2 ( This one is similar to above book.. But I dont like reading on the cheap - yellow paperback pages provided by apress . This book was hard for me to get online - but i could preview it at barnes and nobles store - and it seemed verbose to me. )
The above two books covers the most topics - and may be your best bet now(yet- june 2010).. However there style is not good(verbose, making book huge with code/examples without clearly explaining them)
(The Unlocking Android seemed promising to me - but was outdated. The Hello, Android may be promising. I however liked the tutorial style(not content) of the heavily criticized book - Android Application Development: Programming with the Google SDK )
I have however chosen to download pdf books from http://www.commonsware.com/ which provided good content for the price - but its not a replacement for having physical book in your hand.(This site however did not post to https by default- and had no facility to change password)
b) Game Books:
There are insufficient material on developing games. But here you go:
Pro Android Games (its useful - only if you already know open gl and c++)
Beginning Android Games (not yet released)
You may need to buy books to brush your maths (but first try some games and see if you get around by googling)
3D Math Primer for Graphics and Game Development (Wordware Game Math Library)
Mathematics for 3D Game Programming & Computer Graphics (Game Development Series (Charles River Media).)
Running google Samples:
Once you have got your eclipse setup . The next step is to run google samples(that you downloaded with sdk).
If you are developing games - then googles snake example is a good one to start.
If you have a sample android project (new android project) in eclipse then - Copy googles sample
code for Snake into your project - and then remove main.xml from res/layout.
(or preferably use New Android Project ->Create project from existing sources)
You should now be able to run it on your device(like incredible) or emulator..
For me the emulator took to much time and I gave up. On incredible it ran OK on second
attempt(after doing force crash on first).
While running it - it displayed a confusing message that I need to press on some "up button".
to start playing. I quickly realized that they meant - that i need to move the track ball up.(I hardly use the
weird track ball in droid incredible)
NOTE: If your PC (or maybe phone) is sleeping then this device may go offline.
Hence you may get below error:
[2010-06-03 13:06:23 - Demo ] java.io.IOException: device (HT0DEVICE) request rejected: device offline
To fix this just kill adb.exe (From task manager) or try restarting eclipse.
MY FIRST SAMPLE CODE on Android(droid incredible):
I looked at googles sample code for Text To speech. It was too much details for a sample . Hence I used it to write my own sample. The full code of my Text to speech sample code is here:
http://android-java.blogspot.com/2010/05/tutorial-to-develop-text-to-speech-app.html
Deploying on HTC droid incredible :
The current google sdk(2.1 version 7) does not have incredible settings in its
USB configuration file. Hence when you connect your computer to charge it.
It may say that "ADB" could not be installed. Without it - you will not
be able to see - droid incredible - in target devices in eclipse(or adb devices will
not show anything).
I followed instructions on : http://www.flexjunk.com/2010/05/01/installing-htc-incredible-android-sd-drivers/
It did work on one of my xp machine(but strangely I could not make
it work on another XP machine.. maybe due to jdk or driver corruption).. Be careful
- in trying USB debugger to fix this(as my antivirus says that most of them have virus)
Running on droid incredible device :
After the ADB was installed- I just created default android project .
I then ran it - and it automatically chose my htc as target(as i did not set up any other emulator devices) . It also automatically installed in my device(with android market icon). I was pleasantly surprised that it ran immediately!(ie did not take forever to load/run - unlike when you run with emulator. It may make sense to directly
test on device.
Debugging Issue: However - i made some mistake when I tried to run TextToSpeech sample provided by google sdk(after I edited it).. It did not give any good error message . All it said on the device was that - I need to press button to forcibly close the application. Luckily - I knew the changes I made and i removed it.(it was perfectly compile application - but i had added some color stuff). Hence I would recommend that you do development in small steps - else you wont know - why your stuff is failing.
Other notes:
- There is no api to send automated email(you can just open email window).
and abused by virus) For sending email you may have to use (huge size) - ported version of javamail(as javamail is dependent on awt).
- There is facility in the api to "place phone call" . But I could not find anyway to hook - my text to speech sample into it.(ie can not leave automated telephony message)
- Similarly I could not find any easy equivalent of cron(though background services and alarms can be used)
- you can use alarms to set recurring alarms which works reliably - only when the phone is awake http://developer.android.com/reference/android/app/AlarmManager.html
- There is no developer api to put reminder in - phone users calendar - (for payment reminder etc) per http://jimblackler.net/blog/?p=151
- if you have mobile website - then you may use webview in your app.http://developer.android.com/resources/tutorials/views/hello-webview.html
- Once you install sdk - you can use ddms.bat from tools directory - > Choose a device -> and do device capture to do screen shots of stuff in your phone.
- If you want to develop cross mobile OS apps - and using HTML/JS then you may consider Titanium Appcelerator or PhoneGap
(initial impression is that Titanium is more focussed on IPhone/Android . But PhoneGap which provides little framework is truly more portable)
Other related Blog:
You may click on my blog - http://mobile-web-html.blogspot.com/ for steps/tips on creating mobile website for android,iphone. (as not many users will like
to download apps - as they can use alarms/services to impact battery life)
You can click this : choose android phone/usage/tips link to learn(or go back) more about deciding on how to choose best android phone. (developers should prefer phone that is easily rootable - to test
your app on different/upcoming android versions ). You may click here for droid incredible specific review/tips/usage.