100% found this document useful (1 vote)
287 views34 pages

B A J I H S: Egin Ndroid Ourney N OUR

This document provides an overview of how to begin developing Android applications. It discusses key aspects of the Android SDK including tools, mobile operating systems, what Android is, why develop for Android, SDK features, and the basic application architecture including views, activities, intents, services, and resources. It also gives examples of how to work with views, activities, intents, and the user interface.

Uploaded by

arya009
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
100% found this document useful (1 vote)
287 views34 pages

B A J I H S: Egin Ndroid Ourney N OUR

This document provides an overview of how to begin developing Android applications. It discusses key aspects of the Android SDK including tools, mobile operating systems, what Android is, why develop for Android, SDK features, and the basic application architecture including views, activities, intents, services, and resources. It also gives examples of how to work with views, activities, intents, and the user interface.

Uploaded by

arya009
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 34

BEGIN ANDROID JOURNEY

IN HOURS
CS425 / CSE 424 / ECE 428 [Fall 2009]

Sept. 14, 2009


Ying Huang
REFERENCE
 Online development guide
 http://developer.android.com/guide/index.html

 Book resource
 “Professional Android Application Development”, by
Reto Meier, (Wrox, amazon link)
 “Android A programmers guide”, by J.F. DiMarzio,
(McGraw Hill, amazon link)
 “Beginning.Android”, by Mark L. Murphy, (Apress,
amazon link)
 “Pro Android”, by Sayed Y. Hashimi, Satya
Komatineni, (Apress, amazon link)
MOBILE OS
 Symbian
 iPhone

 RIM's BlackBerry

 Window mobile

 Linux

 Palm webOS

 Android

 ….
WHAT IS ANDROID?
 Google  OHA (Open Handset Alliance)
 The first truly open and comprehensive platform for
mobile devices, all of the software to run a mobile
phone but without the proprietary obstacles that have
hindered mobile innovation.

 Linux OS kernel
 Java programming
 Open source libraries: SQLite, WebKit, OpenGL
WHY ANDROID
 A simple and powerful SDK
 No licensing, distribution, or development fees
 Development over many platform
 Linux, Mac OS, windows
 Excellent documentation
 Thriving developer community

 For us
 Java-based, easy to import 3rd party Java library
 Funding (40+ G1 phones)
 Prize (amazon’s kindle)
 Job opportunity
ANDROID SDK FEATURE
 GSM, EDGE, and 3G networks, WiFi, Bluetooth
 API Support for Bluetoothe, WiFi Ad hoc mode
 Libraries
 Media, SQLite, WebKit, SSL
 Hardware control:
 Accelerometer, compass, microphone, camera, GPS
 touch screen, power

 Location-based service, map (Google API)


TOOLS
 The Android Emulator
 Implementation of the Android virtual machine
 Test and debug your android applications.
 Dalvik Debug Monitoring Service (DDMS)
 Monitor and Control the Dalvik virtual machines
 Logcat (see logged msgs)
 Android Debug Bridge (ADB)
 Manage the state of an emulator instance or Android-powered
device
 Copy files, install compiled application packages, and run
shell commands.
 Traceview
 Graphical analysis tool for viewing the trace logs from your
Android application
 Debug your application and profile its performance
 MkSDCard
 Creates an SDCard disk image
RUN TWO NETWORKING EMULATORS IN A
COMPUTER (UPDATED) - ADB

 Q: run two networking emulators in a computer


A using the public IP address of A, during
debugging and demo?
E1 E2

M1
 A1: telnet + redir (MP1 doc)

 A2: adb forward


 1) Port forward to connect Android from localhost
 abd –s emulator-5554 forward tcp:15216 tcp:15216
 2) Use a proxy server which can listen on
my_public_ip:15216 and forward the data to
localhost:15216
 stcppipe localhost 15216 15216
MP1
G1 Phone (Peer)
Peer Registration
Server

Underlying
Infrastructure-based
WiFi /TCP/IP Network

Peer Peer
MP1 PROJECT STRUCTURE

Registration PeerList Messaging


View Activity Intent Service Thread Resource

ANDROID APPLICATION ARCHITECTURE


 Views:
 Building block for user interface components.
 Activities
 A single, focused thing that the user can do.
 Interaction with users: creating a window to place UI
 full-screen windows, floating windows, embedded
inside of another activity
 Ex: Registration, Peerlist, Messaging GUI
View Activity Intent Service Thread Resource

ANDROID APPLICATION ARCHITECTURE


Activity
 Services (Background)
 Ex: Network Operation Intent

 Intent Activity

 Inter-communication among activities or services


 Resource
 Externalization of strings and graphics
 Notification
 signaling users: Light, sound, icon, dialog,
notification
 Ex: new message arrives

 Content Providers
 share data between applications
View Activity Intent Service Thread Resource

VIEW
screen.xml
 Layout of visual interface <?xml version=”1.0” encoding=”utf-8”?>
<LinearLayout
xmlns:android=”http://schemas.android.com
/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
 Java Code android:layout_height=”fill_parent”>
<TextView
 Initialize android:id=”@+id/myTextView”
@Override android:layout_width=”fill_parent”
public void onCreate(Bundle icicle) { android:layout_height=”wrap_content”
super.onCreate(icicle); android:text=”Hello World, HelloWorld”
setContentView(R.layout.screen); />
} </LinearLayout>
 Access
TextView myTextView =
(TextView)findViewById(R.id.myTextView);
View Activity Intent Service Thread Resource

VIEW COMPONENT
 Widget Toolbox
 TextView, EditText,Button, Form, TimePicker…
 ListView (PeerList)
 Update list by arrays
 ArrayAdapter
 myListView.setAdapter
 Layout
 Positions of controls
 LinearLayout, Relativelayout

 http://developer.android.com/guide/tutorials/views/index.html

 Menu
 Exit app
View Activity Intent Service Thread Resource

ACTIVITY
 Foreground Activity: suspended when invisible
 Visual, interactive Registration
 Ex: Game, Map Peer List
Messaging
 Background Service: Little interaction
 Ex: Hardware, power management
Network
Operation
Management
 Intermittent Activity
 Notification, service
 Expects some interactivity but does most of its work
in the background.
View Activity Intent Service Thread Resource

USER INTERACTION EVENT


 onKeyDown. onKeyUp
 onTrackBallEvent
 onTouchEvent

registerButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {….}}
myEditText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN)
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
{

return true;
}
return false;
}});}
View Activity Intent Service Thread Resource

APPLICATION AND COMPONENT GLUES


 An intent is an abstract description of an
operation to be performed. Ex: Intent intent = new
 Launch an activity Intent(MyActivity.this, MyOtherActivity.class);
 Explicit Im: Intent intent = new
Intent(Intent.ACTION_DIAL,
Uri.parse(“tel:555-2368”));
 Implicit: Android selects the best
 startActivity();

 Subactivity: feedback
 Child: use intent as feedback, setResult
 Parent: onActivityResult

 startActivityForResult

 Action, data, extra parameter


 intent.putExtra(name, property);
View Activity Intent Service Thread Resource

INTENT (CNTD.)
Manifest.xml
 Broadcast <activity …>
<intent-filter>
 announce application events <action
android:name=”com.paad.earthquake.inten
system-wide t.action.SHOW_DAMAGE”>
</action>
 sendBroadcast <category
android:name=”android.intent.category.DE
 MyBroadcastReceiver extends FAULT”/>
<category
BroadcastReceiver android:name=”android.intent.category.AL
TERNATIVE_SELECTED”/>
 registerReceiver (in java / in xml) <data
android:mimeType=”vnd.earthquake.cursor
.item/*”/>
</intent-filter>
 Intent Filter </activity>

 Register Activities, Services, and


Broadcast Receivers as being
capable of performing an action
on a particular kind of data.
View Activity Intent Service Thread Resource

INTENT FROM PEERLIST TO MESSAGING

Select a peer
Send Intent

PeerList Messaging
View Activity Intent Service Thread Resource

WORKING IN BACKGROUND
 Services
 NO GUI, higher priority than inactive Activities
 Usage:
 responding to events, polling for data, updating Content
Providers.
 However, all in the main thread

 Background threads
View Activity Intent Service Thread Resource

SERVICE
 Service class
 public class MyService extends Service
 public void onStart() {…}

 Manifest.xml
 <service android:enabled=”true”
android:name=”.MyService”></service>

 Control
 startService
 stopService

 Communication
 Bind service with activity: use public method and
properties
 Intent
THREADING
 Being Responsive (1sec)
 Respond to any user action within 5 seconds.
 A Broadcast Receiver must return within 10
seconds.

 What to thread?
 Network, file IO, Complex processing
 How?
 New Thread
 Synchronize threads
 Handler.post()
MP1 THREADING STRUCTURE
 Is it enough?

Server
Server
Socket
Server
Socket
Socket
GUI Network Spawn
Acitivty Service

Thread
PERIODICAL REGISTER WITH SERVER
 Every 15 seconds

Timer

 How to update PeerList on PeerList GUI?


 Intent
ACTIVITY LIFETIME
 Android apps do not control their lifetime.

 Active (Foreground) - Paused (FG, lose focus) -


Stopped (invisible) – Inactive (kill, exit)
create Services threads, processes, or
and threads Broadcast Receivers

Broadcast Receivers
exclusively used to update UI
DECLARATION OF APP – MANIFEST.XML
Service
<?xml version="1.0" encoding="utf-8" ?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1“ android:versionName="1.0“
package="com.uiuc.cs425">
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:debuggable="true">

Activity (intent-filter)
< android:name=".services.IMService" />
 <activity android:name=".Register">
< >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category. />
</intent-filter>
</activity>
<activity android:name=".PeerList">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category. " />
</intent-filter>
</activity>
<activity android:name=".Messaging">

</activity>
 Permission </application>

 Don’t forget. Otherwise, <uses-permission android:name="android.permission. />
your socket programming <uses-permission
won’t run android:name="android.permission.
</manifest>
" />
View Activity Intent Service Thread Resource

EXTERNAL RESOURCES
 values/
 String, color, array, dimension, style theme
 drawables/
 Image
 layout/
 screen.xml
DEBUG
 System.err.println()
 Package - android.util.Log

 View results
 Logcat
 Eclipse IDE
DEBUG ON DEVICE
 On device
 Debug mode

 On desktop
 Connect your G1 with your PC
 When it asks for driver location choose
 For windows, android-sdk-windows-1.5_r3\usb_driver\x86\
 You'll see sth like "HTC Dream Composite ADB Interface"
on success
 (Re)Start Eclipse
 Your G1 should now be listed in the DDMS-Perspective
under Device

 Reference: [http://www.anddev.org/debugging-
installing_apps_on_the_g1_windows_driver-
t3236.html]
INSTALL PACKAGE TO ANDROID PHONES
 Compile the apk packages in Eclipse
 Export signed application package

 adb install …apk


 Error: uninstall
OTHER TIPS
 Automatic imports of packages
In Eclipse, cmd-shift-o or ctrl-shift-o

 Start as early as possible


 Possible task partition for a group
 P1: GUI, activity, intent
 P2: network service

 P3: integration
DEMO
DALVIK DEBUG MONITORING SERVICE
ANDROID DEBUG BRIDGE (ADB)

You might also like