Introduction to Android Development

Post on 24-Jun-2015

875 views 1 download

Tags:

description

Introduction to Android Development - Galatasaray University

Transcript of Introduction to Android Development

Introduction to Android Development

Can ElmasMarch 07, 2012

Who am I ?

• 2008 GSU graduate

• Software Development Team Leader at Pozitron

– http://www.pozitron.com

• Interest in mobile platforms

• Experience with mobile platforms such as

Symbian (Java ME), BlackBerry and Android

• Experience with server side development

Agenda

• What is Android?

• Why Android?

• Android Architecture

• Android Building Blocks

• Demo

What is Android ?

What is Android?

• Software stack for mobile devices including

an operating system, middleware , key

applications and rich set of APIs

• Project by Open Handset Alliance led by

Google, a consortium of 86 companies

(Samsung, Motorola, Sony, HTC, LG, Dell,

Intel, Nvidia etc.)

• First Release in November 2007

What is Android?• Based on Linux Kernel

• Security, Memory Management, Process

Management, Network Stack, Driver stack

• No, Android is not Linux (No native windowing

system, no glibc, no standard GNU/linux utilities)

• Linux Kernel enhancements (alarm, ashmem,

power management, low memory killer - no swap

space)

• Robust and proven over time

What is Android?

• Applications written primarily in customized

version of Java

• No, android is not Java

– Uses Java language

– Implements part of the Java 5 SE specification

(Collections, generics support)

– Runs on Dalvik Virtual Machine instead of JVM

– Multiple VMs

What is Android?• Free and open

– No need of any user id or account for SDK access

– Source at http://source.android.com

• Rich Developer Community

• Cheaper and more innovative Mobile Devices

• Extendable

– Players can add proprietary functionality to their

products

– Companies can remove functionality if they choose

What is Android?

• Android Market, 450.000 apps as of

February 2012

• 850.000 devices activated every day,

according to Google’s Andy Rubin

What is Android?

• Mulitasking

• Integrated browser based on WebKit

Engine

• 3d Graphics based on the OpenGL Es

• SQLite

• Camera, GPS, compass and accelerometer

Why Android?

Why Android?

• Free SDK

– Available at http://developer.android.com

• Open Source

• All applications are equal

• Dalvik Virtual Machine

• Development on Windows, Linux or Mac OS

• Starting development easy and cheap

Why Android?• Rich Development Environment

– Full Device Emulator

– Tools for debugging DDMS (Dalvik Debug Monitor

Server)

– Memory and performance profiling

• Rich Documentation

• Very large community and target audience

• Open Market Place

– Instant publishing

Android Architecture

Android Architecture• Relies on Linux kernel version 2.6 for core system

services

• Every Android application runs on its own

process, with its own Dalvik Virtual Machine

• C/C++ libraries (Surface Manager , Media

Libraries, SQLite etc.)

• Native set of core applications including email

client, SMS, Calendar, maps, browser, contacts

and others

Android Building Blocks

Vocabulary

• Activity

• Views

• Resources

• Intents

• Intent Filters

• AndroidManifest.xml

Activity

• What the user see on the screen

• An Android application with User

Interface consists of one or more

Activities.

Activity

Activity

Activity

• Moving through screens is by starting new

activities

• Managed as an activity stack

• LIFO (Last In First Out)

• Only one is visible

• Only one is active

• Activity Lifecycle

Source : http://developer.android.com

Activity States

• Active

– At the top of the stack

• Paused

– Lost focusbut still visible

– Can be killed by Low Memory Killer

• Stopped

– Not at the top of the stack

• Dropped

– Killed to reclaim its memory

Activity

• An empty activity with no content

Views• Views are basic UI building blocks

• They know how to draw themselves

– Android framework responsible for measuring, laying out and

drawing

• Respond to events

• Implementation :

– Java code

– XML

– Separation of presentation of the application from the code controlling

the behavior.

– Ease of visualization of the UI structure

– Strings, color, styles, shapes, animations etc can be described as XML

Views

• Views and view groups trees build

up complex GUIs : widgets

– android.widget.ListView

– android.widget.TextView

– android.widget.Button

– android.widget.ImageView

Views

• Subclasses of ViewGroup, Layouts

• Standard layouts :

– LinearLayout

– FrameLayout

– TableLayout

– RelativeLayout

– AbsoluteLayout

Views• Android UI in XML :

/res/layout/main_act.xml

Resources• External sources other than your code

(images, views and layouts in xml,

strings etc.) should be externalized, so

that you can maintain them

independently

Resources

• Accessing application resources :

– R class

• All reources IDs are defined in R

class, which is automatically

generated by Android aapt tool

Activity

• An empty activity with no content

Activity

Activity

Intents

• An Intention to do something

• Abstract description of an operation to be

performed

• A message to the OS that you want to do

something (pre-defined action)

• Used to move from one Activity to another

Intents

• Facilitates app to app communication

• Primary Attributes

– Action

• The general action to be performed

– Data

• The data to operate on (a contact, an url, the

new activity etc.)

Intent Filters

• Description of what intent an activity

is capable of handling

Intent Filters

AndroidManifest .xml

• Description of the android application

including activities, intent receivers,

permissions, application icon, application

name, version information etc.

• It’s the glue that specifies which Intents your

activities might receive

• An activity should be declared as the main

entry point

AndroidManifest.xml

More Advanced Topics

• How Android deal with Fragmentation?

– API Levels (Cupcake, Donut, Eclair, Froyo,

Gingerbread, Honeycomb, Ice Cream

Sandwich)

• How are the resources selected at run

time according to different screen

sizes and densities?

More Advanced Topics

• Single Threaded UI Model

• APK (Android Package)

• Application Signing

Thank you

• We’re Hiring

– http://pozitron.com/careers.php

– ik@pozitron.com

• Twitter

–@foragoodpurpose

–@Pozitron_Mobile

Demo• Phase 1:

– Create a new Android project with package

name com.gsuandroid.activities

– Create a new Activity called MainActivity

– Create a layout for MainActivity which will

consist of a LinearLayout containing a

TextView with predefined text “Hello

Android”

– Run your application

Demo• Phase 2:

– Create another activity called ActTwo

– Create a layout for your new activity containing a

TextView without setting a text in XML

– Modify your MainActivity’s layout xml in and add a

Button with setting and id,

android:id="@+id/btn_go_to_act_two » and text « Go

to Next Activity»

– Start ActTwo when user presses button inserted in the

MainActivity

– Run your application

Demo

• Phase 3:

– Pass a text message “That’s it for

today” when moving from MainActivity

to ActTwo

– Run your application

Full Code

main_act.xml

act_two.xml