SlideShare a Scribd company logo
Android Development 
- the basics 
Tomáš Kypta
Agenda 
• Android platform and ecosystem" 
• Android SDK and development tools" 
• Hello World" 
• building blocks of Android apps & the 
manifest file" 
• activities, widgets, intents" 
• toasts
Android platform 
• Linux-based operating system" 
• open-source (http://source.android.com/)" 
• originally phone OS" 
• tablet support (since Honeycomb, Android 
3.0)
Android platform 
• Google TV" 
• Google Glass" 
• Google Wear
History 
• 2003, Android inc." 
• 2005, acquired by Google" 
• Sep 2008, the first Android phone" 
– T-Mobile G1" 
• May 2010, Froyo (Android 2.2)" 
• Feb 2011, Honeycomb (Android 3.0)
History 
• Oct 2011, Ice Cream Sandwich (Android 
4.0)" 
• July 2012, Jelly Bean (Android 4.1)" 
• July 2013, Jelly Bean (Android 4.3)" 
• Oct 2013, KitKat (Android 4.4)" 
• June 2014, Android L (developer preview)
Platform Versions
Android ecosystem 
• thousands of devices" 
• the most popular mobile platform" 
• 1.5 million new devices activated every day" 
– Q2 2013" 
• September 3, 2013, 1 billion Android 
devices have been activated" 
• most devices made by Samsung " 
– 65%, Feb 2014
Google Play 
• apps are distributed by app stores" 
– Google Play, http://play.google.com" 
– other stores (Amazon, Samsung, …)" 
• > 50 billion apps have been installed from 
Google Play" 
• > 1.3 million apps
Google Play 
• customers can purchase" 
• developers can sell" 
• Play Music " 
• Play Books " 
• Play Movies
Monetization 
• selling apps" 
– 15 min return period" 
• in-app billing" 
– freemium model" 
• ads" 
– AdMob, ...
Android “problems” 
• fragmentation" 
• manufacturer/carrier enhancements" 
• updates & support" 
• openness - low quality apps in Google Play" 
• malware" 
– users
Android security 
• app can be installed directly" 
– .apk file" 
• user accepts app permissions when 
installing or updating the app
Android security 
• Verify Apps (Android 2.3+)" 
– checks every app install" 
• Google Play can remotely uninstall harmful 
apps
Android development - the basics, MFF UK, 2014
Android development - the basics, MFF UK, 2014
Development 
• programming in “Java”" 
– Java SE 7 (KitKat)" 
• native apps possible (C++)" 
• development tools platform friendly" 
– Windows, Linux, Mac OS X
Development 
• IDE support" 
– Android Studio, IntelliJ IDEA" 
– ADT plugin for Eclipse" 
– Netbeans" 
• you can freely develop on any device
Android SDK 
• android - Android SDK and AVD Manager" 
• adb - Android Debug Bridge" 
• monitor - (ddms & hierarchyviewer)" 
• emulator" 
• lint, Traceview, ProGuard" 
• docs, samples
Support Libraries 
• compatibility libraries" 
– v4 - backports lots of newer functionality 
to Android 1.6+" 
– Fragments, NotificationCompat, ViewPager" 
– v7" 
– AppCompat" 
– v8" 
– v13
Google Play Services 
• Google Maps" 
• In-app Billing" 
• Games" 
• Google+" 
• Authorization
Libraries 
• AdMob" 
• Google Analytics, Flurry, Crittercism
Android development - the basics, MFF UK, 2014
Android building blocks 
• Activity" 
• Service" 
• Content provider" 
• Broadcast receiver" 
• AndroidManifest.xml
Activity 
• screen with user interface" 
• the only visual component" 
• example - an email app" 
– list of emails" 
– details of an email" 
– email composition
Service 
• has no UI" 
• long-running tasks" 
• examples" 
– music playback service" 
– download service" 
– sync service
Content Provider 
• managers and shares application data" 
• data storage doesn’t matter (db, web, 
filesystem)" 
• apps can query and modify data through 
content provider" 
• r/w permissions can be defined" 
• examples - all system dbs (SMS, 
contacts, ...)
Broadcast Receiver 
• responds to broadcasts" 
• broadcasts are system wide" 
• can be registered statically or dynamically" 
• system or custom messages" 
• examples - incoming SMS, incoming call, 
screen turned off, low baterry, removed SD 
card, BT device available, ...
AndroidManifest.xml 
• defines what parts the app have" 
• defines which endpoints are exposed" 
• minimum/maximum API level" 
• permissions" 
• declare hardware and software features" 
• require configuration
Intent 
• asynchronous message" 
• binds components together (all except 
Content Provider)" 
• starting activities" 
• starting services and binding to services" 
• sending broadcasts
Hello World
Build
Android development - the basics, MFF UK, 2014
Android development - the basics, MFF UK, 2014
Activity 
• a subclass of android.app.Activity" 
• app usually has many activities" 
• activities managed in activity stack" 
– newly started activity is placed on the 
top of the stack
Activity Lifecycle 
• activity can be in different states during its 
lifecycle" 
– foreground, visible, stopped, killed" 
• when activity state changes a system 
callback is called
Activity callbacks 
• onCreate() - activity created" 
• onStart() - activity visible for the user" 
• onResume() - activity gains user focus
Activity callbacks 
• onPause() - system resuming another 
activity" 
• onStop() - activity becoming invisible to the 
user" 
• onDestroy() - before activity is destroyed
Activity callbacks 
• onRestart() - called if activity was 
previously stopped, called prior to onStart()
Android development - the basics, MFF UK, 2014
Android development - the basics, MFF UK, 2014
Configuration changes 
• when configuration changes, activities are 
destroyed and recreated" 
– default behaviour, can be changed" 
• properly handle config changes" 
– onSaveInstanceState(Bundle)
Intent & Activity 
• starting activity explicitly" 
– new Intent(context, MyActivity.class)! 
• starting activity implicitly" 
– new Intent(Intent.ACTION_VIEW, 
Uri.parse(“http://developer.android.com”))! 
• starting activity for result
User Interface 
• defined by a hierarchy of views" 
• layouts = containers" 
– LinearLayout, RelativeLayout, FrameLayout, ...
User Interface 
• widgets" 
– UI objects" 
– Button, TextView, EditText, 
RadioButton, ..." 
– WebView
User Interface 
• list widgets" 
– subclasses of AdapterView" 
– display a list of items" 
– use adapter to bind list do data" 
– ListView, GridView, Spinner, ...
Adapters 
• provide data for Adapter views" 
• are responsible for the creation of items
Resources 
• drawables" 
– bitmaps" 
– 9-patch png" 
– state lists" 
– layer lists" 
– shape drawables
• layout" 
• strings" 
• colors" 
• menus" 
• dimensions" 
• animations 
Resources
• arrays" 
• ids" 
• raw" 
• xml" 
• ... 
Resources
Screen sizes and densities
Screen sizes and densities 
• How to handle different screen sizes and 
densities?
Resources 
• resources can be created in several 
versions" 
– the best version is selected according to 
current device configuration in runtime
Resources 
• resource units" 
– dp - density-independent pixel" 
– sp - scale-independent pixel (for fonts)" 
– never use px!!!
Resource qualifiers 
• suffixes for resource folders" 
– drawables, drawable-mdpi, ..." 
– values, values-cs" 
– layout, layout-sw640dp" 
– drawable-hdpi-v11
Resource qualifiers 
• screen density - ldpi, mdpi, hdpi, xhdpi, ..." 
• screen size - small, normal, large, xlarge" 
• screen orientation - port, land" 
• language - en, cs, sk, en-rGB…" 
• version - v11, v14, ...
Resource qualifiers 
• since Android 3.2" 
• w<N>dp - available screen width, w600dp" 
• h<N>dp - available screen heights, h720dp" 
• sw<N>dp - smallest width (does not 
change with orientation)
Resources 
• accessed from code via generated R.java 
file and resource ids" 
– view.findViewById(R.id.txt_name)! 
– txtName.setText(R.string.txt_name_label)
Localization?
Android version fragmentation 
• How to handle different API levels available 
on different devices?
Android version fragmentation 
• build target" 
– API level the app is compiled against" 
• AndroidManifest.xml" 
– <uses-sdk android:minSdkVersion="8" 
android:targetSdkVersion="16" />
Android version fragmentation 
• handling versions in code" 
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD) {! 
! // code for Android < 2.3! 
}
Android version fragmentation 
private boolean functionalitySupported = false;! 
static {! 
try {! 
checkFunctionalitySupported();! 
} catch (NoClassDefFoundError e) {! 
!functionalitySupported = false;! 
}! 
}! 
private static void checkFunctionalitySupported() throws 
! NoClassDefFoundError {! 
! functionalitySupported = android.app.Fragment.class != 
null;! 
}!
Threads 
• main thread = UI thread" 
• do not ever block the UI thread!!!" 
• use worker threads for time consuming 
operations" 
• UI toolkit not thread safe - never 
manipulate UI from a worker thread
Logging 
• java.util.logging.Logger 
• android.util.Log
Toast 
• simple non-modal information" 
• displayed for a short period of time" 
• doesn’t have user focus
Preferences 
SharedPreferences prefs = PreferenceManager! 
! .getDefaultSharedPreferences(context);! 
SharedPreferences prefs = ! 
! config.getSharedPreferences(PREFS_FILE_NAME,! 
! Activity.MODE_PRIVATE);! 
" 
int storedValue = prefs.getInt(SOME_KEY, defaultValue);! 
" 
SharedPreferences.Editor editor = prefs.edit();! 
editor.putInt(SOME_KEY, storedValue);! 
editor.commit();
Sources 
• developer.android.com" 
• android-developers.blogspot.com" 
• source.android.com" 
• stackoverflow.com" 
• youtube.com/androiddevelopers" 
• svetandroida.cz
THE END
Ad

Recommended

PDF
Android development - the basics, MFF UK, 2013
Tomáš Kypta
 
PDF
Android development - the basics, MFF UK, 2012
Tomáš Kypta
 
PDF
Android development - the basics, FI MUNI, 2012
Tomáš Kypta
 
PDF
Android Programming
Pasi Manninen
 
PDF
Android - From Zero to Hero @ DEVit 2017
Ivo Neskovic
 
PPTX
Introduction to Android Development Part 1
Kainda Kiniel Daka
 
PPTX
What’s new in aNdroid [Google I/O Extended Bangkok 2016]
Sittiphol Phanvilai
 
PPTX
Android basic principles
Henk Laracker
 
PDF
Android Presentation
Bram Vandeputte
 
PPT
Android Application Development Using Java
amaankhan
 
PPTX
Tehran's 1st Android bootcamp - Part1
Mohsen Mirhoseini
 
PPTX
Android
BVP GTUG
 
PPTX
Android overview
Ahmed M. Abed
 
PPTX
Arduino - Android Workshop Presentation
Hem Shrestha
 
PPTX
Android Apps Development Basic
Monir Zzaman
 
PPT
Introduction to Android, Architecture & Components
Vijay Rastogi
 
PDF
Introduction to Android Development
Aly Abdelkareem
 
PPT
Android application development
MadhuprakashR1
 
PDF
Android fundamentals and tutorial for beginners
Boom Shukla
 
PPT
PPT Companion to Android
Dharani Kumar Madduri
 
PPTX
Android app development ppt
saitej15
 
PPTX
Android 101 - Introduction to Android Development
Andy Scherzinger
 
PPTX
Android Programming Seminar
Nhat Nguyen
 
PPTX
Android terminologies
jerry vasoya
 
PDF
Android tutorial
master760
 
PPTX
Android Presentation [Final]
Debashis Chowdhury
 
PPTX
Basic android-ppt
Srijib Roy
 
PPT
Android development tutorial
nazzf
 
KEY
Android Development: The Basics
Mike Desjardins
 
PPTX
Android development basic _ZuoSyuanWang
佐軒 王
 

More Related Content

What's hot (20)

PDF
Android Presentation
Bram Vandeputte
 
PPT
Android Application Development Using Java
amaankhan
 
PPTX
Tehran's 1st Android bootcamp - Part1
Mohsen Mirhoseini
 
PPTX
Android
BVP GTUG
 
PPTX
Android overview
Ahmed M. Abed
 
PPTX
Arduino - Android Workshop Presentation
Hem Shrestha
 
PPTX
Android Apps Development Basic
Monir Zzaman
 
PPT
Introduction to Android, Architecture & Components
Vijay Rastogi
 
PDF
Introduction to Android Development
Aly Abdelkareem
 
PPT
Android application development
MadhuprakashR1
 
PDF
Android fundamentals and tutorial for beginners
Boom Shukla
 
PPT
PPT Companion to Android
Dharani Kumar Madduri
 
PPTX
Android app development ppt
saitej15
 
PPTX
Android 101 - Introduction to Android Development
Andy Scherzinger
 
PPTX
Android Programming Seminar
Nhat Nguyen
 
PPTX
Android terminologies
jerry vasoya
 
PDF
Android tutorial
master760
 
PPTX
Android Presentation [Final]
Debashis Chowdhury
 
PPTX
Basic android-ppt
Srijib Roy
 
PPT
Android development tutorial
nazzf
 
Android Presentation
Bram Vandeputte
 
Android Application Development Using Java
amaankhan
 
Tehran's 1st Android bootcamp - Part1
Mohsen Mirhoseini
 
Android
BVP GTUG
 
Android overview
Ahmed M. Abed
 
Arduino - Android Workshop Presentation
Hem Shrestha
 
Android Apps Development Basic
Monir Zzaman
 
Introduction to Android, Architecture & Components
Vijay Rastogi
 
Introduction to Android Development
Aly Abdelkareem
 
Android application development
MadhuprakashR1
 
Android fundamentals and tutorial for beginners
Boom Shukla
 
PPT Companion to Android
Dharani Kumar Madduri
 
Android app development ppt
saitej15
 
Android 101 - Introduction to Android Development
Andy Scherzinger
 
Android Programming Seminar
Nhat Nguyen
 
Android terminologies
jerry vasoya
 
Android tutorial
master760
 
Android Presentation [Final]
Debashis Chowdhury
 
Basic android-ppt
Srijib Roy
 
Android development tutorial
nazzf
 

Viewers also liked (20)

KEY
Android Development: The Basics
Mike Desjardins
 
PPTX
Android development basic _ZuoSyuanWang
佐軒 王
 
PPT
Android ppt
blogger at indiandswad
 
KEY
Android app development basics
Anton Narusberg
 
PDF
10 steps to build a business case
Sonja Gielen
 
PDF
Android Basic Development Day 1 Introduction & ADT
Eakapong Kattiya
 
PPT
Introduction to Android
Ranjith Kumar
 
PDF
EA Navigator - Enterprise Architecture
Sonja Gielen
 
PPT
Zywall Usg300 User Aware Access Control
jones1812
 
PDF
Ofdm Detection on Umts Utra-Fdd up-Link and Implementation of the Modulator/ ...
International Journal of Engineering Inventions www.ijeijournal.com
 
PPT
Moto v551
Steve Ramirez
 
PPTX
Hierarchical and Hash-based Naming Scheme for Vehicular Information Centric N...
Syed Hassan Ahmed
 
PPT
User mobility and location management
chenjennan
 
PPTX
Mapping with Android
vgrigoruk
 
PDF
A review of current routing protocols for ad hoc mobile wireless networks
Priyanka Gurnani
 
PPT
Intro To Gsm Wh080917
hobe
 
PPT
Bluetooth1
Ehud Mantzuri
 
PDF
Cryptographic Data Splitting and Cloud Computing
GovCloud Network
 
PPTX
Will the shift from fleet to mobility management revolutionise the leasing in...
Mischa van Werkhoven
 
PPT
Mobile Video Advertisement
Yoss Cohen
 
Android Development: The Basics
Mike Desjardins
 
Android development basic _ZuoSyuanWang
佐軒 王
 
Android app development basics
Anton Narusberg
 
10 steps to build a business case
Sonja Gielen
 
Android Basic Development Day 1 Introduction & ADT
Eakapong Kattiya
 
Introduction to Android
Ranjith Kumar
 
EA Navigator - Enterprise Architecture
Sonja Gielen
 
Zywall Usg300 User Aware Access Control
jones1812
 
Ofdm Detection on Umts Utra-Fdd up-Link and Implementation of the Modulator/ ...
International Journal of Engineering Inventions www.ijeijournal.com
 
Moto v551
Steve Ramirez
 
Hierarchical and Hash-based Naming Scheme for Vehicular Information Centric N...
Syed Hassan Ahmed
 
User mobility and location management
chenjennan
 
Mapping with Android
vgrigoruk
 
A review of current routing protocols for ad hoc mobile wireless networks
Priyanka Gurnani
 
Intro To Gsm Wh080917
hobe
 
Bluetooth1
Ehud Mantzuri
 
Cryptographic Data Splitting and Cloud Computing
GovCloud Network
 
Will the shift from fleet to mobility management revolutionise the leasing in...
Mischa van Werkhoven
 
Mobile Video Advertisement
Yoss Cohen
 
Ad

Similar to Android development - the basics, MFF UK, 2014 (20)

ODP
Java Meetup - 12-03-15 - Android Development Workshop
Kasun Dananjaya Delgolla
 
PDF
Domo Arigato Mr. Roboto - Open Source Bridge 2009
sullis
 
PDF
Androidoscon20080721 1216843094441821-9
Gustavo Fuentes Zurita
 
PDF
Androidoscon20080721 1216843094441821-9
Gustavo Fuentes Zurita
 
PPT
Google android os
Faiq Ali Sayed
 
PDF
Getting Started with Android - OSSPAC 2009
sullis
 
PPT
Google android os
Kirti Choudhary
 
PPTX
Android quick talk
SenthilKumar Selvaraj
 
PDF
Android Training in Delhi NCR by Ducat
Shri Prakash Pandey
 
PPTX
Android Applications Development: A Quick Start Guide
Sergii Zhuk
 
PPTX
Android development orientation for starters v2
Joemarie Amparo
 
PPTX
ch1introduction about android development.pptx
Tekle12
 
PDF
Introduction to Android - Mobile Portland
sullis
 
PPTX
Android v 1.1
Ravi Vyas
 
PPTX
Seminar on android app development
AbhishekKumar4779
 
PDF
Android development first steps
christoforosnalmpantis
 
PPT
Introduction to android sessions new
Joe Jacob
 
PPTX
Slideshare android
deepakkumargoyal
 
PPT
LA_FUNDAMENTALS OF Android_Unit I ONE.ppt
JeevaMCSEKIOT
 
PPT
Android Programming Basic
Duy Do Phan
 
Java Meetup - 12-03-15 - Android Development Workshop
Kasun Dananjaya Delgolla
 
Domo Arigato Mr. Roboto - Open Source Bridge 2009
sullis
 
Androidoscon20080721 1216843094441821-9
Gustavo Fuentes Zurita
 
Androidoscon20080721 1216843094441821-9
Gustavo Fuentes Zurita
 
Google android os
Faiq Ali Sayed
 
Getting Started with Android - OSSPAC 2009
sullis
 
Google android os
Kirti Choudhary
 
Android quick talk
SenthilKumar Selvaraj
 
Android Training in Delhi NCR by Ducat
Shri Prakash Pandey
 
Android Applications Development: A Quick Start Guide
Sergii Zhuk
 
Android development orientation for starters v2
Joemarie Amparo
 
ch1introduction about android development.pptx
Tekle12
 
Introduction to Android - Mobile Portland
sullis
 
Android v 1.1
Ravi Vyas
 
Seminar on android app development
AbhishekKumar4779
 
Android development first steps
christoforosnalmpantis
 
Introduction to android sessions new
Joe Jacob
 
Slideshare android
deepakkumargoyal
 
LA_FUNDAMENTALS OF Android_Unit I ONE.ppt
JeevaMCSEKIOT
 
Android Programming Basic
Duy Do Phan
 
Ad

More from Tomáš Kypta (18)

PDF
Modern Android app library stack
Tomáš Kypta
 
PDF
Guide to the jungle of testing frameworks
Tomáš Kypta
 
PDF
Guide to the jungle of testing frameworks
Tomáš Kypta
 
PDF
Practical RxJava for Android
Tomáš Kypta
 
PDF
Practical RxJava for Android
Tomáš Kypta
 
PDF
Reactive programming on Android
Tomáš Kypta
 
PDF
Android Develpment vol. 3, MFF UK, 2015
Tomáš Kypta
 
PDF
Writing testable Android apps
Tomáš Kypta
 
PDF
Android Develpment vol. 2, MFF UK, 2015
Tomáš Kypta
 
PDF
ProGuard
Tomáš Kypta
 
PDF
Unit testing and Android
Tomáš Kypta
 
PDF
Android Development for Phone and Tablet
Tomáš Kypta
 
PDF
Reactive programming on Android
Tomáš Kypta
 
PDF
Android Libraries
Tomáš Kypta
 
PDF
Android Development 201
Tomáš Kypta
 
PDF
Užitečné Android knihovny pro vývoj a testování
Tomáš Kypta
 
PDF
Programování pro Android - úvod, FI MUNI, 2013
Tomáš Kypta
 
PDF
Stylování ActionBaru
Tomáš Kypta
 
Modern Android app library stack
Tomáš Kypta
 
Guide to the jungle of testing frameworks
Tomáš Kypta
 
Guide to the jungle of testing frameworks
Tomáš Kypta
 
Practical RxJava for Android
Tomáš Kypta
 
Practical RxJava for Android
Tomáš Kypta
 
Reactive programming on Android
Tomáš Kypta
 
Android Develpment vol. 3, MFF UK, 2015
Tomáš Kypta
 
Writing testable Android apps
Tomáš Kypta
 
Android Develpment vol. 2, MFF UK, 2015
Tomáš Kypta
 
ProGuard
Tomáš Kypta
 
Unit testing and Android
Tomáš Kypta
 
Android Development for Phone and Tablet
Tomáš Kypta
 
Reactive programming on Android
Tomáš Kypta
 
Android Libraries
Tomáš Kypta
 
Android Development 201
Tomáš Kypta
 
Užitečné Android knihovny pro vývoj a testování
Tomáš Kypta
 
Programování pro Android - úvod, FI MUNI, 2013
Tomáš Kypta
 
Stylování ActionBaru
Tomáš Kypta
 

Recently uploaded (20)

PPTX
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
PDF
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
PDF
Mastering AI Workflows with FME by Mark Döring
Safe Software
 
PDF
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
PDF
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
PDF
Python Conference Singapore - 19 Jun 2025
ninefyi
 
PDF
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Saikat Basu
 
PDF
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
PDF
Securing AI - There Is No Try, Only Do!.pdf
Priyanka Aash
 
PDF
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
PPTX
Securing Account Lifecycles in the Age of Deepfakes.pptx
FIDO Alliance
 
PDF
The Future of Product Management in AI ERA.pdf
Alyona Owens
 
PDF
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
DOCX
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
PPTX
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC
 
PDF
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
PDF
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
PPTX
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
 
PDF
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
 
PPTX
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
Fwdays
 
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
Mastering AI Workflows with FME by Mark Döring
Safe Software
 
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
Python Conference Singapore - 19 Jun 2025
ninefyi
 
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Saikat Basu
 
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Securing AI - There Is No Try, Only Do!.pdf
Priyanka Aash
 
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
Securing Account Lifecycles in the Age of Deepfakes.pptx
FIDO Alliance
 
The Future of Product Management in AI ERA.pdf
Alyona Owens
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC
 
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
 
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
 
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
Fwdays
 

Android development - the basics, MFF UK, 2014

  • 1. Android Development - the basics Tomáš Kypta
  • 2. Agenda • Android platform and ecosystem" • Android SDK and development tools" • Hello World" • building blocks of Android apps & the manifest file" • activities, widgets, intents" • toasts
  • 3. Android platform • Linux-based operating system" • open-source (http://source.android.com/)" • originally phone OS" • tablet support (since Honeycomb, Android 3.0)
  • 4. Android platform • Google TV" • Google Glass" • Google Wear
  • 5. History • 2003, Android inc." • 2005, acquired by Google" • Sep 2008, the first Android phone" – T-Mobile G1" • May 2010, Froyo (Android 2.2)" • Feb 2011, Honeycomb (Android 3.0)
  • 6. History • Oct 2011, Ice Cream Sandwich (Android 4.0)" • July 2012, Jelly Bean (Android 4.1)" • July 2013, Jelly Bean (Android 4.3)" • Oct 2013, KitKat (Android 4.4)" • June 2014, Android L (developer preview)
  • 8. Android ecosystem • thousands of devices" • the most popular mobile platform" • 1.5 million new devices activated every day" – Q2 2013" • September 3, 2013, 1 billion Android devices have been activated" • most devices made by Samsung " – 65%, Feb 2014
  • 9. Google Play • apps are distributed by app stores" – Google Play, http://play.google.com" – other stores (Amazon, Samsung, …)" • > 50 billion apps have been installed from Google Play" • > 1.3 million apps
  • 10. Google Play • customers can purchase" • developers can sell" • Play Music " • Play Books " • Play Movies
  • 11. Monetization • selling apps" – 15 min return period" • in-app billing" – freemium model" • ads" – AdMob, ...
  • 12. Android “problems” • fragmentation" • manufacturer/carrier enhancements" • updates & support" • openness - low quality apps in Google Play" • malware" – users
  • 13. Android security • app can be installed directly" – .apk file" • user accepts app permissions when installing or updating the app
  • 14. Android security • Verify Apps (Android 2.3+)" – checks every app install" • Google Play can remotely uninstall harmful apps
  • 17. Development • programming in “Java”" – Java SE 7 (KitKat)" • native apps possible (C++)" • development tools platform friendly" – Windows, Linux, Mac OS X
  • 18. Development • IDE support" – Android Studio, IntelliJ IDEA" – ADT plugin for Eclipse" – Netbeans" • you can freely develop on any device
  • 19. Android SDK • android - Android SDK and AVD Manager" • adb - Android Debug Bridge" • monitor - (ddms & hierarchyviewer)" • emulator" • lint, Traceview, ProGuard" • docs, samples
  • 20. Support Libraries • compatibility libraries" – v4 - backports lots of newer functionality to Android 1.6+" – Fragments, NotificationCompat, ViewPager" – v7" – AppCompat" – v8" – v13
  • 21. Google Play Services • Google Maps" • In-app Billing" • Games" • Google+" • Authorization
  • 22. Libraries • AdMob" • Google Analytics, Flurry, Crittercism
  • 24. Android building blocks • Activity" • Service" • Content provider" • Broadcast receiver" • AndroidManifest.xml
  • 25. Activity • screen with user interface" • the only visual component" • example - an email app" – list of emails" – details of an email" – email composition
  • 26. Service • has no UI" • long-running tasks" • examples" – music playback service" – download service" – sync service
  • 27. Content Provider • managers and shares application data" • data storage doesn’t matter (db, web, filesystem)" • apps can query and modify data through content provider" • r/w permissions can be defined" • examples - all system dbs (SMS, contacts, ...)
  • 28. Broadcast Receiver • responds to broadcasts" • broadcasts are system wide" • can be registered statically or dynamically" • system or custom messages" • examples - incoming SMS, incoming call, screen turned off, low baterry, removed SD card, BT device available, ...
  • 29. AndroidManifest.xml • defines what parts the app have" • defines which endpoints are exposed" • minimum/maximum API level" • permissions" • declare hardware and software features" • require configuration
  • 30. Intent • asynchronous message" • binds components together (all except Content Provider)" • starting activities" • starting services and binding to services" • sending broadcasts
  • 32. Build
  • 35. Activity • a subclass of android.app.Activity" • app usually has many activities" • activities managed in activity stack" – newly started activity is placed on the top of the stack
  • 36. Activity Lifecycle • activity can be in different states during its lifecycle" – foreground, visible, stopped, killed" • when activity state changes a system callback is called
  • 37. Activity callbacks • onCreate() - activity created" • onStart() - activity visible for the user" • onResume() - activity gains user focus
  • 38. Activity callbacks • onPause() - system resuming another activity" • onStop() - activity becoming invisible to the user" • onDestroy() - before activity is destroyed
  • 39. Activity callbacks • onRestart() - called if activity was previously stopped, called prior to onStart()
  • 42. Configuration changes • when configuration changes, activities are destroyed and recreated" – default behaviour, can be changed" • properly handle config changes" – onSaveInstanceState(Bundle)
  • 43. Intent & Activity • starting activity explicitly" – new Intent(context, MyActivity.class)! • starting activity implicitly" – new Intent(Intent.ACTION_VIEW, Uri.parse(“http://developer.android.com”))! • starting activity for result
  • 44. User Interface • defined by a hierarchy of views" • layouts = containers" – LinearLayout, RelativeLayout, FrameLayout, ...
  • 45. User Interface • widgets" – UI objects" – Button, TextView, EditText, RadioButton, ..." – WebView
  • 46. User Interface • list widgets" – subclasses of AdapterView" – display a list of items" – use adapter to bind list do data" – ListView, GridView, Spinner, ...
  • 47. Adapters • provide data for Adapter views" • are responsible for the creation of items
  • 48. Resources • drawables" – bitmaps" – 9-patch png" – state lists" – layer lists" – shape drawables
  • 49. • layout" • strings" • colors" • menus" • dimensions" • animations Resources
  • 50. • arrays" • ids" • raw" • xml" • ... Resources
  • 51. Screen sizes and densities
  • 52. Screen sizes and densities • How to handle different screen sizes and densities?
  • 53. Resources • resources can be created in several versions" – the best version is selected according to current device configuration in runtime
  • 54. Resources • resource units" – dp - density-independent pixel" – sp - scale-independent pixel (for fonts)" – never use px!!!
  • 55. Resource qualifiers • suffixes for resource folders" – drawables, drawable-mdpi, ..." – values, values-cs" – layout, layout-sw640dp" – drawable-hdpi-v11
  • 56. Resource qualifiers • screen density - ldpi, mdpi, hdpi, xhdpi, ..." • screen size - small, normal, large, xlarge" • screen orientation - port, land" • language - en, cs, sk, en-rGB…" • version - v11, v14, ...
  • 57. Resource qualifiers • since Android 3.2" • w<N>dp - available screen width, w600dp" • h<N>dp - available screen heights, h720dp" • sw<N>dp - smallest width (does not change with orientation)
  • 58. Resources • accessed from code via generated R.java file and resource ids" – view.findViewById(R.id.txt_name)! – txtName.setText(R.string.txt_name_label)
  • 60. Android version fragmentation • How to handle different API levels available on different devices?
  • 61. Android version fragmentation • build target" – API level the app is compiled against" • AndroidManifest.xml" – <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />
  • 62. Android version fragmentation • handling versions in code" if (Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD) {! ! // code for Android < 2.3! }
  • 63. Android version fragmentation private boolean functionalitySupported = false;! static {! try {! checkFunctionalitySupported();! } catch (NoClassDefFoundError e) {! !functionalitySupported = false;! }! }! private static void checkFunctionalitySupported() throws ! NoClassDefFoundError {! ! functionalitySupported = android.app.Fragment.class != null;! }!
  • 64. Threads • main thread = UI thread" • do not ever block the UI thread!!!" • use worker threads for time consuming operations" • UI toolkit not thread safe - never manipulate UI from a worker thread
  • 65. Logging • java.util.logging.Logger • android.util.Log
  • 66. Toast • simple non-modal information" • displayed for a short period of time" • doesn’t have user focus
  • 67. Preferences SharedPreferences prefs = PreferenceManager! ! .getDefaultSharedPreferences(context);! SharedPreferences prefs = ! ! config.getSharedPreferences(PREFS_FILE_NAME,! ! Activity.MODE_PRIVATE);! " int storedValue = prefs.getInt(SOME_KEY, defaultValue);! " SharedPreferences.Editor editor = prefs.edit();! editor.putInt(SOME_KEY, storedValue);! editor.commit();
  • 68. Sources • developer.android.com" • android-developers.blogspot.com" • source.android.com" • stackoverflow.com" • youtube.com/androiddevelopers" • svetandroida.cz