Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Android Application
Development
Octav Chipara
Thursday, September 13, 12
What is Android
• A free, open source mobile platform
• A Linux-based, 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.
2
Thursday, September 13, 12
The Android stack
3
Thursday, September 13, 12
Android Application Framework
4
Thursday, September 13, 12
Android runtime
• Every Android app runs its own process, with its own instance of the Dalvik
virtual machine
• Dalvik has been written so that it can run multiple VMs efficiently
• Dalvik VM executes files in Dalvik Executable (.dex) format
• more details in later lectures
5
Thursday, September 13, 12
Basic Android application components
6
Thursday, September 13, 12
Hello World
Thursday, September 13, 12
Application directory structure
Directory
src/
res/layout
res/values
res/drawable-?dpi/
AndroidManifest.xml
gen/
Description
source files
contains the XML file the
specifies
screen layout
constants,the
etc.
pictures used by the app
the properties of the project
automatically generated code
8
Thursday, September 13, 12
Generating GUIs
• Two ways to create GUIs
• in XML - a declarative approach
• in code - discouraged!
• A lot of the GUI-related files will be located in
• res/layout
• res/values
• res/AndroidManifest.xml - key file in your development
Referencing resources
9
Thursday, September 13, 12
Views and View Groups
• Views are the building blocks
• TextView, EditText, or ListView, ...
• View Groups - define how the child views are laid out
• grid, lists
10
Thursday, September 13, 12
Properties of views and view components
• Three files you will be working on
• activity_main.xml, values.xml, and R.java
• you edit the xml files, R.java is automatically generated but used in your code
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight = "1"
/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="clickMe"
android:text="@string/button_label"
/>
</LinearLayout>
res/layout /activity_main.xml
11
Thursday, September 13, 12
Properties of views and view components
<resources>
<string
<string
<string
<string
<string
<string
name="app_name">MyFirstApp</string>
name="hello_world">Hello world! This is a new string! </string>
name="menu_settings">Settings</string>
name="title_activity_main">MainActivity</string>
name="button_label">Send!</string>
name="title_activity_display">DisplayActivity</string>
</resources>
res/values /strings.xml
12
Thursday, September 13, 12
Properties of views and view components
public final class R {
...
public static final class id {
public static final int LinearLayout1=0x7f070001;
public static final int button1=0x7f070003;
public static final int editText1=0x7f070002;
public static final int menu_settings=0x7f070004;
public static final int textview=0x7f070000;
}
public static final class layout {
public static final int activity_display=0x7f030000;
public static final int activity_main=0x7f030001;
}
public static final class menu {
public static final int activity_display=0x7f060000;
public static final int activity_main=0x7f060001;
}
public static final class string {
...
}
}
res/gen/R.java
13
Thursday, September 13, 12
Properties of views and view components
• You can reference values between the files various files
• resources are defined in both the layout and values files
• resources are references with @[resource_type]/[name]
• uses @+ to defined new resources
14
Thursday, September 13, 12
Layout
• 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
15
Thursday, September 13, 12
Layouts are resizable
16
Thursday, September 13, 12
Layout parameters
• Specify many aspects of what’s being rendered
• Examples:
• android:layout_height
• android:layout_width
• Tip: start with documentation for a specific View or Layout and then look at
what’s inherited from parent class
17
Thursday, September 13, 12
Activities
• Typically correspond to one screen in a UI
• if a UI is defined, then it has its own xml file under layouts
• however, they can
• be faceless
• be in a floating window
• return a value
18
Thursday, September 13, 12
Lifecycle of an Activity
transient
The KEY to a happy life with Android!
19
Thursday, September 13, 12
Static application states
• Resumed (aka running)
• activity is in foreground and user may interact with it
• Paused
• activity is partly obscured by another activity
• does not receive any user input
• Stopped (aka background)
• activity is not visible on the screen
20
Thursday, September 13, 12
What should go in each function call?
• protected void onCreate (Bundle savedInstanceState)
• here you can add different UI elements
• instantiate class-wide variables
• saveInstanceState - used to recreate an activity after it is destroyed
21
Thursday, September 13, 12
What should go in each function call?
• protected void onPause ()
• on pause can be both an indication of
• user briefly switched to a different activity OR user switched apps
• you may want to suspend some actions of your activity
• e.g., playback audio or video
• release system resources
• e.g., camera or gps
• guidelines: you should avoid delay intensive operations (this should go onStop())
• e.g., writing to files
• protected void onResume ()
• (re) acquire the necessary to run the application
• e.g., cameras
22
Thursday, September 13, 12
What should go in each function call?
• protected void onStop ()
• note that your activity is still in memory
• release as many resources as necessary
• save data to persistent storage
• protected void onStart() or protected void onRestart()
• verify that the right resources are available for your application
• e.g., GPS, network connections, WiFi
23
Thursday, September 13, 12
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)
24
Thursday, September 13, 12
Broadcast receivers
• 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 well
25
Thursday, September 13, 12
Services
• Faceless components that run in the background
• example: music player, network download, etc.
• Bind your code to a running service via a remote-able interface defined in an
IDL
• Can run in your own process or separate process
26
Thursday, September 13, 12
Content Providers
• 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
27
Thursday, September 13, 12
Android Debug Bridge
• Provides command line access to Android devicds
• adb shell -- starts the shell
• adb pull/push -- copy data from/to device
• adb uninstall - deletes an application
28
Thursday, September 13, 12