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. Linux OS kernel  Java programming  Open source libraries: SQLite. all of the software to run a mobile phone but without the proprietary obstacles that have hindered mobile innovation. WebKit. OpenGL  .

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

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

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. 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. install compiled application packages. and run shell commands. 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  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 .

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

dialog.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. notification  Ex: new message arrives share data between applications . sound. icon.

android.onCreate(icicle). }  Access TextView myTextView = (TextView)findViewById( /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. .xml <?xml version=”1. HelloWorld” /> </LinearLayout>  Java Code  Initialize @Override public void onCreate(Bundle icicle) { super. setContentView(” encoding=”utf-8”?> <LinearLayout xmlns:android=”http://schemas.screen).myTextView).View Activity Intent Service Thread Resource VIEW  Layout of visual interface screen.layout.

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

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

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

putExtra(name. Uri. Im: Intent intent = new Intent(Intent.   Action.View Activity Intent Service Thread Resource APPLICATION AND COMPONENT GLUES  An intent is an abstract description of an operation to be performed.class). extra parameter  Child: use intent as feedback. Explicit  Subactivity: feedback  Implicit: Android selects the best  startActivity().parse(“tel:555-2368”)). setResult  Parent: onActivityResult  startActivityForResult intent. Ex: Intent intent = new  Launch an activity  Intent(MyActivity. .ACTION_DIAL. MyOtherActivity. data.this. property).

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

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. updating Content Providers. all in the main thread responding to events.View Activity Intent Service Thread Resource WORKING IN BACKGROUND  Services  NO GUI. polling for data.  Background threads .

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

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

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 .

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

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

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

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

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. android-sdk-windows-1.anddev.5_r3\usb_driver\x86\ Reference: [] .

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

activity. intent  P2: network service  P3: integration  .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.




Sign up to vote on this title
UsefulNot useful