Android Development Workshop V2

43 %
57 %
Information about Android Development Workshop V2

Published on March 5, 2009

Author: dtmilano



Android Development Workshop

mobile dev camp android development workshop amsterdam, november 2008 diego torres milano copyright © 2008  cod technologies ltd

“I have always wished that my  computer would be as easy to  use as my telephone. My wish has come true. I no longer know how to use my  telephone.” ­­ Bjarne Stroustrup copyright © 2008  cod technologies ltd

agenda introduction to android ● android architecture ● building blocks ● your first android application ● testing and performance ● best practices ● copyright © 2008  cod technologies ltd

introduction to android after this section you will... identify unique features of  ● android platform compare android against  ● other platforms understand android building  ● blocks copyright © 2008  cod technologies ltd

what is android ? android is the first complete, open  ● and free mobile platform developed by Open Handset  ● Alliance software stack than includes ● operating system – middleware – key applications – rich set of APIs – Portions of this page are reproduced from work created and  shared by Google and used according to terms described in  the Creative Commons 2.5 Attribution License. copyright © 2008  cod technologies ltd

is android linux ? NO, android is not linux ! android is based on a linux kernel   but it's not GNU/Linux no native windowing  ● system no glibc support ● no GNU/Linux utilities ● copyright © 2008  cod technologies ltd

so is android java ? NO, android is not java ! android is not an implementation  of any of the Java variants uses the java language ● implements part of the  ● Java5 SE specification runs on a dalvik virtual  ● machine instead of JVM copyright © 2008  cod technologies ltd

android linux kernel android is based on a linux 2.6 kernel, providing rnel, p security ● memory management ● process management ● network stack ● driver model ● abstraction layer ● kernel source: copyright © 2008  cod technologies ltd

linux kernel enhancements android introduces some linux kernel patches alarm ● ashmem ● binder ● power management ● low memory killer (no swap space available) ● logger ● copyright © 2008  cod technologies ltd

unique platform characteristics android characteristics not found on other platforms open source ● “all applications are equal” model ● dalvik virtual machine ● copyright © 2008  cod technologies ltd

other characteristics interesting features as well, but they are more  common across other mobile platforms application framework enabling reuse of components ● integrated browser based on WebKit OSS engine ● 3D graphics based on the OpenGL ES ● SQLite for structured data storage ● media support for common audio, video, and still images ● camera, GPS, compass, and accelerometer ● copyright © 2008  cod technologies ltd

android architecture courtesy of Google copyright © 2008  cod technologies ltd

android building blocks after this section you will... recognize the fundamental  ● building blocks use these building blocks to  ● create applications understand applications  ● lifecycle copyright © 2008  cod technologies ltd

building blocks copyright © 2008  cod technologies ltd

Activities Activities are stacked  ● like a deck of cards only one is visible ● only one is active ● new activities are  ● placed on top copyright © 2008  cod technologies ltd

Activities lifecycle rectangles are callbacks where we can implement operations performed on state changes copyright © 2008  cod technologies ltd

Activities states active ● at the top of the stack – paused ● lost focus but still visible – can be killed by LMK – stopped ● not at the top of th stack – dropped ● killed to reclaim its memory – copyright © 2008  cod technologies ltd

Views Views are basic building blocks ● know how to draw themselves ● respond to events ● organized as trees to build up GUIs ● described in XML in layout resources ● copyright © 2008  cod technologies ltd

pattern: load layout android compiles the XML layout code that is  later loaded in code usually by public void onCreate(Bundle savedInstanceState) { ... setContentView(R.layout.filename); ... } copyright © 2008  cod technologies ltd

Views and Viewgroups Views and  ● Viewgroups trees  build up complex  GUIs android framework is  ● responsible for measuring – laying out – drawing – copyright © 2008  cod technologies ltd

pattern: ids using a unique id in a XML View definition  permits locating it later in Java code private View name; public void onCreate(Bundle savedInstanceState) { ... name = (View) findViewById(; ... } copyright © 2008  cod technologies ltd

Intents Intents are used to move from Activity to Activity ● describes what the application wants ● provides late runtime binding ● primary attributes attribute description action the general action to be performed, such as VIEW, EDIT, MAIN, etc. data the data to operate on, such as a person record in the contacts database, as URI copyright © 2008  cod technologies ltd

intents playground copyright © 2008  cod technologies ltd

Services services run in the background ● don't interact with the user ● run on the main thread ● of the process is kept running as long as ● is started – has connections – copyright © 2008  cod technologies ltd

Notifications notify the user about  ● events sent through  ● NotificationManager types ● persistent icon – turning leds – sound or vibration – copyright © 2008  cod technologies ltd

ConentProviders ContentProviders are objects that can ● retrieve data – store data – data is available to all applications ● only way to share data across packages ● usually the backend is SQLite ● they are loosely linked to clients ● data exposed as a unique URI ● copyright © 2008  cod technologies ltd

AndroidManifest.xml control file that tells  ● the system what to do  and how the top­level  components are  related it's the “glue” that  ● actually specifies  which Intents your  Activities receive specifies permissions ● copyright © 2008  cod technologies ltd

your first android after this section you will... create your own android map  ● project design the UI ● externalize resources ● react to events ● run the application ● copyright © 2008  cod technologies ltd

android project copyright © 2008  cod technologies ltd

default application auto­generated  ● application template default resources ● icon – layout – strings – default  ● AndroidManifest.xml default run  ● configuration copyright © 2008  cod technologies ltd

designing the UI this simple UI designs  contains the window title ● a spinner (drop down  ● box) containing the  desired location over  the map a map displaying the  ● selected location copyright © 2008  cod technologies ltd

create the layout remove old layout ● add a RelativeLayout ● add a View (MapView not  ● supported by ADT) replace View by  ● apview change id to mapview ● add a Spinner filling  ● parent width copyright © 2008  cod technologies ltd

run the application ● maps it's an optional  library not included by  default add <uses-library ● android:name=quot;com.go; / > to manifest as  application node copyright © 2008  cod technologies ltd

Google Maps API key checking DDMS logcat we find ● java.lang.IllegalArgumentException: You need to specify an API Key for each MapView. to access Google Maps we need a key ● application must be signed with the same key ● key can be obtained from Google ● MapView should include ● android:apiKey=quot;0GNIO0J9wdmcNm4gCV6S0nlaFE8bHa9W XXXXXXquot; copyright © 2008  cod technologies ltd

MapActivy checking DDMS logcat again ● java.lang.IllegalArgumentException: MapViews can only be created inside instances of MapActivity. change base class to MapActivity ● fix imports ● add unimplemented methods ● copyright © 2008  cod technologies ltd

where is the map ? still no map displayed ● check DDMS logcat ● lots of IOExceptions ! ● some uses permissions  ● are missing ACCESS_COARSE_LOCATION – INTERNET – copyright © 2008  cod technologies ltd

finally our map still some problems ... spinner is covered ● android:layout_alignPa rentTop=quot;truequot; has no prompt ● prompt: @string/prompt externalize resource ● copyright © 2008  cod technologies ltd

pattern: adapters an Adapter object acts as a bridge between an  AdapterView and the underlying data for that view ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.array, android.R.layout.layout); view.setAdapter(adapter); The Adapter is also responsible for making a View for each item in the  data set. copyright © 2008  cod technologies ltd

pattern: resources resources are external files (that is, non­code files)  that are used by your code and compiled into your  application at build time. <resources> <string-array name=”array”> <item>item</item> </string-array> </resources> res = getResources().getType(id); copyright © 2008  cod technologies ltd

arrays.xml <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> <resources> <!-- No support for multidimensional arrays or complex objects yet (1.0r1) --> <string-array name=quot;location_namesquot;> <item>Mediamatic Duintjer</item> <item>NH Hotel</item> <item>Airport</item> </string-array> <string-array name=quot;locationsquot;> <item>52.363125,4.892070,18</item> <item>37.244832,-115.811434,9</item> <item>-34.560047,-58.44924,16</item> </string-array> </resources> copyright © 2008  cod technologies ltd

complete the class create the locations array ● locations = getResources().getStringArray(R.array.locations); get the views (ids pattern) ● spinner = (Spinner) findViewById(; mapView = (MapView) findViewById(; create the adapter ● ArrayAdapter<CharSequence> adapter = ArrayAdapter. createFromResource(this, R.array.location_names, android.R.layout.simple_spinner_item); spinner.setAdapter(adapter) copyright © 2008  cod technologies ltd

almost there map is displayed ● spinner is displayed ● drop down is  ● displayed but there's no  ● selection button ... adapter. setDropDownViewResource( android.R.layout. simple_spinner_dropdown_item ); copyright © 2008  cod technologies ltd

respond to events when an item is  ● selected map should  be centered at that  location spinner. setOnItemSelectedListener( new OnItemSelectedListener() { }); invoke  ● goToSelectedLocation(ar g2); copyright © 2008  cod technologies ltd

goToSelectedLocation protected void goToSelectedLocation(int position) { String[] loc = locations[position].split(quot;,quot;); double lat = Double.parseDouble(loc[0]); double lon = Double.parseDouble(loc[1]); int zoom = Integer.parseInt(loc[2]); GeoPoint p = new GeoPoint((int)(lat * 1E6), (int)(lon * 1E6)); Log.d(TAG, quot;Should go to quot; + p); mapController.animateTo(p); mapController.setZoom(zoom); } copyright © 2008  cod technologies ltd

more events turn map clickable ● android:clickable=quot;true” override onKeyDown ● switch (keyCode) { case KeyEvent.KEYCODE_I: mapController.zoomIn(); break; case KeyEvent.KEYCODE_O: mapController.zoomOut(); break; case KeyEvent.KEYCODE_S: mapView.setSatellite( !mapView.isSatellite()); break; } copyright © 2008  cod technologies ltd

we did it ! Some things to try ● select a location – pan – zoom in – zoom out – toggle satellite – copyright © 2008  cod technologies ltd

“Remember that there is no  code faster than no code” ­­ Taligent's Guide to Designing Programs copyright © 2008  cod technologies ltd

testing and performance after this section you will... understand the best practices  ● to develop for android  identify the alternatives to test  ● units, services and applications performance ● copyright © 2008  cod technologies ltd

best practices consider performance, android is not a desktop ● avoid creating objects ● use native methods ● prefer virtual over interface ● prefer static over virtual ● avoid internal getter/setters ● declares constants final ● avoid enums ● copyright © 2008  cod technologies ltd

testing android sdk 1.0 introduces ● ActivityUnitTestCase to run isolated unit tests – ServiceTestCase to test services – ActivityInstrumentationTestCase to run functional  – tests of activities ApiDemos includes some test samples ● monkey, generates pseudo­random of user  ● events copyright © 2008  cod technologies ltd

1000000 1500000 2000000 2500000 3000000 500000 0 Add a local variable Add a member variable Call String.length() Call empty static native method Call empty static method performance Call empty virtual method Call empty interface method Call Iterator:next() on a HashMap Call put() on a HashMap Inflate 1 View from XML Inflate 1 LinearLayout with 1 TextView copyright © 2008  cod technologies ltd Inflate 1 LinearLayout with 6 View Inflate 1 LinearLayout with 6 TextView Launch an empty activity Time

“If things seem under control,  you're not going fast enough.” ­­ Mario Andretti copyright © 2008  cod technologies ltd

thank you android development workshop diego torres milano copyright © 2008  cod technologies ltd

Add a comment

Related pages

Android Developers

The official site for Android developers. Provides the Android SDK and documentation for app developers and designers.
Read more

Android App Development 2 Days Workshop | Training | Course

Welcome to Android app development workshop and Training. Here you will find and complete android apps course with experienced faculties at affordable prices.
Read more


Android is the customizable, easy to use operating system that powers more than a billion devices across the globe — from phones and tablets to watches ...
Read more

Android App Development Workshop - Welcome To RoboTryst ...

Robosapiens and IIT Delhi organizes Android App Development Workshop under Robotryst 2015 in asssociation with Tryst 2015 in IIT Delhi campus.
Read more

Android Anfänger Workshop - Android Wiki - AndroidPIT

ADT (Android Development Tools) ... android:label="Hello Workshop" Natürlich nur solange wir keine strings.xml-Dateien in anderen Sprachen hinzufügen.
Read more

Android – Workshop on Android Application Development ...

workshop in india on android application development, android workshop 2 days hands on with Practical projects like Bluetooth, Paint, Angry birds ...
Read more

Android | Workshop on Latest Smartphone OS | Android ...

Android | Workshop on Latest Smartphone OS What is Android? Android is the latest Smartphone OS developed by Google taking the smart phone industry by storm.
Read more

Android Development Workshop | Computing and Information ...

Android Development Workshop. Date & Time: February 13, 2016 - 10:00am - 2:00pm. Location: 1114 Engineering Hall . Ever wanted to make your own Android ...
Read more