google android
TRANSCRIPT
Bruce Scharlau, University of Aberdeen, 2009
Google Android
Mobile Computing
Based on android-sdk_1.6-r1
Bruce Scharlau, University of Aberdeen, 2009
Android is part of the ‘build a better phone’ process
Open Handset Alliance produces Android
Open Handset Alliance produces Android
Comprises handset manufacturers, software firms, mobile operators, and other manufactures and funding companies
Comprises handset manufacturers, software firms, mobile operators, and other manufactures and funding companies
http://www.openhandsetalliance.com/
Bruce Scharlau, University of Aberdeen, 2009
Android is growinght
tp:/
/ww
w.a
dmob
.com
/mar
ketin
g/p
df/
mob
ile_m
etric
s_ja
n_0
9.p
df
Small, 1% of online web requests
Small, 1% of online web requests
http
://m
etric
s.ad
mob
.com
/ -
Sep
t 20
09
Bigger, 10% of online web requests
Bigger, 10% of online web requests
Bruce Scharlau, University of Aberdeen, 2009
Android makes mobile Java easier
http://code.google.com/android/goodies/index.html
Well, sort of…
Bruce Scharlau, University of Aberdeen, 2009
Android applications are written in Java
package com.google.android.helloactivity;
import android.app.Activity;import android.os.Bundle;
public class HelloActivity extends Activity { public HelloActivity() { }@Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.hello_activity); }}
Bruce Scharlau, University of Aberdeen, 2009
Android applications are compiled to Dalvik bytecode
Write app in JavaWrite app in Java
Compiled in JavaCompiled in Java
Transformed to Dalvik bytecodeTransformed to Dalvik bytecode
Linux OS Linux OS
Loaded into Dalvik VMLoaded into Dalvik VM
Bruce Scharlau, University of Aberdeen, 2009
The Dalvik runtime is optimised for mobile applications
Run multiple VMs efficientlyRun multiple VMs efficiently
Each app has its own VMEach app has its own VM
Minimal memory footprintMinimal memory footprint
Bruce Scharlau, University of Aberdeen, 2009
Android has many components
Bluetooth and USB drivers now gone from kernelXMPP gone from application framework
Bruce Scharlau, University of Aberdeen, 2009
Android has a working emulator
Bruce Scharlau, University of Aberdeen, 2009
All applications are written in Java and available to each other
Android designed to enable reuse of components in other applications
Android designed to enable reuse of components in other applications
Each application can publish its capabilities which other apps can use
Each application can publish its capabilities which other apps can use
Bruce Scharlau, University of Aberdeen, 2009
Android applications have common structureViews such as
lists, grids, text boxes, buttons, and even an embeddable web browser
Views such as lists, grids, text boxes, buttons, and even an embeddable web browser
Content Providers that enable applications to access data from other applications (such as Contacts), or to share their own data
Content Providers that enable applications to access data from other applications (such as Contacts), or to share their own data
A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files
A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files
A Notification Manager that enables all apps to display custom alerts in the status bar
A Notification Manager that enables all apps to display custom alerts in the status bar
An Activity Manager that manages the life cycle of applications and provides a common navigation backstack
An Activity Manager that manages the life cycle of applications and provides a common navigation backstack
Bruce Scharlau, University of Aberdeen, 2009
Android applications have common structure
Broadcast receivers can trigger intents that start an application
Broadcast receivers can trigger intents that start an application
Data storage provide data for your apps, and can be shared between apps – database, file, and shared preferences (hash map) used by group of applications
Data storage provide data for your apps, and can be shared between apps – database, file, and shared preferences (hash map) used by group of applications
Services run in the background and have no UI for the user – they will update data, and trigger events
Services run in the background and have no UI for the user – they will update data, and trigger events
Intents specify what specific action should be performed
Intents specify what specific action should be performed
Activity is the presentation layer of your app: there will be one per screen, and the Views provide the UI to the activity
Activity is the presentation layer of your app: there will be one per screen, and the Views provide the UI to the activity
Bruce Scharlau, University of Aberdeen, 2009
There is a common file structure for applications
code
images
files
UI layouts
constants
Autogenerated resource list
Bruce Scharlau, University of Aberdeen, 2009
Standard components form building blocks for Android apps
Other applications
Has life-cycle
screen
App to handle content
Background appLike music player
Views
manifest
Activity
Intents
Service
Notifications
ContentProviders
Bruce Scharlau, University of Aberdeen, 2009
The AndroidManifest lists application details
<?xml version="1.0" encoding="utf-8"?><manifest
xmlns:android="http://schemas.android.com/apk/res/android" package="com.my_domain.app.helloactivity"> <application android:label="@string/app_name"> <activity android:name=".HelloActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category
android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
Bruce Scharlau, University of Aberdeen, 2009
Activity is one thing you can do
From fundamentals page in sdk
Bruce Scharlau, University of Aberdeen, 2009
Intent provides late running binding to other apps
It can be thought of as the glue between activities. It is basically a passive data structure holding an abstract description of an action to be performed.
Written as action/data pairs such as: VIEW_ACTION/ACTION content://contacts/1Written as action/data pairs such as: VIEW_ACTION/ACTION content://contacts/1
Bruce Scharlau, University of Aberdeen, 2009
Services declared in the manifest and provide support
Services run in the background:Music player providing the music playing in
an audio application
Services run in the background:Music player providing the music playing in
an audio application
Intensive background apps, might need to spawn their own thread so as to not block the application
Intensive background apps, might need to spawn their own thread so as to not block the application
Bruce Scharlau, University of Aberdeen, 2009
Notifications let you know of background events
This way you know that an SMS arrived, or that your phone is ringing, and the MP3 player should pause
This way you know that an SMS arrived, or that your phone is ringing, and the MP3 player should pause
Bruce Scharlau, University of Aberdeen, 2009
ContentProviders share data
You need one if your application shares data with other applications
You need one if your application shares data with other applications
This way you can share the contact list with the IM application
This way you can share the contact list with the IM application
If you don’t need to share data, then you can use SQLlite database
If you don’t need to share data, then you can use SQLlite database
Bruce Scharlau, University of Aberdeen, 2009
UI layouts are in Java and XML
setContentView(R.layout.hello_activity); //will load the XML UI file
Bruce Scharlau, University of Aberdeen, 2009
Security in Android follows standard Linux guidelines
Each application runs in its own processEach application runs in its own process
Process permissions are enforced at user and group IDs assigned to processes
Process permissions are enforced at user and group IDs assigned to processes
Finer grained permissions are then granted (revoked) per operations
Finer grained permissions are then granted (revoked) per operations
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.android.app.myapp" ><uses-permission id="android.permission.RECEIVE_SMS" /></manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.android.app.myapp" ><uses-permission id="android.permission.RECEIVE_SMS" /></manifest>
Bruce Scharlau, University of Aberdeen, 2009
There are lots of sources of information
• The sdk comes with the API references, sample applications and docs/resources/bootcamp.pdf
• There are Google news groups
• There is http://www.anddev.org
• There is Google search