Professional Documents
Culture Documents
Mc lc
Chng 1. 1.1 GII THIU ANDROID .............................................................................................................5 Android khc vi cc h iu hnh chy trn thit b di ng khc ........5 c tnh m ca Android:..........................................................................................................6 Android Platform: ............................................................................................................................7 Tng Linux Kernel: ..........................................................................................................................7 Native Libraries: ...............................................................................................................................7 Tng Runtime: ....................................................................................................................................8 Tng Application Framework: ...............................................................................................8 MI TRNG LP TRNH.................................................................................................10
1.1.1 1.1.2
1.2
Gii thiu:......................................................................................................................................................10 Android SDK: ..............................................................................................................................................10 My o Dalvik: ...........................................................................................................................................11 Cc gi Java cn thit: ..........................................................................................................................11 Thnh phn chnh ca Eclipse khi to ng dng trn Android: ........................12 Thnh phn quan trng trong mt Android Project: .................................................13 Chu k sng ca ng dng Android .........................................................................................13 Chu k sng thnh phn...........................................................................................................14 Activity Stack ....................................................................................................................................14 Cc trng thi ca chu k sng............................................................................................15 Chu k sng ca ng dng .....................................................................................................15 Cc s kin trong chu k sng ca ng dng ..........................................................16 Thi gian sng ca ng dng...............................................................................................16 Thi gian hin th ca Activity ............................................................................................17 Cc hm thc thi ............................................................................................................................17 Cc cng c cn thit lp trnh: ...................................................................................17 Cc bc ci t .............................................................................................................................17
2.8.1 2.8.2
2.9 Bt u lp trnh 1 chng trnh hello world u tin: ...........................................20 2.10 Thnh phn giao din Android................................................................................................23
Cc Control ..............................................................................................................................................26
Ty bin control (custom control):......................................................................................32 V d s dng Listview...................................................................................................................35 LP TRNH TRN ANDROID ...........................................................................................38 Thnh phn Intents:....................................................................................................................38 S dng Intents khi ng cho Activities: ................................................................39 Intent khng tng minh thc thi Activity: .............................................................40 Intent tng minh thc thi Activity ...............................................................................40 S dng Intents gi i thng ip ra ngoi ng dng hoc Activity:...41 Mt s Adapter : .............................................................................................................................43 S dng Adapter hin th d liu: ....................................................................................43 Gii Thiu Intents: .................................................................................................................................38
Chng 4.
V d s dng Intent lin lc gia cc Activity:........................................................44 K thut lu tr d liu trong Android.................................................................................46 Lu tr d liu ng dng mt cch n gin: .................................................................47 To v lu d liu vi Share Preferences: ................................................................47 Truy xut Shared Preferences.............................................................................................47 Truy xut cc tp tin trong Resources: ........................................................................50 Cc cng c qun l tp tin ....................................................................................................50 Gii thiu SQLite: ..........................................................................................................................51 Cursors v Content Values: ...................................................................................................51 S dng SQLiteOpenHelper:.................................................................................................52 Truy xut v to C s d liu khng dng SQLiteHelper:..........................52
4.5.1 4.5.2
4.6
4.6.1 4.6.2
4.7 4.7.1 4.7.2 4.7.3 4.7.4
Mt ng dng Demo s dng ContentProvider qun l sch: .....................59 Maps, Geocoding, Location Based Services.......................................................................59 S dng dch v nh v ............................................................................................................59 Ci t trn mi trng gi lp vi Test Providers ...........................................59 Cp nht v tr vi Emulator Location Providers .................................................59 Chn mt Location Provider ................................................................................................60 Tm mt Providers c sn.......................................................................................................60 Tm kim mt Provider theo tiu ch ............................................................................61 Tm mt a ch (Finding Your Location)...................................................................61 Theo di s di chuyn (Tracking Movement) ........................................................62 S dng Goecoder.........................................................................................................................63 Reverse Geocoding..................................................................................................................63 Forward Geocoding ................................................................................................................64 Dng MapView ...........................................................................................................................65 Dng MapActivity ....................................................................................................................66 S dng Overlay ........................................................................................................................67 Dng MapController ..............................................................................................................68 Ch khi to mt ng dng c s dng MapView ........................................69 Gii Thiu Services .................................................................................................................70 To Service ....................................................................................................................................71 Khi chy, iu khin v tng tc vi Sercice ...............................................71 Kt ni Activities vi Services........................................................................................72 Gii thiu Thng bo trong Android.........................................................................74 Gii thiu Notification Manager ...................................................................................74 To thng bo .............................................................................................................................75 Kch hot thng bo ...............................................................................................................76 Chi nhc ........................................................................................................................................77 Ghi m ...............................................................................................................................................78
4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.6 4.9.7 4.9.8 4.9.9 4.9.10 4.9.11 4.9.12 4.9.13 4.9.14 4.9.15 4.9.16
4.10
4.11.1 4.11.2
4.12
S dng my nh ................................................................................................................................79
Kt qu t c:....................................................................................................................................82 Hng pht trin ca ti: ..........................................................................................................82 Ti liu tham kho: ................................................................................................................................82
Android Development Tools (plug-in) SDK Emulator profile configuration Emulator launch
Process & file system viewing Log viewing
Android Emulator Multiple skins Network connectivity options Integrated with Eclipse via Android Development Tools plugin Android Development
SDK Documentation
10
2.3 MY O DALVIK:
Mt trong nhng thnh phn quan trng ca Android l my o Dalvik. Thay v s dng my o Java nh trc kia Android s dng my o ca ring n c thit k bo m rng a ng dng c th chy mt m trn mt thit b di ng. My o Dalvik s dng li Linux x l cc chc nng mc thp bao gm bo mt, cc tin trnh, cc lung v qun l vng nh. N cng c th vit bng ng dng C/C++ chy trc tip ln li Linux bn di. Gia phn cng v cc dch v h thng c qun l bi my o Dalvik, n l mt thnh phn gia. Bng cch s dng my o ny chy ng dng, cc nh pht trin hon ton khng phi bn tm g v cc phn cng bn di. Khi my o ny chy n s to ra tp tin c ui l .dex, tp tin ny c SDK to ra bi s chuyn i t cc lp bin dch ngn ng Java .
11
12
13
14
Mt Activity ch yu c 4 chu k chnh sau: Active hoc running: Khi Active l c chy trn mn hnh. Activity ny tp trung vo nhng thao tc ca ngi dng trn ng dng. Paused: Activity l c tm dng (paused) khi mt focus nhng ngi dng vn trng thy. C ngha l mt Activity mi trn n nhng khng bao ph y mn hnh. Mt Activity tm dng l cn sng nhng c th b kt thc bi h thng trong trng hp thiu vng nh. Stopped: Nu n hon ton bao ph bi Activity khc. N vn cn trng thi v thng tin thnh vin trong n. Ngi dng khng thy n v thng b loi b trong trng hp h thng cn vng nh cho tc v khc. Killed: Khi h thng b thiu b nh, n s gii phng cc tin trnh theo nguyn tc u tin. Cc Activity trng thi stop hoc paused cng c th b gii phng v khi n c hin th li th cc Activity ny phi khi ng li hon ton v phc hi li trng thi trc .
15
Hinh 2-4
Tt c cc phng thc l nhng mc ni m chng ta c th override lm tng thich cng vic trong ng dng khi thay i trng thi. Tt c cc Activity bt buc phi c onCreate() khi to ng dng. Nhiu Activity s cng hin thc onPause() xc nhn vic thay i d liu v mt khc chun b dng hot ng vi ngi dng.
16
NG DN
2.8.2 Cc bc ci t:
Chng ta c 3 bc chnh: Ci t Eclipse IDE, Plugin Android cho Eclipse v cui cng l ci t Emulator (Android SDK). V c chia thnh cc bc nh sau:
17
downloads JAVA SE . Chn downloads JAVA SE > vo th mc cha Bc 3: Truy cp developer.Android.com/sdk/index.html . V tin hnh download chn phn Android-sdk_r10-windows.zip . Sau khi downloads vo th mc cha phn download gii nn v chn SDK Manager.exe chy chng trnh t ng update. Vo chng trnh eclipse chn menu Help -> Install New Software Name: Google Android ( ty ) Location : http//:dl-ssl-google.com/Android/eclipse Sau chn OK.
18
Hnh 2-6 Sau chng trnh t ng cp nht nhng bn cn ci t. Tip theo bn chn nhng phn cn thit ci t hoc chn tt c -> Next -> chn I accept the terms of the license agreements ->finsh. Lu khi ci: windows mun chng thc, bc ny chn OK. Sau khi ci xong chn Restsart Now. Bc 4: Khi chng trnh ci t phn Android SDK hon tt v khi ng li chng trnh, vo Window ->Prefeneces ch ng dn ca file SDK.
Hnh 2-7 bc ny chn ng dn ti th mc cha Android SDK. Sau chn Apply. Bc 5: cc bc trn cu hnh Android SDK trong eclipse , bc tip theo s i cu hnh to ra 1 my o cha h iu hnh Android. Vo Window -> Android SDK and AVD Manager.
19
Hnh 2-8
Hnh 2-9
2.9 BT U LP TRNH 1 C
NG TRN
20
2-10
Th l chng ta c 1 ng dng nh ri . Sau khi ng Android Emulator bng cch vo menu Window > Android SDK and ADV manager > chn thit b to phn trn v click Start>Launch.
Hnh 2.13 Vy l ta c 1 chic in thoi Mobile Android chy ngay trn my tnh ri . By gi chng ta quay v mn hnh Eclipse v Click vo Run> chn Android Application > OK
21
2-11
By gi chng ta s tm hiu su hn v ng dng ny. Quay li mn hnh Eclipse ln lt vo cc mc : Src>HelloAndroid_Activity.java Res> layout>main.xml Res>values>string.xml y chnh l 3 file quan trng trong mt ng dng Android By gi chng ta vo file String.xml thay dng
<string name="hello">Hello World, HelloAndroid_Activity!</string>
Bng dng <string name="hello">Xin cho Android!</string> V run chng ta s to ra 1 ng dng c giao din thun Vit ng ngha.
2-12
22
GroupView
w
Layout
Widget
Control
(compound
control)
Control 2-13
Control
Control
Trong Android giao din ngi dng c xy dng t cc i tng View. Trong Android Platform, cc screen lun c b tr theo mt kiu cu trc phn cp nh hnh trn. Mt screen l mt tp hp cc Layout v cc widget c b tr c th t. th hin mt screen th trong hm onCreate ca mi Activity cn phi c gi mt hm l setContentView (R.layout.main); hm ny s load giao din t file MAIN.XML ln phn tch thnh m bytecode.
2.10.2 VIEWGROUP:
ViewGroup l s m rng ca class View hay ni cch khc ViewGroup chnh l cc WidgetLayout c dng b tr cc i tng khc trong mt screen.C cc loi ViewGroup nh sau:
Linear Layout
LinearLayout c dng b tr cc thnh phn giao din theo chiu ngang hoc chiu dc nhng trn mt line duy nht m khng c xung dng.
Frame layout
FrameLayout c dng b tr cc i tng theo kiu ging nh lcc Layer trong Photoshop. Nhng i tng no thuc Layer bn di th s b che khut bi cc i tng thuc Layer nm trn. FrameLayer thng c s dng khi mun to ra cc i tng c khung hnh bn ngoi chng hn nh contact image button.
23
Layout ny c s dng khi cn thit k mt table cha d liu hoc cn b tr cc widget theo cc row v column. Chng hn nh, giao din ca mt chic my tnh n gin hoc mt danh sch d liu.
AbsoluteLayout
Layout ny c s dng b tr cc widget vo mt v tr bt k trong layout da vo 2 thuc tnh to x, y. Tuy nhin, kiu layout ny rt t khi c dng bi v to ca cc i tng lun c nh v s khng t iu chnh c t l khong cch gia cc i tng. Khi chuyn ng dng sang mt mn hnh c kch thc vi mn hnh thit k ban u th v tr ca cc i tng s khng cn c chnh xc nh ban u. Dng cu lnh <AbsoluteLayout></ AbsoluteLayout> gi Layout ny. Mun nh v mt i tng, phi nh v hai gi tr Android:layout_x="" v Android:layout_y="".
<AbsoluteLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:id="@+id/mainlayout"> <Button Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="placed at 100,130 pixels (px)" Android:layout_x="100px" Android:layout_y="130px" /> <AbsoluteLayout>
V d: Th to ra nhng button v cho nhng button ny nm nhng v tr khc nhau: Cc button ny nm nhng v tr khc nhau vi cc ch s o lng khc nhau.
24
Hnh 3.4
RELATIVE LAYOUT
Layout ny cho php b tr cc widget theo mt trc i xng ngang
hoc dc. t c ng v tr th cc widget cn c xc nh mt mi rng buc no vi cc widget khc. Cc rng buc ny l cc rng buc tri, phi, trn, di so vi mt widget hoc so vi layout parent. Da vo nhng mi rng buc m RetaliveLayout cng khng ph thuc vo kch thc ca screen thit b. Ngoi ra, n cn c u im l gip tit kim layout s dng nhm mc ch gim lng ti nguyn s dng khi load ng thi y nhanh qu trnh x l.
Cc i tng trong Layout ny phi c id to mi quan h gia cc i tng. Android:layout_alignParentRight="true" cu lnh ny gip i tng sau khng nm ln i tng trc .
25
2.11 CC CONTROL
2.11.1 BUTTON
S d widget button c gii thiu u tin trong s cc widget khc l v y l i tng c th ni l c dng nhiu nht trong hu ht cc ng dng Android. thit k giao din vi mt button ta c 2 cch nh sau:
<Button Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:id="@+id/cmdButton1" Android:text="Touch me!" />
26
2-15
Thc ra nu khng phi i hi phi custom li mt widget th khng cn phi s dng ti code. Trong mt s trng hp bt buc chng ta phi custom cc widget cho ph hp vi hon cnh. Chng hn nh trong game, cc menu hay cc nt iu khin, khai bo mt Button trong code ta lm nh sau:
void showButton() { setContentView(R.layout.button); Button next = (Button) findViewById(R.id.btnButton); next.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Toast.makeText(getApplicationContext(), "Bn va click vo Button", Toast.LENGTH_SHORT).show(); } }); }
nh 2-16
2.11.2 LISTVIEW
c s dng th hin mt danh sch cc thng tin theo tng cell. Mi cell thng thng c load ln t mt file XML c c nh trn s lng thng tin v loi thng tin cn c th hin.
27
2-17
gi i tng ListView trong xml. Mi ListView phi c ID gi trong Activity. <ListView Android:id="@+id/ListView01" Android:layout_width="wrap_content" Android:layout_height="wrap_content" /> to cc i tng trong file Activity th phi khai bo:
public class TestActivity extends Activity { private ListView lv1; private String lv_arr[] =
28
2-18
2.11.3 EDITTEXT
Trong Android i tng EditText c s dng nh mt TextField hoc mt TextBox. Gi tr Android:singleLine bng false, edittext s l 1 Texbox, ngc li n l 1 Textfield.
<EditText Android:id="@+id/EditText01" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:textStyle="bold" Android:textSize="20dip" Android:textColor="#000000" Android:text="Hello Android!" Android:singleLine="true" Android:inputType="textCapWords" />
29
2-19
2.11.4 TEXTVIEW
TextView c tc dng l hin th vn bn.
<TextView Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:text="Hello World! Demo TextView" Android:textColor="#07a931" Android:textSize="20px" Android:gravity="center_horizontal" />
Trong on m trn, Android:text="" dng ghi on text mun th hin, Android:textColor="" nh dng mu ch, Android:textSize="" kch c ch, Android:gravity="" dng canh chnh cho on text. Nu mun tm hiu thm, hy g Android: sau nhn Crtl+ Space tm hiu thm v cc thuc tnh ca n.
2.11.5 CHECKBOX
Nhn hai gi tr true hoc false. i tng CheckBox cho php chn nhiu item cng mt lc.
XML: <CheckBox Android:id="@+id/CheckBox01" Android:layout_width="wrap_content"
30
Kt qu nh sau:
2-20
2.11.6 MENUOPTION
C 2 cch to mt MenuOptions: To bng code v tp tin XML, di y chng ta dng XML
h 2-21
31
2.11.7 CONTEXTMENU
ContextMenu c s dng hin th cc tu chn khi ngi dng nhn di vo mt Button trn mn hnh. to mt ContextMenu ta cng c 2 cch ging nh to MenuOptions trn ch khc tn phng thc. Phng thc:
onCreateContextMenu( ContextMenu menu, View v,
ContextMenuInfo menuInfo)
s c gi v truyn vo 3 tham s l: ContextMenu: i tng add cc context menu item View: i tng ni m xy ra s kin ContextMenuInfo: Cho bit v tr xy ra s kin trong ListView.
2-22
32
AttributeSet a) {
} @Override protected void onDraw(Canvas c) { //s dng lp cha TextView v text super.onDraw(c); }
Bc 4: vi nhng gi tr to ta tip tc vit code cho hm init() khai bo trong file CustomListView.java:
33
34
V trong main.xml, chng ta khai bo mt TextView, mt Button, mt Listview c tn ln lt nh sau: txtItem, btnAdd, listItems. Bc 2: Vit trong activity Main.java, s dng custom listview va to trn.
ArrayList<String> arr = new ArrayList<String>(); ArrayAdapter<String> aa; String flower[]={"Hoa Lan","Hoa Hu","Hoa Hng"}; String animal[]={"Voi","S t","H"}; String currentMenu; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnAdd = (Button) findViewById(R.id.btnAdd); txtItem = (EditText) findViewById(R.id.txtItem); listItems = (ListView) findViewById(R.id.listItems); txtItem.setOnKeyListener(this); btnAdd.setOnClickListener( this); arr = new ArrayList<String>(); //doan code su dung customlistview aa = new ArrayAdapter<String>(this,R.layout.customlistview,arr); listItems.setAdapter(aa); }
Bc 3: to mt menu bng on code sau, trc khi to mt menu lm theo hnh sau:
2-23
35
36
arr.add(item); aa.notifyDataSetChanged(); txtItem.setText(""); //hin cu thng bo m khi thm 1 item vo Toast.makeText(getApplicationContext(), item + " thm", Toast.LENGTH_SHORT).show(); } }
2-24
37
4-1
4-2
38
4-3
T nh ngha action: V nguyn tc chng ta c th t tn action ca mt intent l bt c th g theo chun t tn thng thng, hay thm ch dng lun hng action nh ngha sn nh ACTION_VIEW (hay Android.intent.action.VIEW). Ci tn VIEW thc cht ch l mt tn gi t, chng ta c th dng n vi mc ch thc hin mt activity gi mail! Tuy nhin iu r rng l rt ng ngn. Thay vo ta hy dng ACTION_SEND hay ACTION_SENDTO. Vic t tn action cho intent ng tn gi t cn c mt ngha khc l app ca chng ta c th c triu gi t mt app khc. V d chng ta vit mt app c activity p ng intent ACTION_SEND v chia s mt bc nh ln trang web ca chng ta (ging nh ta lm vi Facebook, Flickr etc.) Khi c th app ca chng ta s l mt la chn chia s nh ca ngi dng in thoi.
39
4-4
Trong trng hp ny intent khng ch nh mt lp c th m thay vo dng cc d liu khc (action, data, type, etc.) v h thng t quyt nh xem lp no (app no) s thch hp p ng intent . Thng tin action v category ca activity trong mt app p ng intent phi c khai bo trong Manifest ca app (AndroidManifest.xml) di dng Intent-filter (tt nhin nu chng ta mun gi mt built-in action th ta khng cn quan tm n vn ny). V d: chng ta mun cho php ngi dng thc hin cuc gi t mt ng dng, hn l thc hin quay s mi, chng ta c th s dng mt nh ngm yu cu hnh ng ("quay s") c thc hin trn mt in thoi nh trong on m di y: if (somethingWeird && itDontLookGood) { Intent intent = newIntent(Intent.ACTION_DIAL,Uri.parse(tel:555-2368)); startActivity(intent); }
4.1.4
component ch nh ch danh tn lp s thc thi Activity. thc hin iu ny, lp Intent cung cp cc hm l setComponent(ComponentName) v setClass(Context, Class) v setClassName(Context, String)
40
41
Thng thng th BroadcastReceivers s cp nht ni dung, khi ng dch v , cp nht ngi dng cui, hoc thng bo ngi s dng bng cch s dng qun l Notification Manager. V d oan code sau y cho thy cch ng k
g k Broadcast Receivers s dng code: // to v ng k broadcast receiver. IntentFilter filter = new IntentFilter(NEW_LIFEFORM_DETECTED); LifeformDetectedBroadcastReceiver r = new LifeformDetectedBroadcastReceiver(); registerReceiver(r, filter);
42
4.2.1 Mt s Adapter :
s dng c Adapter ta phi k tha lp tru tng AdapterView, v chng ta cng c th to ra mt Adapter ty bng cch ny. ArrayAdapter: l mt lp chung gn cc Adapter Views vo mt mng i tng, theo mc nh th ArrayAdapter lin kt c gi tr toString ca tng i tng ra TextView trong layout, chng ta c th thay th TextView bng cc iu khin khc phc tp hn bng cch s dng k thut Overriding phng thc getView() SimpleCursorAdapter : dng lin kt cc View vi con tr tr v cu truy vn cho Content Provider, n c nh ngha trong file XML layout v lin kt cc gi tr rng buc bn trong mi ct kt qu vi View trong layout.
SimpleCursorAdapter cho php chng ta load d liu t Cursor n List View. SimpleCursorAdapter c to ra bng cch truyn vo cc tham s bi cnh(context) hin hnh, mt layout, mt Cursor v hai gi tr: tn cc ct v mt mng cc gi tr cha d liu ct hin th:
String uriString = content://contacts/people/; Cursor myCursor = managedQuery(Uri.parse(uriString), null, null, null, null); String[] fromColumns = new String[] {People.NUMBER, People.NAME}; int[] toLayoutIDs = new int[] { R.id.nameTextView, R.id.numberTextView}; SimpleCursorAdapter myAdapter; myAdapter = new SimpleCursorAdapter(this,R.layout.simplecursorlayout, myCursor, fromColumns,
43
4-5
</intent-filter> </activity>
Trong Activity1.java: x l 2 s kin, nhn v gi tr c gi t Activity2, gi v truyn gi tr vo Activity2. Hm x l khi click Button:
//x l button c nhn @Override public void onClick(View v) { // To intent mi v t action = "Calculate" Intent intent = new Intent(); intent.setAction("Calculator"); //t st activity(c ngha l kt thc n ri y) //finish();
} -
Hm nhn gi tr:
44
Trong Activity2: x l 2 s kin, nhn v gi tr c gi t Activity1, gi v truyn gi tr vo Activity1. Hm x l khi click Button:
@Override public void onClick(View v) { Intent returnResult = new Intent("Calculator"); // Ly d liu sau khi tnh ton String strMul = txtMul.getText().toString(); String strSum = txtSum.getText().toString(); // ?a d liu vo Extras ca intent returnResult.putExtra("sA", strSum); returnResult.putExtra("sB", strMul); // Kim tra d liu, nu rng th gi m CANCEL // ,nu khng gi m OK v intent cha kt qu if(strSum.equals("") || strMul.equals("")) setResult(RESULT_CANCELED,returnResult); else setResult(RESULT_OK,returnResult); // Thng bo kt thc Activity finish(); } - Hm nhn gi tr: trong onCreate() // Ly d liu gi t Activity 1 qua intent String strA = getIntent().getStringExtra("A"); String strB = getIntent().getStringExtra("B"); // Tnh ton vi d liu int A = Integer.parseInt(strA);
45
46
N GIN:
editor.putBoolean(isTrue, true); editor.putFloat(lastFloat, 1f); editor.putInt(wholeNumber, 2); editor.putLong(aNumber, 3l); editor.putString(textEntryValue, Not Empty); // Commit the changes. editor.commit();
}
47
48
Cc Bundle lu truyn trong cc phng thc onRestoreInstanceState v onCreate nu ng dng bt buc phi khi ng li trong cc session,on code sau y s cho thy lm th no trch xut gi tr t Bundle v s dng chng cp nht trng thi Activity.
@Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); TextView myTextView = (TextView)findViewById(R.id.myTextView); String text = ; if (icicle != null && icicle.containsKey(TEXTVIEW_STATE_KEY)) text = icicle.getString(TEXTVIEW_STATE_KEY); myTextView.setText(text);
Context.MODE_PRIVATE);
49
50
51
52
4.7.6 Ly kt qu t Cursors
V d: int GOLD_HOARDED_COLUMN = 2; Cursor myGold = myDatabase.query(GoldHoards, null, null, null, null, null, null); float totalHoard = 0f; if (myGold.moveToFirst()) { do { float hoard = myGold.getFloat(GOLD_HOARDED_COLUMN); totalHoard += hoard; } while(myGold.moveToNext()); } float averageHoard = totalHoard / myGold.getCount();
53
54
55
56
57
58
59
Hinh 4-7
Trong hnh trn c cc tab Manual, KML v GPX S dung tab Manual chng ta c th xc nh v / kinh . S dng tab KML v GPX cho php chng ta ti cc tp tin KML (Keyhole Markup Language) v GPX (GPS Exchange Format) tng ng. Lu v tr GPS s tr v t getLastKnownLocation s khng thay i tr khi c t nht mt ng dng yu cu cp nht v tr.
4.9.5 Tm mt Providers c sn
Lp LocationManager bao gm cc chui hng s v tr v tn ca nh cung cp cho hai Location Provider ph bin nht. LocationManager.GPS_PROVIDER LocationManager.NETWORK_PROVIDER
60
61
LocationListener
LocationListener rt linh hot v nhiu tnh nng cho php chn nhiu loi s kin v v tr da trn c tnh khc nhau. Phng thc requestLocationUpdate chp nhn mt Location Provider hoc Criteria xc nh nh cung cp c s dng. on code sau s th hin mt yu cu cp nht thng xuyn da trn mc ti thiu v thi gian v khong cch.
String provider = LocationManager.GPS_PROVIDER; int t = 5000; // milliseconds int distance = 5; // meters LocationListener myLocationListener = new LocationListener() { public void onLocationChanged(Location location) { // Update application based on new location. } public void onProviderDisabled(String provider){ // Update application if provider disabled. } public void onProviderEnabled(String provider){ // Update application if provider enabled. }
62
Locale.getDefault()); C hai chc nng m ho a l tr v tng Address. Mi danh sch c th cha nhiu kt qu.
63
Locale cung cp bi cnh a l gii thch cc yu cu tm kim ca chng ta nh tn ca mt v tr c th tn ti trong nhiu khu vc. Nu c th th ta xem xt la chn mt Locale khu vc trnh s nhp nhng tn, nh th hin trong on code sau:
Geocoder fwdGeocoder = new Geocoder(this, Locale.US); String streetAddress = 160 Riverside Drive, New York, New York; List<Address> locations = null; try { locations = fwdGeocoder.getFromLocationName(streetAddress, 10); } catch (IOException e){} // c nhiu a ch, s dng getFromLocationName List<Address> locations = null; try { locations = fwdGeocoder.getFromLocationName(streetAddress, 10,n, e, s, w); } catch (IOException e) {}
Hnh sau cho thy vic dng Geocoder chuyn mt a ch kiu String vo mt i tng cung cp v v kinh .
64
Hinh 4-8
65
rng MapActivity. Overriding phng thc onCreate t ra cc mn hnh bao gm mt MapView, v ghi ln isRouteDisplayed tr v true nu Activity s c hin th thng tin nh tuyn. on code sau s trnh by cch khi to mi lp bn c s MyMapActivity :
import com.google.Android.maps.MapActivity; import com.google.Android.maps.MapController; import com.google.Android.maps.MapView; import Android.os.Bundle; public class MyMapActivity extends MapActivity { private MapView mapView; private MapController mapController; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle);
66
Hinh 4-9
67
68
Mt ch na l phi c <Android:apiKey> khi dng MapView, sau y l cch ly key (chng ta phi kt ni Internet) : Ly debug.keystore Vo Windows > Prefs > Android > Build ly ng dn nh bn di
69
Vo
link
http://code.google.com/Android/maps-api-signup.html
dn
MD5 fingerprint code vo v click Generate API key , site s t sinh cho chng ta 1 key.
4.10 LM VIC
TRN BACKGROUND
70
4.10.2 To Service
xc nh mt Services ta to ra mt lp mi k tha t lp Service c s. Chng ta cn ghi ln onBind v onCreate nh trnh by sau y:
import Android.app.Service; import Android.content.Intent; import Android.os.IBinder;
public class MyService extends Service { @Override public void onCreate() { // TODO: Actions to perform when service is created. } @Override public IBinder onBind(Intent intent) { // TODO: Replace with service binding implementation. return null; } }
Trong hu ht cc trng hp chng ta nn ghi ln onStart. iu ny s c gi bt k khi no Services c bt u khi gi n startService, di y l th hin phng thc ghi ln onStart nh sau:
@Override public void onStart(Intent intent, int startId) { // TODO: Actions to perform when service is started. }
Mt khi chng ta xy dng mt Service mi chng ta phi ng k trong tp tin mainifest trong tab <service> nh sau: <service Android:enabled=true Android:name=.MyService></service>
71
72
73
Hinh 4-11
74
4.10.7 To thng bo
To v cu hnh mt thng bo mi c thc hin trong ba phn: Trc tin, to mt i tng thng bo mi a vo biu tng hin th trn thanh trng thi cng vi cc thanh trng thi tickertext v thi gian thng bo nh trong on code sau: // chn hnh nh lm icon trn thanh tc v int icon = R.drawable.icon; // chui xut hin khi chy thng bo String tickerText = Notification; // The extended status bar orders notification in time order long when = System.currentTimeMillis(); Notification notification = new Notification(icon, tickerText, when); Cc ticker-text s di chuyn dc theo cc thanh trng thi khi cc thng bo c pht ra. Th hai, cu hnh s xut hin ca cc thng bo trong ca s trng thim rng s dng phng php setLatestEventInfo. iu ny m rng ca s trng thi hin th biu tng v thi gian quy nh trong xy dng v cng cho thy tiu v mt chui cc chi tit. Thng bo thng xut hin cho mt yu cu mt hnh ng hoc s ch , v vy chng ta c th ch nh mt PendingIntent s thot nu ngi dng nhp vo mc thng bo. Context context = getApplicationContext(); // chui hin khi m rngca s thng bo String expandedText = Extended status text; // tiu ca String expandedTitle = Notification Title; // Intent khi chy activity khi ca s thng bo m rng c click Intent intent = new Intent(this, MyActivity.class); PendingInten tlaunchIntent= PendingIntent.getActivity(context, 0,intent, 0);
75
76
77
4.11.2 Ghi m
Ghi m c x l bi lp MediaRecorder ghi m thanh hoc video, to mt i tng MediaRecorder nh trong on code sau: MediaRecorder mediaRecorder = new MediaRecorder() Trc khi chng ta c th ghi m bt k media trong Android, ng dng ca chng ta cn c cp php RECORD_AUDIO hoc RECORD_VIDEO. Thm mt th uses-permission trong ng dng manifest nh sau: <uses-permission Android:name=Android.permission.RECORD_AUDIO/> <uses-permission Android:name=Android.permission.RECORD_VIDEO/> My ghi m(Media Recorder) c th s dng cu hnh cc video v quay phim (bao gm c camera v microphone), nh dng u ra, kch thc video, t l khung hnh, video v thu m video s dng. Cc on code sau y cho thy lm th no cu hnh mt my ghi m ghi li m thanh t micro bng cch s dng nh dng mc nh v m ha. // ly ngun video mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); // thit lp nh dng u ra mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFA ULT); // thit lp b m ha m thanh s dng mediaRecorder.setAudioEncoder (MediaRecorder.AudioEncoder.DEFAULT); Khi chng ta xc nh u vo v nh dng u ra, ch nh mt tp tin lu tr cc media s dng phng thc setOutputFile nh hnh di y: mediaRecorder.setOutputFile(myoutputfile.mp4); bt u ghi m, ta gi prepare bng phng thc start nh sau: mediaRecorder.prepare(); mediaRecorder.start();
78
4.12 S DNG MY NH
S ph bin ca my nh k thut s (c bit l trong in thoi di ng) gy ra mt s gim gi ng k. By gi tht l kh, thm ch tm mt in thoi i ng m khng c my nh v cc thit b Android khng phi l trng hp ngoi l. truy cp vo phn cng my nh chng ta cn phi thm mt CAMERA cho php trong ng dng manifest nh trnh by sau y: <uses-permission Android:name=Android.permission.CAMERA/>
79
4.12.2 S dng my nh
Truy cp vo cc video ca my nh c ngha l chng ta c th kt hp trc tip cc video vo cc ng dng ca chng ta. Mt th v nht m ng dng Android s dng chc nng ny nh l lp c s. My nh c hin th trong thi gian thc hin trn mt giao din nh th hin trong on code sau y: camera.setPreviewDisplay(mySurface); camera.startPreview(); [] camera.stopPreview(); Chng ta cng c th ch nh mt PreviewCallback chn cho mi khung hnh xem, cho php thao tc hoc hin th khung hnh xem. Gi phng thc setPreviewCallback trn i tng Camera, a vo mt PreviewCallback mi thc hin ghi ln phng thc onPreviewFrame nh trnh by sau: camera.setPreviewCallback(new PreviewCallback() {
80
4.12.3 Chp nh
Chp nh bng cch gi takePicture trn i tng Camera, a vo mt ShutterCallback v PictureCallback thc hin cho hnh nh RAW v JPEG. Mi ln gi hnh nh s nhn c mt mng (byte) i din cho hnh nh trong cc nh dng thch hp, trong khi gi li cnh ca chp c kch hot ngay sau cnh ca chp c ng li. private void takePicture() { camera.takePicture(shutterCallback, rawCallback, jpegCallback); } ShutterCallback shutterCallback = new ShutterCallback() { public void onShutter() { // TODO Do something when the shutter closes. }}; PictureCallback rawCallback = new PictureCallback() { public void onPictureTaken(byte[] _data, Camera _camera) { // TODO Do something with the image RAW data. }}; PictureCallback jpegCallback = new PictureCallback() { public void onPictureTaken(byte[] _data, Camera _camera) { // TODO Do something with the image JPEG data. } };
81
Chng 5. TNG KT
5.1 KT QU T C:
Tm hiu c nn tng c bn ca h iu hnh trn thit b di ng Android. Mt h iu hnh m ngun m trn di ng ang ni ln v pht trin chng mt trn th gii trong thi gian gn y. Mt c tnh tuyt vi ca Android l tnh m ca n, da trn c tnh ny cc nh sn xut c th ty bin to ra cc giao din c trng cho tng ngi s dng. Ngoi ra Android th hin u th vt tri hn cc h iu hnh trn thit b di ng khc khi c tch hp sn cc dch v h tr t Google y nht: Gmail, Google Talk, Google Calendar Nm bt c cch to giao din t nhng cng c Android cung cp v cch ty chnh cc cng c ny: Linear Layout, Relative Layout, cc control : Listview, Button, Checkbox, . Tm hiu v thc hnh lp trnh c nhng chng trnh nh u tin trn thit b gi lp trn PC, dng Eclipse v SDK m Google cung cp. Qua tng chng chng ta i qua tm hiu cc thnh phn quan trng c bn ca Android nh: Activity, Intent, Broadcast Resever, ContentProvider, MapView, Geocoder, Services, v s dng phn cng c bn ca Android l Camera quay phim, chp nh.
http://developer.Android.com/
82