Question? Leave a message!

Android Application Development

Android Application Development 19
Android Application Development Daniel Switkin Senior Software Engineer, Google Inc.Goal Get you an idea of how to start developing • Android applications Introduce major Android application concepts • Walk you through a sample application in the • development environmentAgenda System architecture • Hello World • Application components • Practical matters • Toolchain •What is Android A free, open source mobile platform • A Linuxbased, multiprocess, multithreaded OS • Android is not a device or a product • It’s not even limited to phones you could build • a DVR, a handheld GPS, an MP3 player, etc.Applications Home Contacts Phone Browser ... Application Framework Window Content View Notification Activity Manager Manager Providers System Manager Telephony Resource Location Package Manager GTalk Service Manager Manager Manager Libraries Android Runtime Media Surface Manager SQLite Core Libraries Framework Dalvik Virtual OpenGL ES FreeType WebKit Machine SGL SSL libc Linux Kernel Display Bluetooth Flash Memory Binder (IPC) Camera Driver Driver Driver Driver Driver Audio Power USB Driver Keypad Driver WiFi Driver Drivers ManagementHello WorldThe History of GUIs Hardcoded to the screen • Hardcoded to the window • Hardcoded within a view hierarchy • Dynamic layout within a view hierarchy •Generating GUIs Two ways to create GUIs: in XML or in code • Declarative route via XML has advantages • A lot of your GUIrelated work will take place in: • res/layout • res/values • id/nameforcomponent gives you • handle for referencing XML declarations in codeViews Views are building blocks • Examples: • Can be as basic as: TextView, EditText, or • ListView Fancier views: ImageView, MapView, WebView •Layouts Controls how Views are laid out • FrameLayout : each child a layer • LinearLayout : single row or column • RelativeLayout : relative to other Views • TableLayout : rows and columns • AbsoluteLayout : x,y coordinates •Layouts are resizable 480x320 240x320 320x240Layouts are customizable res/layout/share.xml res/layoutland/share.xmlLayout Parameters Specify many aspects of what’s being rendered • Examples: • android:layoutheight • android:layoutwidth • Tip: start with documentation for a specific View • or Layout and then look at what’s inherited from parent classApplication ComponentsBasic components UI component typically Activities corresponding to one screen. BroadcastReceivers Respond to broadcast Intents. Faceless tasks that run in the Services background. ContentProviders Enable applications to share data.Activities Typically correspond to one screen in a UI • But, they can: • be faceless • be in a floating window • return a value •Intents Think of Intents as a verb and object; a • description of what you want done Examples: VIEW, CALL, PLAY, etc. • System matches Intent with Activity that can best • provide that service Activities and BroadcastReceivers describe what • Intents they can service in their IntentFilters (via AndroidManifest.xml)Intents Home Contacts Photo “Pick photo” Picasa Gallery GMail System picks best Components can be Client component mak New components can use es a Chat component f existing functionality r request f eplaced an or a specific action y time or that action BloggerBroadcastReceivers Components designed to respond to broadcast • Intents Think of them as a way to respond to external • notifications or alarms Applications can invent and broadcast their own • Intents as wellServices Faceless components that run in the background • Example: music player, network downlaod, etc. • Bind your code to a running service via a • remoteable interface defined in an IDL Can run in your own process or separate • processContentProviders Enables sharing of data across applications • Examples: address book, photo gallery, etc. • Provides uniform APIs for: • querying (returns a Cursor) • delete, update, and insert rows • Content is represented by URI and MIME type •Practical mattersStorage and Persistence A couple of different options: • Preferences • Flat file • SQLite • ContentProvider •Packaging Think of .apk files as Android packages • Everything needed for an application is bundled • up therein Basically a glorified ZIP file •Resources res/layout: declarative layout files • res/drawable: intended for drawing • res/anim: bitmaps, animations for transitions • res/values: externalized values for things like • strings, colors, styles, etc. res/xml: general XML files used at runtime • res/raw: binary files (e.g. sound) •Assets Similar to Resources • Differences: • Readonly • InputStream access to assets • Any kind of file • Be mindful of file sizes •Application Lifecycle Application lifecycle is managed by the system • Application start/stop is transparent to the user • Enduser only sees that they are moving between • screens Read documentation for •ToolchainEmulator QEMUbased ARM emulator • runs same system image as a device Use same toolchain to work • with devices or emulatorEclipse Plugin Project templateDebugging Call stack Examine variables Breakpoints, single steppingEclipse demoQ A