Top Banner
Android Development - the basics Tomáš Kypta
69

Android development - the basics, MFF UK, 2014

Jun 27, 2015

Download

Technology

Tomáš Kypta

Introductory lecture to Android development. Faculty of Mathematics and Physics in Prague, 2014.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Android development - the basics, MFF UK, 2014

Android Development - the basics

Tomáš Kypta

Page 2: Android development - the basics, MFF UK, 2014

• Android platform and ecosystem"• Android SDK and development tools"• Hello World"• building blocks of Android apps & the

manifest file"• activities, widgets, intents"• toasts

Agenda

Page 3: Android development - the basics, MFF UK, 2014

• Linux-based operating system"

• open-source (http://source.android.com/)"

• originally phone OS"

• tablet support (since Honeycomb, Android 3.0)

Android platform

Page 4: Android development - the basics, MFF UK, 2014

• Google TV"

• Google Glass"

• Google Wear

Android platform

Page 5: Android development - the basics, MFF UK, 2014

• 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

Page 6: Android development - the basics, MFF UK, 2014

• 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)

History

Page 7: Android development - the basics, MFF UK, 2014

Platform Versions

Page 8: Android development - the basics, MFF UK, 2014

• 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

Android ecosystem

Page 9: Android development - the basics, MFF UK, 2014

• 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

Page 10: Android development - the basics, MFF UK, 2014

• customers can purchase"

• developers can sell"

• Play Music "

• Play Books "

• Play Movies

Google Play

Page 11: Android development - the basics, MFF UK, 2014

• selling apps"

– 15 min return period"

• in-app billing"

– freemium model"

• ads"

– AdMob, ...

Monetization

Page 12: Android development - the basics, MFF UK, 2014

• fragmentation"• manufacturer/carrier enhancements"• updates & support"• openness - low quality apps in Google Play"• malware"– users

Android “problems”

Page 13: Android development - the basics, MFF UK, 2014

• app can be installed directly"

– .apk file"

• user accepts app permissions when installing or updating the app

Android security

Page 14: Android development - the basics, MFF UK, 2014

• Verify Apps (Android 2.3+)"

– checks every app install"

• Google Play can remotely uninstall harmful apps

Android security

Page 15: Android development - the basics, MFF UK, 2014
Page 16: Android development - the basics, MFF UK, 2014
Page 17: Android development - the basics, MFF UK, 2014

• programming in “Java”"

– Java SE 7 (KitKat)"

• native apps possible (C++)"

• development tools platform friendly"

–Windows, Linux, Mac OS X

Development

Page 18: Android development - the basics, MFF UK, 2014

• IDE support"

– Android Studio, IntelliJ IDEA"

– ADT plugin for Eclipse"

– Netbeans"

• you can freely develop on any device

Development

Page 19: Android development - the basics, MFF UK, 2014

• android - Android SDK and AVD Manager"

• adb - Android Debug Bridge"

• monitor - (ddms & hierarchyviewer)"

• emulator"

• lint, Traceview, ProGuard"

• docs, samples

Android SDK

Page 20: Android development - the basics, MFF UK, 2014

• compatibility libraries"– v4 - backports lots of newer functionality

to Android 1.6+"– Fragments, NotificationCompat, ViewPager"

– v7"– AppCompat"

– v8"– v13

Support Libraries

Page 21: Android development - the basics, MFF UK, 2014

• Google Maps"

• In-app Billing"

• Games"

• Google+"

• Authorization

Google Play Services

Page 22: Android development - the basics, MFF UK, 2014

• AdMob"

• Google Analytics, Flurry, Crittercism

Libraries

Page 23: Android development - the basics, MFF UK, 2014
Page 24: Android development - the basics, MFF UK, 2014

• Activity"

• Service"

• Content provider"

• Broadcast receiver"

• AndroidManifest.xml

Android building blocks

Page 25: Android development - the basics, MFF UK, 2014

• screen with user interface"

• the only visual component"

• example - an email app"

– list of emails"

– details of an email"

– email composition

Activity

Page 26: Android development - the basics, MFF UK, 2014

• has no UI"

• long-running tasks"

• examples"

–music playback service"

– download service"

– sync service

Service

Page 27: Android development - the basics, MFF UK, 2014

• 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, ...)

Content Provider

Page 28: Android development - the basics, MFF UK, 2014

• 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, ...

Broadcast Receiver

Page 29: Android development - the basics, MFF UK, 2014

• defines what parts the app have"

• defines which endpoints are exposed"

• minimum/maximum API level"

• permissions"

• declare hardware and software features"

• require configuration

AndroidManifest.xml

Page 30: Android development - the basics, MFF UK, 2014

• asynchronous message"

• binds components together (all except Content Provider)"

• starting activities"

• starting services and binding to services"

• sending broadcasts

Intent

Page 31: Android development - the basics, MFF UK, 2014

Hello World

Page 32: Android development - the basics, MFF UK, 2014

Build

Page 33: Android development - the basics, MFF UK, 2014
Page 34: Android development - the basics, MFF UK, 2014
Page 35: Android development - the basics, MFF UK, 2014

• 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

Page 36: Android development - the basics, MFF UK, 2014

• activity can be in different states during its lifecycle"

– foreground, visible, stopped, killed"

• when activity state changes a system callback is called

Activity Lifecycle

Page 37: Android development - the basics, MFF UK, 2014

• onCreate() - activity created"

• onStart() - activity visible for the user"

• onResume() - activity gains user focus

Activity callbacks

Page 38: Android development - the basics, MFF UK, 2014

• onPause() - system resuming another activity"

• onStop() - activity becoming invisible to the user"

• onDestroy() - before activity is destroyed

Activity callbacks

Page 39: Android development - the basics, MFF UK, 2014

• onRestart() - called if activity was previously stopped, called prior to onStart()

Activity callbacks

Page 40: Android development - the basics, MFF UK, 2014
Page 41: Android development - the basics, MFF UK, 2014
Page 42: Android development - the basics, MFF UK, 2014

• when configuration changes, activities are destroyed and recreated"

– default behaviour, can be changed"

• properly handle config changes"– onSaveInstanceState(Bundle)

Configuration changes

Page 43: Android development - the basics, MFF UK, 2014

• 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

Intent & Activity

Page 44: Android development - the basics, MFF UK, 2014

• defined by a hierarchy of views"

• layouts = containers"– LinearLayout, RelativeLayout, FrameLayout, ...

User Interface

Page 45: Android development - the basics, MFF UK, 2014

• widgets"

– UI objects"

– Button, TextView, EditText, RadioButton, ..."

–WebView

User Interface

Page 46: Android development - the basics, MFF UK, 2014

• list widgets"

– subclasses of AdapterView"

– display a list of items"

– use adapter to bind list do data"– ListView, GridView, Spinner, ...

User Interface

Page 47: Android development - the basics, MFF UK, 2014

• provide data for Adapter views"

• are responsible for the creation of items

Adapters

Page 48: Android development - the basics, MFF UK, 2014

• drawables"

– bitmaps"

– 9-patch png"

– state lists"

– layer lists"

– shape drawables

Resources

Page 49: Android development - the basics, MFF UK, 2014

• layout"

• strings"

• colors"

• menus"

• dimensions"

• animations

Resources

Page 50: Android development - the basics, MFF UK, 2014

• arrays"

• ids"

• raw"

• xml"

• ...

Resources

Page 51: Android development - the basics, MFF UK, 2014

Screen sizes and densities

Page 52: Android development - the basics, MFF UK, 2014

• How to handle different screen sizes and densities?

Screen sizes and densities

Page 53: Android development - the basics, MFF UK, 2014

• resources can be created in several versions"

– the best version is selected according to current device configuration in runtime

Resources

Page 54: Android development - the basics, MFF UK, 2014

• resource units"

– dp - density-independent pixel"

– sp - scale-independent pixel (for fonts)"

– never use px!!!

Resources

Page 55: Android development - the basics, MFF UK, 2014

• suffixes for resource folders"

– drawables, drawable-mdpi, ..."

– values, values-cs"

– layout, layout-sw640dp"

– drawable-hdpi-v11

Resource qualifiers

Page 56: Android development - the basics, MFF UK, 2014

• 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

Page 57: Android development - the basics, MFF UK, 2014

• 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)

Resource qualifiers

Page 58: Android development - the basics, MFF UK, 2014

• accessed from code via generated R.java file and resource ids"– view.findViewById(R.id.txt_name)!

– txtName.setText(R.string.txt_name_label)

Resources

Page 59: Android development - the basics, MFF UK, 2014

Localization?

Page 60: Android development - the basics, MFF UK, 2014

• How to handle different API levels available on different devices?

Android version fragmentation

Page 61: Android development - the basics, MFF UK, 2014

• build target"

– API level the app is compiled against"

• AndroidManifest.xml"– <uses-sdk android:minSdkVersion="8"

android:targetSdkVersion="16" />

Android version fragmentation

Page 62: Android development - the basics, MFF UK, 2014

• handling versions in code"if (Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD) {!

! // code for Android < 2.3!

}

Android version fragmentation

Page 63: Android development - the basics, MFF UK, 2014

private boolean functionalitySupported = false;!

static {!

try {!

checkFunctionalitySupported();!

} catch (NoClassDefFoundError e) {!

!functionalitySupported = false;!

}!

}!

private static void checkFunctionalitySupported() throws ! NoClassDefFoundError {!

! functionalitySupported = android.app.Fragment.class != null;!

}!

Android version fragmentation

Page 64: Android development - the basics, MFF UK, 2014

• 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

Threads

Page 65: Android development - the basics, MFF UK, 2014

• java.util.logging.Logger

• android.util.Log

Logging

Page 66: Android development - the basics, MFF UK, 2014

• simple non-modal information"• displayed for a short period of time"• doesn’t have user focus

Toast

Page 67: Android development - the basics, MFF UK, 2014

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();

Preferences

Page 68: Android development - the basics, MFF UK, 2014

• developer.android.com"• android-developers.blogspot.com"• source.android.com"• stackoverflow.com"• youtube.com/androiddevelopers"• svetandroida.cz

Sources

Page 69: Android development - the basics, MFF UK, 2014

THE END