0% found this document useful (0 votes)
2 views20 pages

Android Programming

Uploaded by

Alex Vasquez
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views20 pages

Android Programming

Uploaded by

Alex Vasquez
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Android Programming Tutorial

Rong Zheng
Outline

¤ What is Android OS

¤ Setup your development environment

¤ GUI
¤ Layouts
¤ Activity life cycle
¤ Event handling

¤ Tasks

¤ Intent and broadcast receiver

¤ Resource
What is Android

¤ Linux-based OS

¤ Dalvik virtual
machine running
dex-code translated
from Java
Setup
What you need

¤ JDK 6

¤ IDE
¤ ADT (Android Development Tool) bundle ✔
or
¤ Eclipse + ADT plug-in + Android SDK
or
¤ Android studio

¤ Download earlier SDK versions using SDK manager if


needed
Android Virtual Device (AVD)

¤ Android emulator allows


development w/o physical
device
¤ Tend to be slow when launched
the first time
¤ Can emulate network, camera
and storage
¤ No support for WiFi, Bluetooth,
most hardware sensors

¤ Possible alternatives:
¤ Genymotion (previously
AndroVM), Manymo, …

Demo: create a new AVD


Android App Essentials

¤ Layout
¤ View objects: UI widgets such as buttons, text box etc.
¤ Positioning view objects on the screen
¤ View group: invisible view containers that defines how the
child views are laid out

¤ Activity
¤ Implements the real logic behind the application
¤ There could be multiple activities
Activity life cycle

¤ Screen rotation
¤ Application paused,
stopped and restarted
¤ onCreate() called

¤ Press home button


¤ Activity paused, onPause
(), onStop() called;
onRestart() called when
restarted

¤ Press back button


¤ Activity destroyed,
onPause(), onStop,
onDestroy()
Example: Network tester
¤ Display the network configuration

¤ Ping [Link]

¤ Download a file from a fixed URL and determine the downloading speed
Step 1: Create an Android Project

¤ New  New Android Application


Step 2: Lay out UI
<RelativeLayout xmlns:android="[Link]
xmlns:tools="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button
android:id="@+id/netinfo_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Show Network Configuration" />

<Button
android:id="@+id/ping_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Ping" />

<Button
android:id="@+id/fd_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="File Download" />

<TextView
android:id="@+id/text_display"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="100"
android:padding="24dp"
android:scrollbars="vertical" />
</LinearLayout>

<ProgressBar
android:id="@+id/test_progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_margin="10dp"
android:visibility="invisible"/>

</RelativeLayout>
Step 3: From Layout to View Objects

¤ setContentView([Link].activity_main) inflates a layout


and put on screen
¤ [Link].activity_main is a resource id
¤ @+id/resource_id automatically creates the resource id

¤ Wire up widgets
¤ Get the references
¤ public View findViewById( int id)
¤ Set listeners
AsyncTask

¤ Network operations typically take time to complete

¤ AsyncTask allows operations running in the background and


publishing the results on the UI thread
¤ Do not block the UI thread!
¤ Do not access the Android UI toolkits from outside the UI thread

¤ Implement a class that extends AsyncTask<Param, Progress,


Result>
¤ Params, the type of the parameters sent to the task upon
execution.
¤ Progress, the type of the progress units published during the
background computation.
¤ Result, the type of the result of the background computation
AsyncTask (cont)

¤ doInBackground(Void... params)
¤ What to do in the background

¤ protected void onProgressUpdate(Void... progress)


¤ Run in the UI thread
¤ Invoked by publishProgress in the doInBackground

¤ protected void onPostExecute(Void result)


¤ Run in the UI thread

¤ protected void onPreExecute()


¤ Set up the task

Example code
Little tricks
¤ Can execute shell commands from Android app
¤ [Link]().exec(Cmd)

¤ Disable screen rotation

<activity android:name="[Link]"
android:label="@string/app_name"
android:screenOrientation="portrait">
Little tricks (cont’d)

¤ User handler to cancel an AsyncTask after some time


¤ public final boolean postDelayed (Runnable r, long
delayMillis)
Handler handler = new Handler();
[Link](new Runnable() {
@Override public void run() {
if ([Link]() == [Link])
[Link](true);}}, 60000);

¤ Use toast for notification


[Link]([Link], "Opps...", Toast.LENGTH_SHORT)
.show();
Intent and broadcast receiver
¤ Intent is a mechanism in Android to allow late binding of
components within and across applications
¤ Message passing

Intent Broadcast intent

Your application
Intent(DO_SOMETHING) Intent(DO_SOMETHING)

Android OS

(any app)
Broadcast receiver

¤ Allows to register for system wide or application events


¤ ACTION_BATTERY_LOW, ACTION_HEADSET_PLUG,
ACTION_SCREEN_ON, ACTION_TIMEZONE_CHANGED,
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION, etc

1. Step1: extend a broadcast receiver class and override


onReceive(Context c, Intent intent) method

2. Step 2: register the receiver(BroadcastReceiver receiver,


IntentFilter filter)

3. Step 3: change [Link] to add the


permission
Example
if (mReceiverWifi == null)
mReceiverWifi = new WifiReceiver();

registerReceiver(mReceiverWifi, new IntentFilter(


WifiManager.NETWORK_STATE_CHANGED_ACTION));

description of Intent values to


be matched

private class WifiReceiver extends BroadcastReceiver {


public void onReceive(Context c, Intent intent) {
NetworkInfo info = (NetworkInfo)[Link]().getParcelable("networkInfo");
[Link]([Link]().toString());
};
}
Resource

¤ ADT bundle
[Link]

¤ ADT Eclipse Plug-in


[Link]

¤ Android API
[Link]

You might also like