Đồ án Tìm hiểu và xây dựng ứng dụng Phone Book Safe Manager trên Android

Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
MC LC  
CHƯƠNG 1: CƠ SLÝ THUYT..................................................................... 4  
1. LCH SANDROID.................................................................................. 4  
2. DELVING VI MÁY O DALVIK........................................................... 5  
3. KIN TRÚC CA ANDROID.................................................................... 5  
3.1. Tng ng dng .................................................................................... 6  
3.2. Application framework........................................................................ 6  
3.3. Library ................................................................................................ 7  
3.4. Android Runtime................................................................................. 7  
3.5. Linux kernel........................................................................................ 8  
4. ANDROID EMULATOR ........................................................................... 8  
5. CÁC THÀNH PHN TRONG MT ANDROID PROJECT....................... 9  
5.1. AndroidManifest.xml .......................................................................... 9  
5.2. File R.java......................................................................................... 10  
6. CHU KỲ ỨNG DNG ANDROID ........................................................... 11  
6.1. Chu ksng thành phn .................................................................... 12  
6.2. Activity Stack.................................................................................... 12  
6.3. Các trng thái ca chu ksng .......................................................... 13  
6.4. Chu ksng ca ng dng ................................................................ 13  
6.5. Các skin trong chu ksng ca ng dng..................................... 14  
6.6. Thi gian sng ca ng dng............................................................. 14  
6.7. Thi gian hin thca Activity.......................................................... 14  
6.8. Các phương thc ca chu ksng ..................................................... 14  
7. CÁC THÀNH PHN GIAO DIN TRONG ANDROID........................... 16  
7.1. View.................................................................................................. 16  
7.2. ViewGroup........................................................................................ 16  
7.2.1. LinearLayout ............................................................................. 16  
7.2.2. FrameLayout ............................................................................. 17  
7.2.3. AbsoluteLayout ......................................................................... 17  
7.2.4. RetaliveLayout .......................................................................... 18  
7.2.5. TableLayout .............................................................................. 18  
7.3. Button ............................................................................................... 18  
7.4. ImageButton...................................................................................... 19  
7.5. ImageView........................................................................................ 20  
7.6. ListView ........................................................................................... 20  
7.7. TextView .......................................................................................... 21  
Page | 1  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
7.8. EditText ............................................................................................ 21  
7.9. CheckBox.......................................................................................... 22  
7.10.  
7.11.  
7.12.  
7.13.  
MenuOptions................................................................................. 22  
ContextMenu................................................................................. 24  
Quick Search Box.......................................................................... 24  
Activity & Intend........................................................................... 25  
7.13.1. Activity...................................................................................... 25  
7.13.2. Intent ......................................................................................... 26  
8. CONTENT PROVIDER VÀ URI.............................................................. 28  
9. BACKGROUND SERVICE ..................................................................... 29  
10. TELEPHONY........................................................................................... 32  
11. SQLITE .................................................................................................... 32  
12. ANDROID & WEBSERVICE .................................................................. 33  
12.1.  
12.2.  
12.3.  
Khái nim Web service và SOAP .................................................. 33  
Gii thiu vXStream................................................................... 34  
Thao tác vi web service trong Android ........................................ 36  
CHƯƠNG 2: PHÂN TÍCH VÀ THIT KHTHNG............................... 38  
13. ĐẶC TBÀI TOÁN................................................................................. 38  
14. ĐẶC TCHC NĂNG............................................................................ 38  
14.1.  
14.2.  
14.3.  
14.4.  
14.5.  
14.6.  
14.7.  
Upload phone book........................................................................ 38  
Revert phone book......................................................................... 39  
Send contact .................................................................................. 40  
Reveive contact ............................................................................. 40  
Export contact ti SD Card............................................................ 40  
Import contact tSD Card............................................................. 41  
Account Manager .......................................................................... 41  
14.7.1. Login......................................................................................... 41  
14.7.2. Change password....................................................................... 41  
14.7.3. Restore account ......................................................................... 41  
14.7.4. Create account........................................................................... 42  
15. CÁC BIU ĐỒ HTHNG ..................................................................... 42  
15.1.  
Biểu đồ Usercase........................................................................... 42  
15.1.1. Restore account ......................................................................... 43  
15.1.2. Export Contact vào SD Card...................................................... 43  
15.1.3. Import Contact tSD Card ........................................................ 43  
15.1.4. Login......................................................................................... 44  
15.2.  
Biểu đồ Class................................................................................. 44  
Page | 2  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
15.2.1. Biểu đồ Class gia các thành phn giao din ............................. 44  
15.3.  
Biểu đồ Class Contact.................................................................... 44  
Biểu đồ Class ContactProvider ...................................................... 44  
Class Webservice .......................................................................... 45  
Biểu đồ Sequence.......................................................................... 45  
15.4.  
15.5.  
15.6.  
15.6.1. Login......................................................................................... 45  
15.6.2. Create new account.................................................................... 46  
15.6.3. Restore account ......................................................................... 47  
15.6.4. Upload phone book.................................................................... 48  
15.6.5. Revert phone book..................................................................... 48  
15.6.6. Export Contact to SD Card ........................................................ 49  
15.6.7. Import Contact from SD Card.................................................... 49  
15.6.8. Send Contact ............................................................................. 49  
15.7.  
Biểu đồ Activity ............................................................................ 51  
15.7.1. Change password....................................................................... 51  
15.7.2. Export Contact to SD Card ........................................................ 52  
15.7.3. Upload phone book.................................................................... 52  
15.7.4. Send Contact ............................................................................. 53  
15.7.5. Revert phone book..................................................................... 53  
15.7.6. Import Contact from SD Card.................................................... 54  
16. CƠ SDLIU WEB SERVICE ............................................................ 54  
CHƯƠNG 3: DEMO NG DNG................................................................... 57  
17. MT VÀI HÌNH NH NG DNG ........................................................ 57  
18. SƠ ĐỒ LIÊN KT CÁC MÀN HÌNH VÀ DIALOG ................................. 58  
18.1.  
18.2.  
Danh sách các liên kết màn hình mc 1&2 .................................... 58  
Danh sách liên kết các màn hình mc 3 ......................................... 58  
18.2.1. Màn hình View Contact............................................................. 58  
18.2.2. Màn hình danh sách các Contact mi......................................... 58  
18.2.3. Màn hình danh sách phone bool đã upload................................. 58  
19. ĐÁNH GIÁ NG DNG ......................................................................... 59  
20. HƯỚNG PHÁT TRIN TRONG TƯƠNG LAI......................................... 59  
21. KT LUN............................................................................................... 60  
ĐÁNH GIÁ CỦA GIÁO VIÊN  
TÀI LIU THAM KHO  
Page | 3  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT  
1. LỊCH SỬ ANDROID  
Ban đầu, Android là hệ điều hành cho các thiết bcm tay da trên lõi Linux do  
công ty Android Inc. (California, M) thiết kế. Công ty này sau đó được Google mua  
lại vào năm 2005 và bắt đầu xây dng Android Platform. Các thành viên chcht ti  
Android Inc. gm có: Andy Rubin, Rich Miner, Nick Sears, and Chris White.  
Hình 1-1 Android timeline  
Và sau tiếp, vào cuối năm 2007, thuộc vLiên minh Thiết bCm tay Mã Ngun  
m(Open Handset Alliance) gm các thành viên ni bt trong ngành vin thông và  
thiết bcầm tay như:  
Texas Instruments, Broadcom Corporation, Google, HTC, Intel, LG, Marvell  
Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint  
Nextel, T-Mobile, ARM Holdings, Atheros Communications, Asustek Computer Inc,  
Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, and Vodafone Group,…  
Mc tiêu của Liên minh này là nhanh chóng đổi mới để đáp ứng tốt hơn cho nhu  
cầu người tiêu dùng và kết quả đầu tiên ca nó chính là nn tng Android. Android  
được thiết kế để phc vnhu cu ca các nhà sn xut thiết, các nhà khai thác và các  
lp trình viên thiết bcm tay.  
Phiên bn SDK lần đầu tiên phát hành vào tháng 11 năm 2007, hãng T-Mobile  
cũng công bố chiếc điện thoại Android đầu tiên đó là chiếc T-Mobile G1, chiếc  
smartphone đầu tiên da trên nn tng Android. Một vài ngày sau đó, Google lại tiếp  
tc công bsra mt phiên bn Android SDK release Candidate 1.0. Trong tháng 10  
năm 2008, Google được cp giy phép mã ngun mcho Android Platform.  
Khi Android được phát hành thì mt trong scác mc tiêu trong kiến trúc ca nó  
là cho phép các ng dng có thể tương tác được vi nhau và có thsdng li các  
thành phn tnhng ng dng khác. Vic tái sdng không chỉ được áp dng cho  
Page | 4  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
cho các dch vmà nó còn được áp dng cho ccác thành phn dliu và giao din  
ngưi dùng.  
Vào cuối năm 2008, Google cho phát hành mt thiết bcầm tay được gi là  
Android Dev Phone 1 có thchạy được các ng dng Android mà không bràng buc  
vào các nhà cung cp mạng điện thoại di động. Mc tiêu ca thiết bnày là cho phép  
các nhà phát trin thc hin các cuc thí nghim trên mt thiết bthc có thchy hệ  
điều hành Android mà không phi ký mt bn hợp đồng nào. Vào khong cùng thi  
gian đó thì Google cũng cho phát hành mt phiên vn vá li 1.1 ca hệ điều hành này.  
chai phiên bản 1.0 và 1.1 Android chưa hỗ trsoft-keyboard mà đòi hi các thiết  
bphi sdng bàn phím vt lý. Android cố định vấn đề này bng cách phát hành  
SDK 1.5 vào tháng Tư năm 2009, cùng với mt số tính năng khác. Chẳng hạn như  
nâng cao khả năng ghi âm truyền thông, vt dng, và các live folder.  
2. DELVING VỚI MÁY ẢO DALVIK  
Dalvik là máy o giúp các ng dng java chạy được trên các thiết bị động  
Android. Nó chy các ng dụng đã được chuyển đổi thành mt file thc thi Dalvik  
(dex). Định dng phù hp cho các hthống mà thường bhn chế vbnhtốc độ  
xlý. Dalvik đã được thiết kế và viết bi Dan Bornstein, người đã đặt tên cho nó sau  
khi đến thăm một ngôi làng đánh cá nhỏ có tên là Dalvík ở đảo Eyjafjörður, nơi mà  
mt sttiên ca ông sinh sng.  
Tgóc nhìn ca mt nhà phát trin, Dalvik trông giống như máy ảo Java (Java  
Virtual Machine) nhưng thực tế thì hoàn toàn khác. Khi nhà phát trin viết mt ng  
dng dành cho Android, anh ta thc hiện các đoạn mã trong môi trường Java. Sau đó,  
nó sẽ được biên dch sang các bytecode ca Java, tuy nhiên để thực thi được ng dng  
này trên Android thì nhà phát trin phi thc thi mt công cụ có tên là dx. Đây là công  
cụ dùng để chuyển đổi bytecode sang mt dng gi là dex bytecode. "Dex" là tviết  
tt của "Dalvik executable" đóng vai trò như cơ chế ảo thc thi các ng dng Android.  
3. KIẾN TRÚC CỦA ANDROID  
Mô hình sau thhin mt cách tng quát các thành phn ca hệ điều hành  
Android. Mi mt phn sẽ được đặc tmt cách chi tiết dưới đây.  
Page | 5  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
Hình 1-2 Cu trúc stack hthng Android  
Tầng ứng dụng  
3.1.  
Android được tích hp sn mt số ứng dng cn thiết cơ bản như: contacts,  
browser, camera, Phone,… Tt ccác ng dng chy trên hệ điều hành Android đều  
được viết bng Java.  
3.2.  
Application framework  
Bng cách cung cp mt nn tng phát trin m, Android cung cp cho các nhà  
phát trin khả năng xây dựng các ng dng cc kphong phú và sáng to. Nhà phát  
triển được tdo tn dng các thiết bphn cứng, thông tin địa điểm truy cp, các dch  
vchy nn, thiết lp hthống báo động, thêm các thông báo để các thanh trng thái,  
và nhiu, nhiều hơn nữa.  
Nhà phát trin có thtruy cp vào các API cùng mt khuôn khổ được sdng bi  
các ng dng lõi. Các kiến trúc ng dụng được thiết kế để đơn giản hóa vic sdng  
li các thành phn; bt kỳ ứng dng có thxut bn khả năng ca mình và ng dng  
nào khác sau đó có thể sdng nhng khả năng (có thể hn chế bo mật được thc thi  
bi khuôn khổ). Cơ chế này cho phép các thành phần tương tự sẽ được thay thế bi  
ngưi sdng.  
Cơ bản tt ccác ng dng là mt bcác dch vvà các hthng, bao gm:  
Mt tp hp rt nhiu các View có khả năng kế tha lẫn nhau dùng để thiết  
kế phn giao din ng dụng như: gridview, tableview, linearlayout,…  
Page | 6  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
Mt “Content Provider” cho phép các ng dng có thtruy xut dliu từ  
các ng dng khác (chng hạn như Contacts) hoc là chia sdliu gia  
các ng dụng đó.  
Mt “Resource Manager” cung cp truy xut ti các tài nguyên không phi  
là mã ngun, chng hạn như: localized strings, graphics, and layout files.  
Mt “Notifycation Manager” cho phép tt ccác ng dng hin thcác  
custom alerts trong status bar.  
Activity Maanager được dùng để qun lý chu trình sng ca ng dụng và điều  
hướng các activity.  
3.3.  
Library  
Android bao gm mt tp hợp các thư viên C/C++ được sdng bi nhiu thành  
phn khác nhau trong hthng Android. Điều này được thhin thông qua nn tng  
ng dng Android. Mt số các thư viện cơ bản được liệt kê dưới đây:  
System C library: a BSD-derived implementation of the standard C system  
library (libc), tuned for embedded Linux-based devices.  
Media Libraries - based on PacketVideo's OpenCORE; the libraries support  
playback and recording of many popular audio and video formats, as well as  
static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG  
Surface Manager – Qun lý vic truy xut vào hthng hin thị  
LibWebCore - a modern web browser engine which powers both the Android  
browser and an embeddable web view.  
SGL - the underlying 2D graphics engine.  
3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries  
use either hardware 3D acceleration (where available) or the included, highly  
optimized 3D software rasterizer.  
FreeType - bitmap and vector font rendering.  
SQLite - a powerful and lightweight relational database engine available to all  
applications.  
3.4.  
Android Runtime  
Android bao gm mt tp hợp các thư viện cơ bản mà cung cp hu hết các chc  
năng có sẵn trong các thư viện lõi ca ngôn nglp trình Java. Tt ccác ng dng  
Android đều chy trong tiến trình riêng. Máy o Dalvik đã được viết để cho mt thiết  
bcó thchy nhiu máy o hiu qu. Các VM Dalvik thc thi các tp tin thc thi  
Page | 7  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
Dalvik (dex). Định dạng được tối ưu hóa cho bộ nhti thiu. VM là da trên  
register-based, và chy các lớp đã được biên dch bi mt trình biên dịch Java để  
chuyển đổi thành các định dng dex. Các VM Dalvik da vào nhân Linux cho các  
chức năng cơ bản như luồng và qun lý bnhthp.  
3.5.  
Linux kernel  
Android da trên Linux phiên bn 2.6 cho hthng dch vct lõi như security,  
memory management, process management, network stack, and driver model. Kernel  
Linux hoạt động như một lp trừu tượng hóa gia phn cng và phn còn li ca phn  
mm stack.  
4. ANDROID EMULATOR  
Android SDK và Plugin Eclipse đưc gi là mt Android Deverloper Tool (ADT).  
Các Android coder scn phi sdng công cIDE (Integrated Development  
Enveronment) này để phát trin, debugging và testing cho ng dng. Tuy nhiên, các  
coder cũng có thể không cn phi sdụng IDE mà thay vào đó là sử dng command  
line để biên dch và tt nhiên là vẫn có Emulator như thường.  
Android Emulator được trang bị đầy đủ hu hết các tính năng của mt thiết btht.  
Tuy nhiên, mt số đã bgii hạn như là kết ni qua cng USB, camera và video, nghe  
phone, nguồn đin gilp và bluetooth.  
Android Emulator thc hin các công vic thông qua mt bxlý mã ngun m,  
công nghệ này được gi là QEMU (http://bellard.org/qemu/) được phát trin bi  
Fabrice Bellard.  
Hình 1-3 Android emulator  
Page | 8  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
5. CÁ C THÀNH PHẦN TRONG MỘT ANDROID PROJECT  
5.1. AndroidManifest.xml  
Trong bt kì mt project Android nào khi tạo ra đều có mt file  
AndroidManifest.xml, file này được dùng để định nghĩa các screen sử dng, các  
permission cũng như các theme cho ứng dụng. Đồng thi nó cũng chứa thông tin về  
phiên bn SDK cũng như main activity sẽ chạy đu tiên.  
File này được tự động sinh ra khi to mt Android project. Trong file manifest bao  
gicũng có 3 thành phần chính đó là: application, permission và version.  
Dưới đây là nội dung ca mt file AndroidManifest.xml  
<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
package="dtu.k12tpm.pbs.activity"  
android:versionCode="1"  
android:versionName="1.0">  
<application android:icon="@drawable/icon"  
android:label="@string/app_name">  
<activity android:name=".LoginActivity"  
android:label="@string/app_name">  
<intent-filter>  
<action android:name="android.intent.action.MAIN" />  
<category android:name="android.intent.category.LAUNCHER" />  
</intent-filter>  
</activity>  
<activity android:name=".MainContactListActivity" />  
<activity android:name=".RestoreContactActivity" />  
</application>  
<uses-sdk android:minSdkVersion="7" />  
<uses-sdk android:minSdkVersion="7" />  
<uses-permission android:name="android.permission.INTERNET"/>  
<uses-permission android:name="android.permission.CALL_PHONE"/>  
</manifest>  
Application  
Th<application>, bên trong thnày cha các thuộc tính được định nghĩa cho  
ng dụng Android như:  
Page | 9  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
android:icon = “drawable resourceỞ đây đặt đưng dẫn đến file icon  
ca ng dụng khi cài đt. VD: android:icon = “@drawable/icon”.  
android:name = “stringthuộc tính này để đặt tên cho ng dng  
Android. Tên này sẽ được hin thlên màn hình sau khi cài đặt ng dng.  
android:theme = “drawable themethuộc tính này để đặt theme cho  
ng dụng. Các theme là các cách để hin thgiao din ng dng.  
Ngoài ra còn nhiu thuc tính khác…  
Permission  
Bao gm các thuc tính chỉ định quyn truy xut và sdng tài nguyên ca  
ng dng. Khi cn sdng mt loại tài nguyên nào đó thì trong file manifest ca  
ng dng cn phi khai báo các quyn truy xuất như sau:  
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>  
<uses-permission android:name="android.permission.ACCOUNT_MANAGER"/>  
<uses-permission android:name="android.permission.VIBRATE" />  
<uses-permission android:name="android.permission.CALL_PHONE"/>  
SDK version  
Thẻ xác định phiên bản SDK được khai báo như sau:  
<uses-sdk android:minSdkVersion="7" />.  
Ở đây chỉ ra phiên bn SDK nhnht mà ng dng hiện đang sử dng.  
5.2.  
File R.java  
File R.java là mt file tự động sinh ra ngay khi to ng dụng, file này được sử  
dng để qun lý các thuộc tính được khai báo trong file XML ca ng dng và các tài  
nguyên hình nh.  
Mã ngun của file R.java được tự động sinh khi có bt kì mt skin nào xy xa  
làm thay đổi các thuc tính trong ng dng. Chng hạn như, bạn kéo và thmt file  
hình nh tbên ngoài vào project thì ngay lp tc thuộc tính đường dẫn đến file đó  
cũng sẽ được hình thành trong file R.java hoc xoá mt file hình nh thì đường dn  
tương ứng đến hình ảnh đó cũng tự động bxoá.  
Có thnói file R.java hoàn toàn không cn phải đụng chm gì đến trong cquá  
trình xây dng ng dng.  
Dưới đây là nội dung ca mt file R.java:  
/* AUTO-GENERATED FILE. DO NOT MODIFY.  
*
* This class was automatically generated by the  
* aapt tool from the resource data it found. It  
* should not be modified by hand.  
Page | 10  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
*/  
package dtu.k12tpm.pbs.activity;  
public final class R {  
public static final class array {  
public static final int array_timeout=0x7f050000;  
}
public static final class attr {  
}
public static final class drawable {  
public static final int add=0x7f020000;  
public static final int backup_icon=0x7f020001;  
public static final int checkall=0x7f020002;  
}
public static final class id {  
public static final int Button01=0x7f070006;  
public static final int Button02=0x7f070007;  
public static final int CheckBox01=0x7f070017;  
}
public static final class layout {  
public static final int contact_list=0x7f030000;  
public static final int content_sender=0x7f030001;  
public static final int friend_list=0x7f030002;  
}
public static final class menu {  
public static final int context_menu=0x7f060000;  
public static final int menu_options=0x7f060001;  
public static final int options_menu=0x7f060002;  
}
public static final class string {  
public static final int app_name=0x7f040001;  
public static final int context_menu_item_delete=0x7f04000b;  
public static final int context_menu_item_edit=0x7f04000a;  
}
}
6. CHU KỲ ỨNG DỤNG ANDROID  
Một tiến trình Linux gói gọn một ứng dụng Android đã được tạo ra cho ứng dụng  
khi codes cần được run và sẽ còn chạy cho đến khi:  
Nó không phụ thuộc.  
Hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác  
Một sự khác thường và đặc tính cơ bản của Android là thời gian sống của tiến trình  
ứng dụng không được điều khiển trực tiếp bới chính nó. Thay vào đó, nó được xác  
định bởi hệ thống qua một kết hợp của:  
Những phần của ứng dụng mà hệ thống biết đang chạy  
Những phần quan trọng như thế nào đối với người dùng  
Bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống.  
Page | 11  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
Chu kỳ sống thành phần  
6.1.  
Các thành phn ng dng có mt chu ksng, tc là mi thành phn tlúc bắt đầu  
khi tạo và đến thời điểm kết thúc. Giữa đó, đôi lúc chúng có thlà active hoc  
inactive, hoặc là trong trường hp activies nó có thvisible hoc invisible  
Hình 1-4  
6.2.  
Activity Stack  
Bên trong hthống các activity được qun lý như một activity stack. Khi mt  
Activity mới được start, nó được đặt ở đnh ca stack và trthành activity đang chạy  
activity trước sẽ ở bên dưới activity mi và skhông thy trong sut quá trình activity  
mi tn ti.  
Nếu người dùng nhn nút Back thì activity kết tiếp ca stack sdi duyn lên và trở  
thành active.  
Hình 1-5 Activity stack  
Page | 12  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
Cá c trạng thá i của chu kỳ sống  
6.3.  
Hình 1-6 Chu ksng ca Activity  
Một Activity chủ yếu có 3 chu kỳ chính sau:  
Active hoặc running: Khi Activity là được chạy trên màn hình. Activity này tập  
trung vào những thao tác của người dùng trên ứng dụng.  
Paused: Activity là được tạm dừng (paused) khi mất focus nhưng người dùng  
vẫn trông thấy. Có nghĩa là một Activity mới ở trên nó nhưng không bao phủ  
đầy màn hình. Một Activity tạm dừng là còn sống nhưng có thể bị kết thúc bởi  
hệ thống trong trường hợp thiếu vùng nhớ.  
Stopped: Nếu nó hoàn toàn bao phủ bởi Activity khác. Nó vẫn còn trạng thái và  
thông tin thành viên trong nó. Người dùng không thấy nó và thường bị loại bỏ trong  
trường hợp hệ thống cần vùng nhớ cho tác vụ khác.  
6.4.  
Chu kỳ sống của ứng dụng  
Trong mt ng dng Android có cha nhiu thành phn và mi thành phần đều có  
mt chu trình sng riêng. Và ng dng chỉ được gi là kết thúc khi tt ccác thành  
phn trong ng dng kết thúc. Activity là mt thành phần cho phép người dùng giao  
tiếp vi ng dng. Tuy nhiên, khi tt ccác Activity kết thúc và người dùng không  
còn giao tiếp được vi ng dng nữa nhưng không có nghĩa là ng dụng đã kết thúc.  
Bi vì ngoài Activity là thành phn có khả năng tương tác người dùng thì còn có các  
thành phn không có khả năng tương tác với người dùng như là Service, Broadcast  
Page | 13  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
receiver. Có nghĩa là nhng thành phần không tương tác người dùng có thchy  
background dưới sgiám sát ca hệ điều hành cho đến khi người dùng ttt chúng.  
6.5.  
Cá c sự kiện trong chu kỳ sống của ứng dụng  
Nếu một Activity được tm dng hoc dng hn, hthng có thbthông tin khác  
ca nó tvùng nhbi vic finish() (gi hàm finish() ca nó), hoặc đơn giản giết tiến  
trình của nó. Khi nó được hin thln na với người dùng, nó phải được hoàn toàn  
restart và phc hi li trng thái trưc. Khi mt Activity chuyn qua chuyn li gia  
các trng thái, nó phi báo vic chuyn ca nó bng vic gi hàm transition.  
Hình 1-7  
Tt cả các phương thức là nhng móc ni mà bn có thể override để làm tương  
thich công vic trong ng dng khi thay đổi trng thái. Tt ccác Activity bt buc  
phải có onCreate() đkhi to ng dng. Nhiu Activity scũng hiện thc onPause()  
để xác nhn việc thay đổi dliu và mt khác chun bdng hoạt đng với người  
dùng.  
6.6.  
Thời gian sống của ứng dụng  
Bảy phương thc chuyn tiếp định nghĩa trong chu kỳ sng ca mt Activity. Thi  
gian sng ca mt Activity din ra gia lần đầu tiên gọi onCreate() đến trng thái cui  
cùng gi onDestroy(). Mt Activity khi to toàn btrng thái toàn cc trong  
onCreate(), và giải phóng các tài nguyên đang tồn ti trong onDestroy().  
6.7.  
Thời gian hiển thị của Activity  
Visible lifetime ca mt activity din ra gia ln gi một onStart() cho đến khi gi  
onStop(). Trong sut khong thời gian này người dùng có ththy activity trên màn  
hình, có nghĩa là nó không bforeground hoặc đang tương tác với người dùng. Gia 2  
phương thức người dùng có thduy trì tài nguyên để hin thị activity đến người dùng.  
6.8.  
Các phương thức của chu kỳ sống  
Phương thức: onCreate()  
Được gọi khi activity lần đầu tiên được tạo  
Ở đây bạn làm tất cả các cài đặt tĩnh -- tạo các view, kết nối dữ liệu đến list  
và .v.v  
Phương thức này gửi qua một đối tượngBundle chứa đựng từ trạng thái  
trược của Activity  
Page | 14  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
Luôn theo sau bởi onStart()  
Phương thức: onRestart()  
Được gọi sau khi activity đã được dừng, chỉ một khoảng đang khởi động  
lần nữa (stared again)  
Luôn theo sau bởi onStart()  
Phương thức: onStart()  
Được gọi trước khi một activity visible với người dùng.  
Theo sau bởi onResume() nếu activity đến trạng thái foreground hoặc  
onStop() nế nó trở nên ẩn.  
Phương thức: onResume()  
Được gọi trước khi activity bắt đầu tương tác với người dùng  
Tại thời điểm này activity ở trên dỉnh của stack activity.  
Luôn theo sau bởi onPause()  
Phương thức: onPause()  
Được gọi khi hệ thống đang resuming activity khác.  
Phương thức này là điển hình việc giữ lại không đổi dữ liệu.  
Nó nên được diễn ra một cách nhanh chóng bởi vì activity kế tiếp sẽ không  
được resumed ngay cho đến khi nó trở lại.  
Theo sau bởi onResume nếu activity trở về từ ở trước, hoặc bởi onStop nếu  
nó trở nên visible với người dùng.  
Trạng thái của activity có thể bị giết bởi hệ thống.  
Phương thức: onStop()  
Được gọi khi activity không thuộc tầm nhìn của người dùng.  
Nó có thể diễn ra bởi vì nó đang bị hủy, hoặc bởi vì activity khác vữa được  
resumed và bao phủ nó.  
Được theo sau bởi onRestart() nếu activity đang đở lại để tương tác với  
người dùng, hoặc onDestroy() nếu activity đang bỏ.  
Trạng thái của activity có thể bị giết bởi hệ thống.  
Phương thức: onDestroy()  
Được gọi trước khi activity bị hủy.  
Đó là lần gọi cuối cùng mà activity này được nhận.  
Nó được gọi khác bởi vì activity đang hoàn thành, hoặc bởi vì hệ thống tạm  
thởi bị hủy diệt để tiết kiệm vùng nhớ.  
Bạn có thể phân biệt giữa 2 kịch bản với phương isFinshing().  
Trạng thái của activity có thể được giết bởi hệ thống.  
Page | 15  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
7. CÁ C THÀNH PHẦN GIAO DIỆN TRONG ANDROID  
7.1. View  
Trong mt ng dng Android, giao diện người dùng được xây dng từ các đối  
tượng View và ViewGroup. Có nhiu kiu View và ViewGroup. Mi mt kiu là mt  
hu duca class View và tt ccác kiểu đó được gi là các Widget.  
Tt cmọi widget đu có chung các thuộc tính cơ bản như là cách trình bày vtrí,  
background, kích thước, l,… Tt cnhng thuộc tính chung này được thhin hết ở  
trong đối tượng View.  
Trong Android Platform, các screen luôn được btrí theo mt kiu cu trúc phân  
cấp như hình dưới. Mt screen là mt tp hợp các Layout và các widget được btrí có  
thtự. Để thhin mt screen thì trong hàm onCreate ca mi Activity cn phải được  
gi mt hàm là setContentView(R.layout.main); hàm này sload giao din tfile  
XML lên để phân tích thành mã bytecode.  
Hình 1-8 Cu trúc mt giao din ng dng Android  
7.2.  
ViewGroup  
ViewGroup thực ra chính là View hay nói đúng hơn thì ViewGroup chính là các  
widget Layout được dùng để btrí các đối tượng khác trong mt screen. Có mt số  
loại ViewGroup như sau:  
7.2.1. LinearLayout  
LinearLayout được dùng để btrí các thành phn giao din theo chiu ngang hoc  
chiu dọc nhưng trên một line duy nht mà không có xung dòng.  
LinearLayout làm cho các thành phn trong nó không bphthuộc vào kích thước  
ca màn hình. Các thành phần trong LinearLayout được dàn theo nhng tlcân  
xng da vào các ràng buc gia các thành phn.  
Page | 16  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
Hình 1-9 Btrí các widget sdng LinearLayout  
7.2.2. FrameLayout  
FrameLayout được dùng để bố trí các đối tượng theo kiu giống như là các Layer  
trong Photoshop. Những đối tượng nào thuộc Layer bên dưới thì sbche khut bi  
các đối tượng thuc Layer nm trên. FrameLayer thường được sdng khi mun to  
ra các đối tượng có khung hình bên ngoài chng hạn như contact image button.  
ImageV  
Learn-  
Android.co  
TextVi  
m
Hình 1-10 Btrí các widget trong FrameLayout  
7.2.3. AbsoluteLayout  
Layout này được sdụng để btrí các widget vào mt vtrí bt kì trong layout  
da vào 2 thuc tính toạ độ x, y. Tuy nhiên, kiu layout này rt ít khi được dùng bi vì  
toạ độ của các đối tượng luôn cố định và skhông tự điều chỉnh được tlkhong  
cách giữa các đối tượng. Khi chuyn ng dng sang mt màn hình có kích thước vi  
màn hình thiết kế ban đầu thì vtrí của các đối tượng skhông còn được chính xác  
như ban đầu.  
Page | 17  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
7.2.4. RetaliveLayout  
Layout này cho phép btrí các widget theo mt trục đối xng ngang hoc dọc. Để  
đặt được đúng vị trí thì các widget cần được xác định mt mi ràng buộc nào đó với  
các widget khác. Các ràng buc này là các ràng buc trái, phải, trên, dưới so vi mt  
widget hoc so vi layout parent. Da vào nhng mi ràng buộc đó mà  
RetaliveLayout cũng không phthuộc vào kích thước ca screen thiết b. Ngoài ra, nó  
còn có ưu điểm là giúp tiết kim layout sdng nhm mục đích giảm lượng tài  
nguyên sdụng khi load đồng thời đẩy nhanh quá trình xlý.  
Hình 1-11 Btrí widget trong RetaliveLayout  
7.2.5. TableLayout  
Layout này được sdng khi cn thiết kế mt table cha dliu hoc cn btrí  
các widget theo các row và column. Chng hạn như, giao din ca mt chiếc máy tính  
đơn gin hoc mt danh sách dliu.  
Hình 1-12 Btrí widget trong TableLayout  
7.3.  
Button  
Sdĩ widget button được gii thiệu đầu tiên trong scác widget khác là vì đây là  
đối tượng có thể nói là được dùng nhiu nht trong hu hết các ng dng Android.  
Page | 18  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
Để thiết kế giao din vi một button ta có 2 cách như sau:  
Thiết kế bng XML  
<Button  
android:layout_width="wrap_content"  
android:layout_height="wrap_content"  
android:id="@+id/cmdButton1"  
android:text="Touch me!"  
android:onClick="touchMe"/>  
Thuc tính android:onClick="touchMe" được dùng để nm bt skin  
click vào button. Khi skin click button xy ra thì phương thức “touchMe”  
được khai báo trong ththuc tính sẽ được gi. Nếu trường hợp phương thức  
“touchMe” chưa được khai báo trong file mã nguồn tương ứng thì sphát sinh  
một exception. Ngược lại, phương thức “touchMe” snhận được một đối tham  
biến là đối tượng View nơi đã phát sinh ra skiện. Đối tượng View này có thể  
ép kiu trc tiếp sang kiu Button vì thc cht nó là mt button.  
VD: trong file mã ngun khai báo một hàm như sau:  
public void touchMe(View v){  
Button me = (Button) v;  
Me.setText(“Touched”);  
}
Thiết kế bng code  
Thc ra mà nói thì nếu không phải đòi hi phi custom li mt widget thì  
không cn phi sdng ti code. Trong mt số trường hp bt buc chúng ta  
phải custom các widget để cho phù hp vi hoàn cnh. Chng hạn như trong  
game, các menu hay các nút điều khin,…  
Để khai báo một Button trong code ta làm như sau:  
Button cmdButton = new Button(this);  
cmdButton.setText(“Touch Me!”);  
cmdButon.setOnClickListener(…);  
Để custom một widget nào đó ta phải to mt class kế tha tclass Widget  
muốn custom, sau đó sử dụng hàm draw để vlại widget đó như một Canvas.  
VD: canvas.drawPicture(Picture.createFromStream(...));  
7.4.  
ImageButton  
Cũng tương tự như Button, ImageButton chỉ có thêm mt thuc tính  
Page | 19  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
android:src = “@drawable/icon” để thêm hình nh vào và không có thtext  
<ImageButton  
android:layout_width="wrap_content"  
android:layout_height="wrap_content"  
android:id="@+id/cmdButton1"  
android:src="@drawable/icon"  
android:onClick="touchMe"/>  
Hình 1-13 ImageButon  
7.5.  
ImageView  
Được dùng để thhin mt hình nh. Nó cũng giống như ImageButton, chỉ khác là  
không có hình dáng ca mt cái button.  
Code:  
ImageView iv = new ImageView(this);  
iv.setImageResource(R.drawable.icon);  
<ImageView  
android:id="@+id/ImageView01"  
android:layout_width="wrap_content"  
android:layout_height=
"wrap_content"  
<ImageButton  
android:layout_width="wrap_content"  
android:layout_height="wrap_content"  
android:id="@+id/cmdButton1"  
Hình 1-14 ImageView và ImageButton  
7.6.  
ListView  
Được sdụng để thhin mt danh sách các thông tin theo tng cell. Mi cell  
thông thường được load lên tmột file XML đã được cố định trên đó số lượng thông  
tin và loi thông tin cần đưc thhin.  
Để thhiện đưc mt list thông tin lên mt screen thì cn phi có 3 yếu tchính:  
Data Source: Data Source có thể là một ArrayList, HashMap hoặc bất kỳ  
một cấu trúc dữ liệu kiểu danh sách nào.  
Page | 20  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
Adapter: Adapter là một class trung gian giúp ánh xạ dữ liệu trong Data  
Source vào đúng vị trí hiển thị trong ListView. Chẳng hạn, trong Data  
Source có một trường name và trong ListView cũng có một TextView để  
thể hiện trường name này. Tuy nhiên, ListView sẽ không thể hiển thị dữ  
liệu trong Data Source lên được nếu như Adapter không gán dữ liệu vào  
cho đối tượng hiển thị.  
ListView: ListView là đối tượng để hiển thị các thông tin trong Data  
Source ra một cách trực quan và người dùng có thể thao tác trực tiếp trên  
đó.  
Hình 1-15 Minh hoạ cho một ListView  
7.7.  
TextView  
TextView ngoài tác dụng là để hin thị văn bản thì nó còn cho phép định dng ni  
dung bng thhtml.  
VD:  
TextView textView = (TextView)findViewById(R.id.textView);  
CharSequence styledText =  
Html.fromHtml("<i>This</i> is some <b>styled</b> <s>text</s>");  
textView.setText(styledText);  
Ni dung TextView cũng có thể được định dng bng thhtml ngay trong XML.  
7.8.  
Trong Android đối tượng EditText được sdụng như một TextField hoc mt  
TextBox.  
EditText  
<EditText  
android:id="@+id/EditText01"  
android:layout_width="wrap_content"  
android:layout_height="wrap_content"  
android:textStyle="bold"  
Page | 21  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
android:textSize="20dip"  
android:textColor="#000000"  
android:text="Hello Android!"  
android:singleLine="true"  
android:inputType="textCapWords"/>  
Các thuc tính cn chú ý sdụng EditText đó là:  
android:inputType = “…” sdụng để xác định phương thức nhp cho  
EditText. Chng hạn như khi bạn mun một ô để nhp password hay mt ô  
để nhp Email thì thuc tính này sẽ làm điều đó.  
android:singleLine = “true” EditText ca bn strthành một TextField, ngược li  
slà TextBox.  
7.9.  
Nhn 2 giá trtrue hoặc false. Đối tượng CheckBox cho phép chn nhiu item  
cùng mt lúc.  
CheckBox  
Khai báo: CheckBox cb = new CheckBox(Context …);  
XML:  
<CheckBox  
android:id="@+id/CheckBox01"  
android:layout_width="wrap_content"  
android:layout_height="wrap_content"  
android:text="Check me"  
android:checked="true"/>  
7.10.  
MenuOptions  
Có 2 cách to mt MenuOptions:  
To bng code:  
public class Main extends Activity {  
private int searchBtnId = Menu.FIRST;  
private int scheduleBtnId = Menu.FIRST + 1;  
private int playBtnId = Menu.FIRST + 2;  
private int stopBtnId = Menu.FIRST + 3;  
private int group1Id = 1;  
private int group2Id = 2;  
@Override  
public void onCreate(Bundle savedInstanceState) {  
super.onCreate(savedInstanceState);  
this.setContentView(R.layout.main);  
}
@Override  
public boolean onCreateOptionsMenu(Menu menu) {  
Page | 22  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
menu.add(group1Id,searchBtnId ,searchBtnId,"Search");  
menu.add(group2Id,scheduleBtnId,scheduleBtnId,R.string.schedule);  
menu.add(group2Id,playBtnId ,playBtnId,"Play");  
menu.add(group2Id,stopBtnId ,stopBtnId,R.string.stop);  
// the following line will hide search  
// when we turn the 2nd parameter to false  
menu.setGroupVisible(1, false);  
return super.onCreateOptionsMenu(menu);  
}
}
Hình 1-16 Minh hooption menu  
To bng XML  
<?xml version="1.0" encoding="utf-8"?>  
<menu xmlns:android="http://schemas.android.com/apk/res/android">  
<item android:icon="@drawable/icon" android:title="Item1"  
android:orderInCategory="1" android:id="@+id/item1">  
<item android:title="Item 2" android:id="@+id/item2"  
android:orderInCategory="2">  
<menu>  
<item android:id="@+id/item01" android:title="Sub item 1"  
android:orderInCategory="1/>  
<item android:title="Sub item 2" android:id="@+id/item02"  
android:orderInCategory="2"/>  
</menu>  
</item>  
</menu>  
public boolean onCreateOptionsMenu(Menu menu) {  
new MenuInflater(  
getApplication()).inflate(R.menu.menu_options, menu);  
return super.onCreateOptionsMenu(menu);  
}
Page | 23  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
ContextMenu  
7.11.  
ContextMenu được sdụng để hin thcác tuchọn khi người dùng nhn dài vào  
một cell nào đó trong ListView. Để to mt ContextMenu ta cũng có 2 cách giống  
như to MenuOptions trên chỉ khác tên phương thức.  
Khi nhn dài vào mt cell trong ListView thì phương thc:  
public void onCreateContextMenu(ContextMenu menu, View v,  
ContextMenuInfo menuInfo)  
sẽ được gi và truyn vào 3 tham slà:  
ContextMenu: đối tượng để add các context menu item  
View: Đối tượng nơi mà xảy ra skin  
ContextMenuInfo: Cho biết vtrí xy ra skiện trong ListView. Để biết được vtrí  
xy ra skiện ta làm như sau:  
AdapterView.AdapterContextMenuInfo info;  
try {  
info = (AdapterView.AdapterContextMenuInfo) menuInfo;  
} catch (ClassCastException e) {  
return;  
}
info.position  
Hình 1-17 Minh hocontext menu  
7.12.  
Quick Search Box  
Mt trong những tính năng mới trong phiên bản Android 1.6 đó là Quick Search  
Box. Đây là khuôn khtìm kiếm mi trên toàn hthống Android, điều này làm cho  
ngưi dùng có thnhanh chóng tìm kiếm bt cthgì có trên chiếc điện thoi  
Android ca hvà ccác tài nguyên trên web khi họ đang online. Nó tìm kiếm và  
Page | 24  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
hin thkết qutìm kiếm ngay khi bạn đang gõ. Nó cũng cung cấp các kết qutcác  
gi ý tìm kiếm web, danh sách doanh nghiệp địa phương, và thông tin khác từ Google,  
chng hạn như báo giá cổ phiếu, thi tiết, và tình trng chuyến bay. Tt cả điều này có  
sn ngay tmàn hình ch, bng cách khai thác trên Quick Search Box (QSB).  
Hình 1-18 Minh hoQuick Search Box  
7.13.  
Activity & Intend  
7.13.1.Activity  
Activity là mt thành chính ca mt ng dụng Android, được dùng để hin thmt  
màn hình và nm bt các hoạt động xy ra trên màn hình đó. Khi làm việc vi Activity  
cn nm bắt được mt skiến thức cơ bản như sau:  
Chu ksng ca mt Activity  
(Xem chu kỳ ứng dng ca Android mc 1.6)  
To menu và dialog  
Khởi động mt Activity  
Để khởi động mt Activity ta sdng Intend stìm hiu kỹ hơn ở phn b. Tuy  
nhiên, trong phn này tôi sẽ hướng dn cách chuyn gia các Intend theo 2 loi:  
Khai báo không tường minh:  
Cung cp chính xác thông tin ca activity cn gi bng cách truyn vào tên class  
của Activity đó  
VD: TActivity A mun chuyn qua Activity B ta khai báo mt Intend trong  
Activity A:  
Page | 25  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
Intend intend = new Intend(this, B.class);  
startActivity(intend);  
Khai báo không tường minh  
Cung cp các thao tác cn làm gì vi loi dliu nào, hthông stìm đến  
activity tương ứng để khởi động.  
VD: Để xem thông tin một contact nào đó trong Activity của ng dng Contact  
trong Android ta chỉ đến dliu contact và chỉ đến Activity View contact như sau:  
Intent i = new Intent();  
i.setAction(Intent.ACTION_VIEW);  
i.setData(Uri.withAppendedPath(  
android.provider.Contacts.People.CONTENT_URI, "1));  
startActivity(i);  
Tính liên lc gia 2 activity  
Khi chuyn sang mt Activity khác ta có thgi kèm dliệu trong intend đó như  
sau:  
intend.putExtra(“key1”, “value1”);  
intend.putExtra(“key2”, 23);  
Bên phía Activity được khởi động hay đưc chuyển đế n, có thly dliệu được  
gửi như sau:  
getIntend().getExtra().getString(“key1”);  
getIntend().getExtra().getInt(“key2”);  
Task  
Android là mt hệ điều hành đa tiến trình. Khi lp trình trên nn tng Android thì  
tiến trình là mt vấn đề cn phải đưc chú ý nhiu nht. Mc dù Android htrợ đa  
tiến trình nhưng trên một thiết bị di động vi cu hình thp mà chúng ta quá lm dng  
tiến trình thì srt tn bxử lý điều này cũng đồng nghĩa với vic bạn đang biến ng  
dng ca bn trthành mt thphn mm tiêu thụ điện năng.  
7.13.2.Intent  
Khái nim Intend:  
Là mt cu trúc dliu mô tcách thức, đối tưng thc hin ca mt Activity  
Là cu ni gia các Activity: ng dụng Android thường bao gm nhiu  
Activity, mi Activity hoạt động độc lp vi nhau và thc hin nhng công  
việc khác nhau. Intent chính là người đưa thư, giúp các Activity có thể triu gi  
cũng như truyền các dliu cn thiết ti một Activity khác. Điều này cũng  
Page | 26  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
giống như việc di chuyn qua li gia các Forms trong lp trình Windows  
Form.  
Hình 1-19 Truyn dliu gia 2 Activity  
Dliu ca Intend:  
Intent về cơ bản là mt cu trúc dliệu, được mô ttrong lp  
android.content.Intent  
Các thuc tính ca một đối tượng Intend:  
Hình 1-20 Các thuc tính ca Intend  
Các Action được định nghĩa sẵn:  
Dưới đây là những hằng String đã được định nghĩa sẵn trong lp Intent.  
Đi kèm với nó là các Activity hay Application được xây dng sn sẽ được  
triu gi mỗi khi Intent tương ứng được gi (tất nhiên khi được cung cp  
đúng data). VD: Gọi ti mt số điện thoi:  
Intent dialIntent =  
new Intent(Intent.ACTION_DIAL, Uri.parse("tel:123456"));  
startActivity(dialIntent);  
Page | 27  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
Hình 1-21 Các Action đã được định nghĩa sẵn trong Intend  
8. CONTENT PROVIDER VÀ URI  
Trong hthng Android tt cả các tài nguyên ngư Contact, SMS,… đều được lưu  
trvào CSDL SQLite ca hthng. Cũng như các CSDL khác, CSDL mà hệ thng  
Android sdụng để lưu trữ thông tin cũng cho phép chúng ta truy vn dliệu như một  
CSDL MSSQL thông thường. Tuy nhiên, trong hthống đó chúng ta không cần phi  
thao tác bng lnh SQL nhiều để truy xut dliệu mà thay vào đó Android đã được  
trang bmột API cho phép người lp trình có thddàng truy xut dliệu. Đó gọi là  
ContentProvider. ContentProvider cung cp cho chúng ta một đối tượng con trgiúp  
chúng ta có thddàng lấy được bt cdliệu lưu trữ nào chcn cung cp mt  
đường dẫn đúng đến dliệu đó. Đường dn này còn được gi là Uri.  
To mt Uri:  
Uri uri = Uri.parse(“content://com.android.contacts/contacts”);  
Cu trúc gm có 4 phần chính như sau:  
Phần A: Đây là tiền tchra dliệu được điều khin bi Content Provider và nó  
không bao giờ thay đổi.  
Phn B: Phn này chỉ đến nơi lưu trữ dliu. Cũng giống như cấu trúc ca mt số  
điện thoi thì cái này có thhình dung nó như là mã quc gia hoc cũng có thể coi nó  
như là tên ca CSDL.  
Phn C: Phn này chra loi dliu. Chng hạn như, dữ liu contact, dliu  
SMS,… Phn này có thể coi nó như là tên của mt table  
Page | 28  
Sinh viên: Trn Hữu Phước  
Tìm hiu và xây dng ng dng Phone Book Safe Manager trên Android  
Phn D: Phn này chỉ đến đúng vị trí ca dliu, có thcoi phần này như là ID  
ca row trong table hoc mt dliệu nào đó dùng để truy vn.  
VD: Uri chỉ đến contact th0 trong CSDL là  
content://contacts/people/0  
Để có ththc hin truy vấn đến vùng dliệu đưc chra bi mt Uri ta cn có 2  
đối tượng con trỏ được cung cp bởi Activity đó là: Cursor và ContentResolver.  
Để lấy được 2 đối tượng này thì trong Activity sdng hàm  
getContentResolver() trvề đối tượng ContentResolver.  
getContentResolver().query(Uri uri); trvề đối tưng Cursor.  
9. BACKGROUND SERVICE  
Service là 1 trong 4 thành phn chính trong 1 ng dng Android (Activity, Service,  
BroadcastReceiver, ContentProvider) thành phn này chy trong hậu trường và làm  
nhng công vic không cn ti giao diện như chơi nhạc, download, xlí tính toán…  
Mt Service có thể được sdng theo 2 cách:  
Nó có thể được bắt đầu và đưc cho phép hoạt động cho đến khi một người nào  
đó dừng nó li hoc nó tngt. chế độ này, nó được bắt đầu bng cách gi  
Context.startService() và dng bng lnh Context.stopService(). Nó có thtự  
ngt bng lnh Service.stopSelf() hoc Service.stopSelfResult(). Chcn mt  
lệnh stopService() để ngng Service li cho dù lệnh startService() được gi ra  
bao nhiêu ln.  
Service có thể được vận hành theo như đã được lp trình vic sdng mt  
Interface mà nó định nghĩa. Các người dùng thiết lp một đường truyn tới đối  
tượng Service và sdụng đường kết nói đó để thâm nhp vào Service. Kết ni  
này được thiết lp bng cách gi lệnh Context.bindService() và được đóng lại  
bng cách gi lnh Context.unbindService(). Nhiều người dùng có thkết ni  
ti cùng mt thiết b. Nếu Service vẫn chưa được khi chy, lnh bindService()  
có thtùy ý khi chy nó. Hai chế độ này thì không tách bit toàn b. Bn có  
thkết ni vi một Service mà nó đã được bắt đầu vi lnh startService(). Ví  
d, mt Service nghe nhc chế độ nn có thể được bắt đầu bng cách gi lnh  
startService() cùng vi một đối tượng Intent mà định dạng được âm nhạc để  
chơi. Chỉ sau đó, có thể là khi người sdng mun kim soát trình chơi nhạc  
hoc biết thêm thông tin vbài hát hin tại đang chơi, thì scó mt Activity to  
lp một đường truyn ti Service bng cách gọi bindService(). Trong trường  
hợp như thế này, stopService() skhông thc sngừng Service cho đến khi  
liên kết cuối cùng được đóng lại.  
Page | 29  
Sinh viên: Trn Hữu Phước  

Tải về để xem bản đầy đủ

pdf 63 trang yennguyen 12/01/2025 120
Bạn đang xem 30 trang mẫu của tài liệu "Đồ án Tìm hiểu và xây dựng ứng dụng Phone Book Safe Manager trên Android", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfdo_an_tim_hieu_va_xay_dung_ung_dung_phone_book_safe_manager.pdf