Wednesday, May 12, 2010

Android apps can run in parrallel (video)

This is the seventh in a series of videos published by Google on Android programming.



In this video the speaker starts an app to track photos his buddy publishes on Flickr. He can keep this application running in the background, so while he is browsing or checking his email, this application will constantly track the photos and notify him if a new photo has been uploaded.

Tuesday, May 11, 2010

Adndroid apps don't have any borders (video)

This is the sixth in a series of videos provided by Google on Android programming.



Index:
00:00 Introduction
00:32 Zebra crossing application
01:35 Library app
02:14 A GeoSocial app which combines user GPS, user created photos, and Compass


My Takeaway:
Android applications do not have any borders. They can use data from other applicatiosns, they can use hardware available on the device such as camera, compass, GPS, accelerometer, etc, and they can also use content from the web API's.

The first application called Zebra Crossing is an application which can pull information from bar codes and QR codes. So if you photograph a product's bar code and give it to the application, it will pull up information about the book from the web. If on the other hand you give it a QR code from the back of a business card, it can extract contact information about that person which you can use to call or send email. The Zebra Crossing app also publishes intents, to allow other applications to communicate with it.

The second application is a library application which uses the "Zebra Crossing" app to add books to your personal library.

The third application, which I found to e really cool is an application which mashes together GPS, photographs, and the Compass to create a GeoSocial application. So here's what it does. Imagine you are on a vacation and want to locate cool things around where you are. You can use this application to find out all the photographs people have taken around that locality. If you find something you like, you can actually locate that thing (which was photographed) on a map and also use the Compass to get there. Cool isn't it?

Monday, May 10, 2010

How to embed the web in Android apps (video)

This is the fifth in a series of videos provided by Google on Android programming.



This video shows how we can use the WebView to create applications that render HTML pages. Along with being able to embed HTML and Javascript web pages in apps, the most exciting thing I found in this view was the fact that the Javascript in a webpage can communicate with Java code and Java code can communicate with javascript. This is really cool.

Sunday, May 09, 2010

Android programming - All applications are created equal (video)

This is the fourth video in the series of videos provided by Google on Android programming.





Index:
00:25 Dianes ringtone app
01:08 App to create a shortcut to anything on the system
01:36 Replacing the home screen (End at 02:17)

My Takeaway:
This video shows that all applications created on the Android platform are equal. Even though I have not done any iPhone development, I believe applications written for iPhone do not have access to everything the way Android applications do. So this is a positive for Android development.

In this video we see how to a custom application can change the ringtone on an Android phone, how another application can create shortcuts to anything on the phone, and how we can also change the 'Home' application.

Saturday, May 08, 2010

Android Programming - API's (Video)

This is the third video in the series of videos provided by Google on Android programming.



Index:
00:00 Introduction
00:16 Android API's
00:24 Location Manager
01:25 XMPP
02:42 Notification Manager
04:08 View System
06:00 Conclusion (Ends at 07:05)

My Takeaway:
In this video the speaker talks about API's provided on the Android platform to developers.

The LocationManager API allows an application to get the location of the device it is running on. This information can be used to register intents, which will inform the user if they are close to an interesting location such as a Ice Cream shop. I can also think of another use. If traffic information is available, then we can also use the location manager to inform us if we are getting close to a high traffic area. Interestingly this API uses whatever information it has to determine the location. If GPS information is available then it will use that, otherwise it will use cell tower information.

XMPP Service is used to send messages to a device. It can be used to send device to device messages, or server to device messages. I think this API can have very interesting uses. It can be used for multiplayer games, and it can probably also be used by trekkers to track each other.

The Notification Manager API provides applications the ability to send notifications to the user on the status bar. My impression is that this API is very well designed. The notification appears on the status bar, such that if a user selects it (using whatever input method available... touch, etc), it will display a preview about the application and notification. If the user is interested, they can further select the notification to go to the application which send it.

The View system provides several view controls help developers make their applications. Interesting controls include a Map control to embed location information in applications, and an HTML control to embed web pages in applications.

Wednesday, May 05, 2010

Android programming - Application lifecycle (Video)

This is the second video in the series of videos provided by Google on Android programming.




Index
00:00 - Introduction
01:00 - How Android integrates apps written by different authors.
07:50 - Conclusion (Ends at 08:16)


This video walks us through a hypothetical use case, where a user opens their email, reads a message which contains a link to some location. The user then clicks on the link, opens the browser and views the location on Google Maps.

While engaging in these activities, the user starts various applications (processes) and also navigates back and forth among them. The video explains how Android manages resources and the application stack so the user can navigate across their apps seamlessly.

My Takeaway
From the video it seems like Android supports a maximum of 4 running processes. One of those processes is the System process, so a user can have at most 3 applications running simultaneously. However, this does not mean that a user cannot open more applications. When the user opens the 4th application, Android will automatically terminate an application, and will also revive it in a known state if the user were to go to it again.

Update:
Ram pointed out that "4 running processes" is purely a number they used in this example. He is absolutely correct. 4 is just an example (perhaps they assumed 64 MB RAM on the phone...). The real number depends on the amount of memory (RAM) available on the phone.

Sunday, May 02, 2010

Android programming - architecture video

I have been getting interested in Android programming, so I went over to their website and found some introductory videos.

Here's the first one with a little index of what is discussed and my take away from the video.



Video Index:
00:0 Introduction
00:40 Linux Kernel
01:09 Native Libraries
03:09 Android runtime
04:13 Core libraries
04:31 Application framework
07:00 Applications
07:25 Application building blocks
09:37 Example of re-using components in Android
12:18 Conclusion and resources
12:48 End

My Takeaway:

Architecture wise the Android platform has several layers:
  1. Linux Kernel
  2. Native Libraries
  3. Android Runtime
  4. Core Libraries
  5. Application Framework
The applications that we make are build on top of the "application framework" layer.

The Linux Kernel was chosen because of it's stability, services, security, and presence of several device drivers.

Native Libraries consist of various components for rendering graphics and fonts (Surface Manager, OpenGL, SGL, Freetype), a lightweight database engine (SQLLite), a browser engine (WebKit), and others.

The Android Runtime consists of Dalvik the Java Virtual Machine created by Google, which is optimized for running on embedded devices which have low resources. Dalvik runs *.dex files which are created by converting *.jar and *.class files. On top of Dalvik are the core Java libraries consisting of things like the Collections, IO API, etc.

Then the Core libraries layer consists of components such as Activity Manager, Resource Manager, Package Manager, Content Provider, Telephony Manager, XMPP, etc.

Android applications typically have 4 building blocks, which applications mayor may not use. These are:
  1. Activities
  2. Intent Receivers
  3. Services
  4. Content Providers
The video ends with an example of how various applications can re-use a photo picker component. So, we may have multiple applications like email, Blooger, etc which may need to select a photo. These applications do not have to write their own photo picker. They just show an "Intent" to pick a photo, and the component which fulfills that intent will be chosen. This binding is done pretty late, so we can actually change the component that fulfills the intent, and then henceforth that component will be used for that intent.

In the next few blog posts I will be embedding more Android videos along with my learnings.