CS425 / CSE 424 / ECE 428 [Fall 2009] Sept. 14, 2009 Ying Huang


Online development guide

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)

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. WebKit. OpenGL  . 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.

WHY ANDROID A simple and powerful SDK  No licensing. windows For us  Java-based. Mac OS. distribution. easy to import 3rd party Java library  Funding (40+ G1 phones)  Prize (amazon’s kindle)  Job opportunity . or development fees  Development over many platform  Excellent documentation  Thriving developer community    Linux.

map (Google API) Accelerometer. WebKit. Bluetooth   Libraries  API Support for Bluetoothe.ANDROID SDK FEATURE  GSM. power . and 3G networks. WiFi Ad hoc mode Media. SSL  Hardware control:   Location-based service. compass. GPS  touch screen. camera. SQLite. EDGE. WiFi. microphone.

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 . Monitor and Control the Dalvik virtual machines Logcat (see logged msgs)   Traceview  Manage the state of an emulator instance or Android-powered device  Copy files. and run shell commands.TOOLS  The Android Emulator       Dalvik Debug Monitoring Service (DDMS) Android Debug Bridge (ADB) Implementation of the Android virtual machine Test and debug your android applications. install compiled application packages.

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  A1: telnet + redir (MP1 doc) A2: adb forward    M1 E2  1) Port forward to connect Android from localhost 2) Use a proxy server which can listen on my_public_ip:15216 and forward the data to localhost:15216  abd –s emulator-5554 forward tcp:15216 tcp:15216 stcppipe localhost 15216 15216 .

MP1 Peer Registration Server G1 Phone (Peer) Underlying Infrastructure-based WiFi /TCP/IP Network Peer Peer .

MP1 PROJECT STRUCTURE Registration PeerList Messaging .

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

dialog. icon. notification  Ex: new message arrives share data between applications . sound.View Activity Intent Service Thread Resource ANDROID APPLICATION ARCHITECTURE  Services (Background)  Activity  Intent  Ex: Network Operation Intent Activity  Resource  Inter-communication among activities or services Externalization of strings and graphics  Notification   Content Providers  signaling users: Light.

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

Relativelayout  Menu  Exit app .setAdapter  http://developer.Button.html Positions of controls  LinearLayout.View Activity Intent Service Thread Resource VIEW COMPONENT  Widget   TextView. Form. TimePicker… ListView (PeerList)    Toolbox Update list by arrays  Layout  ArrayAdapter myListView.

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

View Activity Intent Service Thread Resource USER INTERACTION EVENT    onKeyDown.}} myEditText. int keyCode.} . KeyEvent event) { if (event.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v. onKeyUp onTrackBallEvent onTouchEvent registerButton.setOnClickListener(new OnClickListener() { public void onClick(View arg0) {….KEYCODE_DPAD_CENTER) { … return true. }}). } return false.getAction() == KeyEvent.ACTION_DOWN) if (keyCode == KeyEvent.

extra parameter  Child: use intent as feedback. Im: Intent intent = new Intent(Intent. data.   Action.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. Uri.putExtra(name. property). setResult  Parent: onActivityResult  startActivityForResult intent.class).ACTION_DIAL. Explicit  Subactivity: feedback  Implicit: Android selects the best  startActivity().parse(“tel:555-2368”)).

SHOW_DAMAGE”> </action> <category android:name=”android.xml <activity …> <intent-filter> <action android:name=”com.category.intent. Services.paad.earthquake.earthquake.)  Broadcast  Manifest. . and Broadcast Receivers as being capable of performing an action on a particular kind of data.inten t.action.intent.item/*”/> </intent-filter> </activity> announce application events system-wide  sendBroadcast  MyBroadcastReceiver extends BroadcastReceiver  registerReceiver (in java / in xml)  Intent Filter  Register Activities.View Activity Intent Service Thread Resource INTENT (CNTD.AL TERNATIVE_SELECTED”/> <data android:mimeType=”vnd.DE FAULT”/> <category android:name=”android.category.cursor .

View Activity Intent Service Thread Resource INTENT FROM PEERLIST TO MESSAGING Select a peer Send Intent PeerList Messaging .

higher priority than inactive Activities  Usage:   However. polling for data. updating Content Providers. all in the main thread responding to events.  Background threads .View Activity Intent Service Thread Resource WORKING IN BACKGROUND  Services  NO GUI.

MyService”></service>  Manifest.xml   Control   startService stopService  Communication  Bind service with activity: use public method and properties  Intent .View Activity Intent Service Thread Resource SERVICE  Service class   public class MyService extends Service public void onStart() {…} <service android:enabled=”true” android:name=”.

A Broadcast Receiver must return within 10 seconds. file IO.THREADING  Being Responsive (1sec)   Respond to any user action within 5 seconds. Complex processing New Thread  Synchronize threads  .  What to thread?   How?  Network.

MP1 THREADING STRUCTURE  Is it enough? Server Server Socket Server Socket Socket GUI Acitivty Network Service Spawn Thread .

PERIODICAL REGISTER WITH SERVER  Every 15 seconds Timer  How to update PeerList on PeerList GUI?  Intent .

processes. exit) threads. or Broadcast Receivers  create Services and threads Broadcast Receivers exclusively used to update UI . lose focus) Stopped (invisible) – Inactive (kill. Active (Foreground) .ACTIVITY LIFETIME  Android apps do not control their lifetime.Paused (FG.

intent. </intent-filter> </activity> <activity android:name=". </manifest> <?xml version="1. </intent-filter> </activity> <activity android:name=".XML  Service  Activity (intent-filter)  Permission  Don’t forget."> <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true"> /> " /> /> " /> .intent.action.Messaging"> … </activity> </application> … <uses-permission android:name=" OF APP – MANIFEST.0“ package="com.permission. your socket programming won’t run < android:name=".com/apk/res/android" android:versionCode="1“ android:versionName="1.category.Register"> < > <action android:name="android.PeerList"> <intent-filter> <action android:name="android.category. <uses-permission android:name="android.intent.action.MAIN" /> <category android:name="android.IMService" /> <activity android:name=".0" encoding="utf-8" ?> <manifest xmlns:android="http://schemas.MAIN" /> <category android:name="android.

array. color.View Activity Intent Service Thread Resource EXTERNAL RESOURCES  values/   drawables/  String. dimension. style theme Image  layout/  screen.xml .

println()  Package   View results  Logcat  Eclipse IDE .DEBUG System.

5_r3\usb_driver\x86\ Reference: [http://www.DEBUG ON DEVICE  On device  Debug mode Connect your G1 with your PC When it asks for driver location choose   On desktop    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  For windows.anddev.html] .org/debugginginstalling_apps_on_the_g1_windows_drivert3236. android-sdk-windows-1.

INSTALL PACKAGE TO ANDROID PHONES  Compile the apk packages in Eclipse  Export signed application package  adb install …apk  Error: uninstall .

cmd-shift-o or ctrl-shift-o Start as early as possible   Possible task partition for a group P1: GUI.OTHER TIPS  Automatic imports of packages In Eclipse. intent  P2: network service  P3: integration  . activity.




Sign up to vote on this title
UsefulNot useful