Tải bản đầy đủ (.pdf) (89 trang)

thiết kế phần mềm tìm kiếm trên bản đồ số của google maps dựa trên nền tảng android dành cho điện thoại di động

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.2 MB, 89 trang )



HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
CƠ SỞ TẠI THÀNH PHỐ HỒ CHÍ MINH



ĐỒ ÁN TỐT NGHIỆP HỆ ĐẠI HỌC

Ngành : Công Nghệ Thông Tin Hệ : Chính quy
Niên khóa : 2005-2010

Đề tài :
THIẾT KẾ PHẦN MỀM TÌM KIẾM TRÊN
BẢN ĐỒ SỐ CỦA GOOGLE MAPS DỰA
TRÊN NỀN TẢNG ANDROID DÀNH CHO
ĐIỆN THOẠI DI ĐỘNG

Giáo viên hướng dẫn : Ninh Xuân Hải
Sinh viên thực hiện : Vũ Đức Mạnh
Mã số sinh viên : 405170038







Năm 2009





CƠ SỞ THÀNH PHỐ HỒ CHÍ MINH
Độc Lập – Tự Do – Hạnh Phúc
Thành phố Hồ Chí Minh, ngày…tháng … năm 200…
PHIẾU NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP HỆ ĐẠI HỌC
(Dành cho người hướng dẫn – Biểu 2)
1. Tên đề tài tốt nghiệp : Thiết kế phần mềm tìm kiếm trên bản đồ số của Google
maps dựa trên nền tảng Android dành cho điện thoại di động .
Mã đề tài : 09405170031
2. Họ tên sinh viên thực hiện : Vũ Đức Mạnh Lớp : D05THA1
Ngày sinh : 04/11/1987 MSSV:405170038
Tổng quát về số liệu các kết quả thực hiện:

Số trang:………………………………… Số chương (phần):……………
Số bảng số liệu:………………………… Số hình vẽ:………………………
Số tài liệu tham khảo:…………………… Phần mềm sử dụng:……………
Hiện vật (sản phẩm phần mềm, phần cứng):…………………………………
3. Những ưu điểm chính của đồ án tốt nghiệp:
4.1.Nội dung thực hiện:……………………………………………………….
…………………………………………………………………………………
…………………………………………………………………………………
4.2.Kết quả sản phẩm:………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
4.3.
Khả năng áp dụng:………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
4.4.Hình thức trình bày:………………………………………………………

…………………………………………………………………………………
…………………………………………………………………………………
4. Những thiếu sót chính của đồ án tốt nghiệp:
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
5. Đề nghị : Được bảo vệ
Bổ sung thêm để bảo vệ Không được bảo vệ
6. Đánh giá chung: Điểm số :………./10; Điểm chữ:…………………………………

Xác nhận của Bộ môn/ Khoa Giáo viên hướng dẫn




CƠ SỞ THÀNH PHỐ HỒ CHÍ MINH
Độc Lập – Tự Do – Hạnh Phúc
Thành phố Hồ Chí Minh, ngày…tháng … năm 200…
PHIẾU NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP HỆ ĐẠI HỌC
(Dành cho người đọc duyệt – Biểu 3)
1. Tên đề tài tốt nghiệp:…………………………………………………………
…………………………………………………………………………………
Mã đề tài:……………
2. Họ tên sinh viên thực hiện:…………………………Lớp:……………………
Ngày sinh:………………………………………… MSSV:………………
3. Tổng quát về số liệu các kết quả thực hiện:
Số trang:………………………………… Số chương (phần):………………
Số bảng số liệu:………………………… Số hình vẽ:………………………
Số tài liệu tham khảo:…………………… Phần mềm sử dụng:……………


Hiện vật (sản phẩm phần mềm, phần cứng):………………………………
4. Những ưu điểm chính của đồ án tốt nghiệp:
4.1.Nội dung thực hiện:………………………………………………………
…………………………………………………………………………………
4.2.Kết quả sản phẩm:………………………………………………………
…………………………………………………………………………………
4.3.Khả năng áp dụng:…………………………………………………………
…………………………………………………………………………………
4.4.Hình thức trình bày:……………………………………………………….
…………………………………………………………………………………
5. Những thiếu sót chính của đồ án tốt nghiệp:
………………………………………………………………………………………
……………………………………………………………………………
Đề nghị : Đư
ợc bảo vệ Bổ sung thêm để bảo vệ Không được bảo vệ

6. 3 câu hỏi sinh viên trả lời trước Hội đồng:
a) ……………………………………………………………………… …………
………………………………………………………………………
b) .…………………………………………………………………………….……
………………………………………………………………………
c) ……………………………………………………………………… …………
………………………………………………………………………
7. Đánh giá chung: Điểm số: …… /10; Điểm chữ:…………………………….

Xác nhận của Bộ môn/ Khoa Giáo viên đọc duyệt


Báo cáo Đồ án tốt nghiệp


Vũ Đức Mạnh – Đ05THA1

Lời cảm ơn

Sau

những

năm

học

tại

trường,

em

đã được

học



tiếp thu

nhiều

kiến


thức

mới

từ

sự

chỉ

bảo

tận

tình

của

các

Thầy Cô,

đã được

sống

trong

tình


thương,

tình

cảm

trìu

mến

của bạn

bè.
đây


khoảng

thời

gian

này

ý

nghĩa.
Đ



tài

thực

tập tốt

nghiệp
đ
ánh

dấu

một

bước

ngoặc

mới

trong

cuộc
đ
ời

em.


Em


xin

chân

thành

cảm

ơn

khoa
c
ông
n
ghệ
t
hông

tin
II,

Học

viện
c
ông
n
ghệ
b

ưu
c
hính
v
iễn
t
hông



sở

tại

TP.
Hồ

Chí

Minh

đã tạo điều

kiện
đ


em

hoàn


thành

tốt

đề tài
thực

tập

tốt

nghiệp

này.


Em

xin

gởi

lời

cảm

ơn

chân


thành

đến

thầy
Ninh
Xuân Hải
, thầy

đã

hỗ

trợ

cho

em

rất

nhiều

để

em

hoàn


thành

đề

tài

thực tập

tốt

nghiệp

này.


Em

xin

gởi

lời

cảm

ơn

quý

thầy




trong
h
ọc

viện
đã
tận tình

giảng

dạy,

trang

bị

cho

tôi

những

kiến

thức

quý


báu

trong suốt

quá

trình

học

tập

tại

trường.


Một

lần

nữa,

em

xin

chân


thành

cảm

ơn.




Sinh

viên

Vũ Đức Mạnh






Báo cáo Đồ án tốt nghiệp

Vũ Đức Mạnh-D05THA1 i

Mục Lục
Phần I : Lý thuyết

Chương I : Giới Thiệu về nền tẳng Android của Google…………………2
1.1 Android là gì ? ……………………………………………………………2
1.2 Sự ra đời của liên minh thiết bị cầm tay mở OHA………………………….2

1.3 Sự phát triển của Android………………………………………………… 3
1.3.1 Điều kiện phát triển……………………………………………… 3
1.3.2 Xu hướng phát triển………………………………………….……….5
Chương II : Tổng quan các thành phần của Android………………….… 7
1.1 Những đặc trưng của và kiến trúc của Android………………….…….… 7
1.1.1 Những đặc trưng của Android……………………………… …… 7

1.1.2 Tổng quan kiến trúc của Android…………………………… …… 7

1.2 Các quy tắc cơ bản của ứng dụng trong Android………………….……… 9

1.2.1 Khái quát các thành phần ứng dụng của Android……………… 10

1.2.2 Activities và Tasks………………………………………………… 14

1.2.3 Processes và Threads……………………………………………… 16

1.2.4 Vòng đời của Android…………………………………………….…19
Chương III : Trình bày một số công cụ lập trình trên Android… 30
1.1 Cài đặt bộ công cụ Android SDK và plugin (ADT) cho Eclipse………… 30
1.2 Tổng quan các công cụ được dùng trong bộ Android SDK……………… 30
1.2.1 Khái quát các công cụ trong Android SDK……………………… 33
1.2.2 Android Emulator……………………………………………………36
1.2.2.a Tổng quan Emulator……………………………………… 37
Báo cáo Đồ án tốt nghiệp

Vũ Đức Mạnh-D05THA1 i

1.2.2.b Khởi động và dừng Emulator……………………………….37
1.2.2.c AVDs và Emulator………………………………………….38

1.2.2.d Điều khiển Emulator……………………………………… 39
1.2.2.f Làm việc với các Disk Image của Emulator……………… 40
1.2.2.g Kết nối mạng trên Emulator……………………………… 43
1.2.2.h Sử dụng Console Emulator…………………………………47
1.2.2.i Sử dụng các Skin Emulator…………………………………56
1.2.2.j Chạy nhiều Emulator một lúc………………………………58
1.2.2.k Cài đặt ứng dụng trên Emulator…………………………….58
1.2.2.l Mô phỏng SD Card…………………………………………60
1.2.2.m Khắc phục các vấn đề Emulator…………………………….60
1.2.2.n Giới hạn các khả năng mô phỏng của Emulator Android… 60

1.3 Hello World , Android……………………………………………………….60
Phần II: Thiết kế phần mềm tìm kiếm trên bản đồ số của Google… 65
Chương I: Giới thiệu về dịch vụ vị trí và bản đồ trong android…………65
1.1 Dịch vụ vị trí………………………………………………………………….65
1.2 Thư viện bên ngoài của google maps……………………………………… 65
1.3 Cấu trúc dữ liệu của bản đồ số trên google maps………………………….67
Chương II: Chi tiết cách lấy dữ liệu bản đồ số của google maps…………… 67
2.1 Đăng ký api key và hiện map đơn giản với một MapActivity…………… 67
2.2 Tìm vị trí và đường đi trên google maps……………………………………75
2.3 Mô phỏng GPS trên emulator ………………………………………………76
Phần kết luận……………………………………………………………………72
Phần tham khảo……………………………………………………………… 73
Báo cáo Đồ án tốt nghiệp

Vũ Đức Mạnh-D05THA1 ii

Danh mục hình vẽ
Số Hình Tên Hình Trang
Hình 1.1 Logo đại diện cho Android 2

Hình 1.2 Các thành phần trong liên minh OHA 3
Hình 1.3 Một số nền tảng lập trình di động 5
Hình 1.4 Điện thoại HTC Dream (G1) 6
Hình 2.1 Sơ đồ các thành phần chính của hệ điều hành Android 8
Hình 2.2 Sơ đồ lớp IBinder 18
Hình 2.3 Biểu đồ minh họa vòng đời lớp Activity 22
Hình 2.4 Vòng đời của Service 27
Hình 3.1 Hộp thoại Environment Variables 31
Hình 3.2 Hộp thoại New Project 61
Hình 3.3 Hộp thoại New Android Project 62
Hình 3.4 Giao diện thực thi của ứng dụng Hello World 64
Hình 3.5 Dùng keytool để lấy mã MD5 65
Hình 3.6 Tạo AVD cho dự án 66
Hình 3.7 Tạo dự án AppMapView 67
Hình 3.8 Giao diện thực thi của AppMapView 71


Báo cáo Đồ án tốt nghiệp

Vũ Đức Mạnh – Đ05THA1 iii
Các thuật ngữ
Activitiiy Lớp khởi tạo giao diện trên Android
Android Emulator Bộ mô phỏng của Android
Broadcast receivers Các máy thu gói tin quảng bá
Caches Bộ nhớ đệm
Callback Cuộc gọi lại
Category Chuyên mục
Client Khách hang
Code Mã nguồn của ứng dụng
Console emulator Mô phỏng bảng điều khiển

Dalvik Máy ảo của android
Dalvik executable Cơ chế thực thi ảo
Disable Vô hiệu khả năng
Disk image Một Vùng ảnh trên đĩa cứng có thể chứa dữ liệu
Emulator Networking Mô phỏng mạng của android
Enable Kích hoạt một khả năng
Ethernet Interface Giao diện công nghệ mạng LAN
Filter Bộ lọc
Firewall Tường Lửa bảo vệ
Flash Memory Bộ nhớ máy tính không khả biến (có thể xóa đi và ghi lại)
Foreground Mặt trước
Gateway Address Địa chỉ mạng của cổng
Global Toàn cầu
Guest Khách
Intent Lớp thành phần kích hoạt
Interface Loopback Giao diện cục bộ ảo
Java Virtual Machine Máy ảo java
Lifecycle Vòng đời
Lifetime Thời gian hoạt động
Multicast truyền thông (phát/chuyển) đa hướng
Netspeed Tốc độ mạng
Network redirections Sử dụng các chỉ dẫn mạng
Port redirection Cổng chuyển hướng
Redirection Chuyển hướng
Router Thiết bị cho phép gửi các gói dữ liệu dọc theo mạng
Service Một lớp của android cung cấp các dịch vụ.
Task Nhiệm vụ
Thread Tiến trình
Thread safe Một phương thức lưu giữ các thread khi có khi có nhiều thread
QEMU Một công cụ mã nguồn mở có chức năng mô phỏng và ảo hóa

QWERT Là kiểu trình bày bàn phím phổ biến nhất

Báo cáo Đồ án tốt nghiệp

Vũ Đức Mạnh-D05THA1 iv

Từ viết tắt
3G Third-generation technology Công nghệ truyền thông thế
hệ thứ ba
ADT

Android Development Tools Một công cụ phát triển
android
AIDL Android Interface Description
Language
Một công cụ của android sdk
ARM Acorn RISC Machine Cấu trúc vi xử lý 32-bit
AVD Android Virtual Devices Thiết bị ảo cấu hình cho
những ứng dụng android
BSD BerKeley Software Distribution Tên của một hệ điều hành dẫn
xuất từ UNIX
DNS Domain Name System Hệ thống phân giải tên miền
DPI Dot Per Inch Đơn vị chỉ số lượng điểm trên
một inch vuông
EDGE Enhanced Data Rates for GSM
Evolution
Một công nghệ di động được
nâng cấp từ GPRS
EGPRS Enhanced GPRS Một công nghệ di động được
nâng cấp từ GPRS

GPRS General Packet Radio Service Dịch vụ vô tuyến gói tổng hợp
được phát triển trên nền tảng
công nghệ thông tin di động
toàn cầu (GSM)
GPS Global Positioning System Hệ thống định vị toàn cầu
GSM Global System for Mobile
Communication
Hệ thống thông tin di động
toàn cầu thế hệ thứ 2 (2G)
ICMP Internetwork Control Message
Protocol
Giao thức hoạt động trên layer
2 - Internetwork trong mô
hình TCP/IP
IDL Interactive Data Language Ngôn ngữ tương tác dữ liệu
IGMP Internet group management
protocol
Giao thức quản lý nhóm
Internet
J2ME Java 2 platform Micro Edition Nền tảng java ,phiên bản thu
nhỏ của Sun Microsystems
LBS Location Based Service Dịch vụ dựa trên vị trí
MIDlet Mobile Information Device
Applet
Các ứng dụng của J2ME
Modem Modulator and Demodulator Thiết bị điều chế sóng tín hiệu
NAT Network Address Translation Cơ chế dịch đổi địa chỉ mạng
NDK Native Development Kit Gói phát triển cho Android hỗ
trợ ngôn ngữ c/c++
Báo cáo Đồ án tốt nghiệp


Vũ Đức Mạnh-D05THA1 iv

NMEA National Marine Electronics
Association
Định nghĩa tổng hợp điện tử
và dữ liệu
OHA Open Handset Alliance Liên minh thiết bị cầm tay mở
OSX Mac OS X Dòng hệ điều hành đồ họa độc
quyền của Apple
Ping Packet Internet Grouper Công cụ cho mạng máy tính
sử dụng trên các mạng
TCP/IP
RPC Remote Procedure Call Một mở rộng của lời gọi hàm
SDK Software development kit Gói phần mềm phát triển
Tcp Transmission Control Protocol Giao thức điều khiển truyền
vận
Udp User Datagram Protocol Một giao thức truyền tải cốt
lõi bên cạnh TCP trong bộ
giao thức TCP/IP
UMTS Universal Mobile
Telecommunications System
Mạng di động thế hệ thứ 3


Báo cáo Đồ án tốt nghiệp

Vũ Đức Mạnh-D05THA1 Trang 1

Lời Mở Đầu

Với tốc độ phát triển rất nhanh hiện nay của thị trường di động về mọi mặt như
thông tin , thiết bị , ứng dụng và các dịch vụ dường như vẫn chưa đủ để thỏa mãn người
sử dụng chính vì vậy sự ra đời liên tục của các nền tảng phát triển di động là cần thiết và
hợp lý , đặc biệt là các nền tảng mã nguồn mở sẽ giúp cho giảm
giá thành các thiết bị ,
ứng dụng thân thiện hơn với người dùng dễ phát triển và phát triển rất nhanh.Trong đề tài
này sẽ tìm hiểu về nền tảng Android , một nền tảng mở đang phát triển rất nhanh vì nó
mang đầy đủ yếu tố thuận lợi như mạnh mẽ, thân thiện, dễ phát triển và hoàn toàn miễn
phí.
Báo cáo Đồ án tốt nghiệp Chương I : Giới thiệu

Vũ Đức Mạnh-D05THA1 Trang 2

Chương I : Giới Thiệu về nền tảng Android của google
1.1 Android là gì ?

Hình 1.1: Logo đại diện cho android
Nền tảng android hay còn gọi là hệ điều hành android của Google nó bao gồm một
hệ điều hành dựa trên mã nguồn mở Linux OS (Kernel 2.6) ,(midware) phần mềm trung
gian và các ứng dụng cơ bản.
Chúng ta có thể hiểu nó 1 cách đơn giản android là hệ điều hành mã nguồn mở
dành cho thiết bị cầm tay.
Một số hỗ trợ của android cho các thiết bị :
• Màn hình cảm ứng
• 3GWifire
• Trình duyệt dựa trên webkit
• Tin nhắn (SMS) theo luồng
• Định dạng MP
EG-4, H.264, MP3, AACBộ tăng tốc đồ họa 3D
1.2 Sự ra đời của liên minh thiết bị cầm tay mở OHA

Dự án xây dựng nền tảng nguồn mở cho những chiếc điện thoại Android của
Google tuy còn đang phát triển nhưng đã tạo nên khá nhiều sự quan tâm và tò mò của
những người yêu thích công nghệ,những lời đồn thổi xung quanh những từ về công nghệ
điện thoại đại loại “Gphone” hay “Google Phone” với những chức năng hiếm có xuất hiện
từ cuối năm 2004 đã tốn khá nhiều giấy mực của giới báo chí, truyền thông.
Trong
buổi giới thiệu về Android vào cuối năm 2007, lãnh đạo của Google – ông
Eric Schmidt cho biết Google đã lập tổ chức Open Handset Alliance (OHA – một tổ chức
đa quốc gia) bao gồm 34 thành viên
với các công ty hàng đầu về công nghệ và di động
toàn cầu như Qualcomm, Intel, Motorola, Texas Instruments và LG Electronics, các nhà
mạng như T-Mobile, Sprint Nextel, NTT DoCoMo và China Mobile…. nhằm tập trung
xây dựng một chiếc điện thoại di động tốt hơn dựa trên hệ điều hành Android – một hệ
điều hành mã nguồn mở dùng cho tất cả các thiết bị cầm tay.
Báo cáo Đồ án tốt nghiệp Chương I : Giới thiệu

Vũ Đức Mạnh-D05THA1 Trang 3


Hình 1.2: Các thành phần trong liên minh OHA
Vài nét về Tổ chức Open Handset Alliance (OHA):OHA được xây dựng từ những
tổ chức phát triển điện thoại di động bao gồm các công ty cung cấp dịch vụ điện thoại di
động, sản xuất thiết bị cầm tay, sản xuất phần mềm, dụng cụ bán dẫn, và các công ty kinh
doanh. Tổ chức này đang mở cửa cho tất cả các công ty khác nhau và người sử dụng có
thể chọn một trong các nhà cung cấp dịch vụ tốt hơn thông qua O
HA với tính năng sẵn có
của hệ điều hành mở Android.
1.3 Sự hướng phát triển của android
1.3.1 Điều kiện phát triển
Trên bước đường tạo dựng nền tảng, phát triển thì Google Android cũng gặp

không ít “kẻ ngáng đường”. Trong số đó, đối thủ mạnh nhất của nó về phương diện mã
nguồn mở là LiMo. Dù rằng cả hai hệ điều hành LiMo và Android đều phát triển dựa trên
nhân Linux nhưng chúng không giống nhau mà có sự khác biệt rất lớn. LiMo được hỗ trợ
từ quỹ LiMo (quỹ này được hình thành bởi các hãng lớn Motorola, NEC, NTT DoCoMo,
Orange, Panasonic, Samsung và Vodafone). Nên cả hai nền tảng đều c
ó những “ông
Báo cáo Đồ án tốt nghiệp Chương I : Giới thiệu

Vũ Đức Mạnh-D05THA1 Trang 4

trùm” tài chính mạnh làm đối tác nhưng Android được chính Google đứng ra phát triển
trong khi LiMo hoàn toàn không có một công ty cụ thể nào đứng ra bảo trợ chính.
Google đã giới thiệu cho người dùng bộ công cụ phát triển phần mềm Android
SDK 1.0. Đây là công cụ giả lập thiết bị ảo trên máy tính để phát triển ứng dụng với các
hàm API hỗ trợ cho những người mới lập trình trên các thiết bị di động sử dụng nền tảng
Android thông qua ngôn ngữ lập trình Java,c
ùng theo đó là sự ra đời của android-market
nơi các lập trình viên rao bán các ứng dụng của mình , nó cũng giống như app-store của
apple .
Android có lợi thế lớn so với đa số hệ điều hành dành cho di động đang phát triển
mạnh trên thị trường như osx(iphone), symbian , là nó một hệ điều hành mở và hoàn
toàn miễn phí nên các lập trình viên rất dễ dành phát triển nó và giá thành cũng rẻ hơn cả
về mặt thiết bị lẫn ứng dụng.Một điểm nữa cũng rất quan trọng đó là nó được phát triển
và hậu thuẫn mạnh từ Google và liên m
inh OHA.
Các ứng dụng của android phát triển trên ngôn ngữ lập trình java có thể kể ra 3
điểm lợi thế là :
• Tận dụng được tính phổ biến của java đối với các lâp trình viên và việc sản
xuất các thiết bị .
• Đối thủ lớn nhất của andr

oid trên thị trường là OSX(Iphone) không sử dụng
java
• Các ứng dụng viết ra sẽ có giá thành rẻ hơn.
Nhưng sử dụng ngôn ngữ java cũng có điểm bất lợi là các ứng dụng sẽ chạy chậm
hơn so ứng dụng chạy trên nên c/c++.Chính vì vậy google đã cho ra phiên bản android
NDK mới 1.5 hỗ trợ lập trình bằng ngôn ngữ là c/c++.
Báo cáo Đồ án tốt nghiệp Chương I : Giới thiệu

Vũ Đức Mạnh-D05THA1 Trang 5


Hình 1. 3 : Một số nền tảng lập trình di động

1.3.2 Xu hướng phát triển
Hiện tại android đang phát triển rất nhanh cả về thiết bị lẫn ứng dụng :
• Về mặt thiết bị thì từ cuối năm 2008 HTC đã tung ra sản phẩm đầu tiên chạy hệ
điều hành android có tên gọi là “ Dream ” hay còn gọi là G1 ,đến nửa đầu năm
2009 thì một số các nhà sản xuất lớn đã tung ra các sản phẩm sử dụng hệ điều
hành a
ndroid như HTC-mobile, Samsung , và có một số khác đang chuẩn bị
tung ra sản phẩm của mình như Motorola…

Báo cáo Đồ án tốt nghiệp Chương I : Giới thiệu

Vũ Đức Mạnh-D05THA1 Trang 6


Hình 1.4 : HTC Dream (G1
• Về phần ứng dụng cũng tăng một cách đáng kể trên android-market , nhằm thúc
đẩy sự phát triển của android mới đây google đã tung ra phiên bản android-sdk 1.5

thay thế cho phiên bản android-sdk 1.1 cũ với nhiều tính năng cải tiến hấp dẫn
.Ngoài ra còn tổ chức cuộc thi viết phần mềm cho android trên toàn thế giới như
giải ADC1 vào 17/3/2008 với tổng giá trị giải thưởng lên đến 10 triệu USD đã thu
hút hơn 1700 sản phẩm th
am dự .Số lượng sản phẩm đoạt giải chiếm khá nhiều
liên quan đến thông tin địa lý như : BreakCrumbz(tìm đường bằng hình
ảnh),Locale(ứng dụng tự động cấu hình thiết bị dựa theo vị trí tọa
lạc),piggyback(ứng dụng lên lịch lữ hành hợp đồng xe)….
Có vẻ như dịch vụ dựa trên vị trí (Location Based Service) sẽ là con át chủ bài của
Android để cạnh tranh với iPhone. Khi đã có sẵn trong tay các vũ khí cực mạnh
như G
oogle Maps, Google Earth, thì việc chiến thắng trên lĩnh vực LBS không
phải là khó đối với Android. Bên cạnh đó cũng còn có nhiều dịch vụ trực tuyến
miễn phí mà google cung cấp như google docs,mail,google ladtitude
Tiếp sau đó là phiên bản android-sdk 1.6 với tên mã Donut nổi bật trong các chức
năng mới là công cụ tìm kiếm giúp người dùng điện thoại có thể tìm kiếm thông tin
trong chính máy của mình, một điểm nữa là Donut có chức năng nhận dạng chữ viết
tay của người dùng trên m
àn hình cảm ứng rồi chuyển thành những ký tự chuẩn nhờ
vậy việc viết tin nhắn dễ dàng hơn bao giờ hết và mới đây nhất là bản 2.0 tên mã
Eclair với nhiều sự thay đổi về mạng xã hội , giao diện , bộ sdk mới cho các nhà lập
trình. Trong một vài năm tới ngoài điện thoại di động ra android còn hướng đến các
thiết bị khác nữa như netbook,la
ptop,PC,….Nó đều có thể thích ứng để hoạt động .
Báo cáo Đồ án tốt nghiệp Chương II : Tổng quan

Vũ Đức Mạnh-D05THA1 Trang 7

Chương II : Tổng quan các thành phần của Android
1.1 Những đặc trưng và kiến trúc của Android

1.1.1 Những đặc trưng của android

• Application framework (Nền tảng ứng dụng ): hỗ trợ sử dụng lại và thay thế các
thành phần.
• Dalvik virtual machine (Máy di động ảo Dalvik ): Giả lập thiết bị di động sử dụng
Android.
• Integrated browser (Tích hợp trình duyệt web) : cung cấp mã nguồn mở bộ phát
triển trình duyệt Webkit.
• Optimized graphics (Tăng tốc đồ họa ) : cung cấp các thư viện đồ họa 2D, 3D sử
dụng OpenGL ES 1.0 (phụ thuộc vào thiết bị phần cứng).
• SQLite : Cấu trúc dữ liệu lưu trữ.
• Media support (Hỗ trợ đa phương tiện ): Hỗ trợ phần lớn các định dạng âm t
hanh,
hình ảnh, video phổ biến như (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG,
GIF).
• Công nghệ GSM – GSM Telephony (phụ thuộc nền tảng phần cứng).
• Hỗ trợ Bluetooth, EDGE, 3G, and WiFi (phụ thuộc thiết bị phần cứng).
• Hỗ trợ Camera, GPS, compass, and accelerometer (phụ thuộc thiết bị phần cứng).
• Rich development environment (Nhiều biến môi trường phát triển ) bao gồm các
thiết bị giả lập,Công cụ bắt lỗi, kiểm soát bộ nhớ và độ ổn định, và các plugin của
Eclipse IDE

1.1.2 Tổng quan kiến trúc của Android
Trước tiên chúng ta sẽ xem sơ đồ các thành phần chính của android gồm :
Application , Application Framework , Libraries , Android Runtime , Linux Kernel.
Báo cáo Đồ án tốt nghiệp Chương II : Tổng quan

Vũ Đức Mạnh-D05THA1 Trang 8



Hình 2.1 : Sơ đồ các thành phần chính của hệ điều hành Android
Từng thành phần chính trong cấu trúc :
• Application : android sẽ cung cấp một tập hợp của các ứng dụng lõi bao gồm
emai client , chương trình SMS , lập lịch , bản đồ , trình duyệt , danh bạ và
những ứng dụng khác nữa. Khi nhà phát triển viết một ứng dụng dành cho
Android, anh ta thực hiện các đoạn mã trong môi trường Java. Sau đó, nó sẽ
được biên dịch sang các bytecode của Java, tuy nhiên để thực thi được ứng
dụng này trên Android thì nhà phát triển phải thực thi một công cụ có tên là dx.
Đây là công cụ dùng để chuyển đổi bytecode sang một dạng gọi là dex
bytecode. "Dex" là từ viết tắt của "Dalvi
k executable" đóng vai trò như cơ chế
ảo thực thi các ứng dụng Android.
Từ góc nhìn của một nhà phát triển, Dalvik
trông giống như máy ảo Java (Java Virtual Machine) nhưng như đã đề cập ở
trên Dalvik thực thi dex bytecode chứ không phải Java bytecode. Hơn thế nữa
giữ chúng tồn tại những điểm khác nhau về class file
• Application Framework : các lập trình viên có đầy đủ quyền truy cập các khung
api sử dụng các lõi ứng dụng . Kiến trúc của những ứng dụng đó được thiết kế
để đơn giản hóa việc sử sụng lại các thành phần.Bất kỳ ứng dụng nào cũng có
thể khai bá
o những khả năng của nó và những ứng dụng khác sau đó có thể sử
Báo cáo Đồ án tốt nghiệp Chương II : Tổng quan

Vũ Đức Mạnh-D05THA1 Trang 9

dụng lại những khả năng đó.Khi các cơ chế giống nhau thì sẽ cho phép người
sử dụng thay thế các thành phần đó.
Những ứng dụng thiết lập lên những dịch vụ và hệ thống bao gồm :

9 Content Provider - cung cấp chức năng truy vấn dự liệu giữa các ứng dụng

của Android.
9 A Resource Manager - cung cấp chức năng truy cập tài nguyên ngoại trừ mã
nguồn .
9 A Notification Manager - cung cấp chức năng tùy chỉnh những cảnh báo lên
màn hình ở thanh status.
9 A Activity Manager - quản lý vòng đời của các ứng dụng.
• Libraries :
9 System C library – Một BSD thực thi của hệ thống thư viện C chuẩn.
9 Media Libraries - dựa trên chuẩn opencore của pac
ketvideo’s, thư viện này
hỗ trợ playback và recording của những định dạng audio và video phổ biến
,có cả định dạnh những file ảnh tĩnh , bao gồm các định dạng : MPEG4,
H.264, MP3, AAC, AMR, JPG, and PNG.
9 Surface Manager – quản lý việc truy cập hệ thống phụ và ghép những
đường nối của những lớp đồ họa 2D và 3D từ nhiều ứng dụng.
9 LibWebCore – là một công cụ trình duyệt web hiện đại mà những khả năng
của nó có cả trình duyệt androi
d và web nhúng.
9 SGL – công cụ đồ họa 2D nằm phía dưới.
9 3D Libraries – Một sự bổ sung dựa trên OpenGL ES 1.0 APIs , thư viện này
sử dụng cả phần cứng gia tốc 3D.
9 FreeType – biến đổi những font và ảnh bitmap.
9 SQLite – công cụ cơ sở dữ liệu mạnh mẽ và nhẹ được dùng cho tất cả các
ứng dụng.
• Anroid Runtime : Android bao gồm tập hợp các thư viện lõi , nó cung cấp hầu
hết các chức năng sẵn có trong ngôn ngữ java.
• Linux ker
nel : Android dựa vào dịch vụ hệ thống nhân của phiên bản linux 2.6
như bảo mật ,quản lý bộ nhớ,quản lý quy trình ,ngăn xếp mạng và các kiểu
driver.Nhân này cũng hoạt động như lớp trừu tượng giữa phần cứng và phần

còn lại của ngăn xếp phần mềm.
1.2 Các quy tắc cơ bản của ứng dụng trong Android
Các ứng dụng Android được viết bằng các ngôn ngữ lập trình Java. Việc biên soạn
mã Java - cùng với bất kỳ dữ liệu nào và các tập tin theo yêu cầu của ứng dụng đó – được
gói lại bởi công cụ appt trong gói phần mềm android, một file lưu trữ được đánh dấu bởi
một file có đuôi *. Apk. file này là một phương tiện truyền tải cho các ứng dụng và cài đặt
nó trên các thiết bị di động, đó là file để người dùng tải về các thiết bị của họ. Tất cả các
m
ã trong một file *. Apk được coi là một trong những ứng dụng
Báo cáo Đồ án tốt nghiệp Chương II : Tổng quan

Vũ Đức Mạnh-D05THA1 Trang 10

• Theo mặc định, tất cả các ứng dụng chạy trong xử lý Linux của riêng của nó.
Android bắt đầu tiến trình khi có một đoạn code của ứng dụng cần phải được
thực hiện, và tiến trình tắt khi nó không còn cần thiết, và nguồn tài nguyên hệ
thống được yêu cầu cho các ứng dụng khác.
• Mỗi tiến trình riêng của chúng có máy ảo Java (VM) riêng, do đó, các đoạn
code ứng dụng chạy tách biệt khỏi các code của tất cả các ứng dụng khác.
• The
o mặc định, mỗi ứng dụng đều được cấp một User ID Linux duy nhất.
Quyền được thiết lập để cho các file của ứng dụng chỉ được nhìn thấy bởi user
đó.
Có thể sắp xếp cho hai ứng dụng để chia sẻ cùng một ID người dùng, trong đó có
trường hợp họ sẽ có thể xem các file của nhau. Để bảo tồn nguồn t
ài nguyên hệ thống, các
ứng dụng có cùng ID cũng có thể sắp xếp để chạy trong cùng một tiến trình Linux, chia sẻ
cùng một VM.
1.2.1 Khái quát các thành phần ứng dụng của android
Một trong những đặc trưng chính của android là một ứng dụng có thể sử dụng các

thành phần của những ứng dụng khác. Ví dụ, nếu nhu cầu ứng dụng của bạn để hiển thị
một danh sách các di chuyển hình ảnh và các ứng dụng khác đã phát triển một thanh cuộn
phù hợp và đã tạo cho nó có sẵn sàng đối với những người khác, bạn có thể gọi thanh
cuộn để làm công việc, thay vì bạn phải tự phát triển của riêng bạn.Các đoạn code của bạn
không kết hợp các đoạn code của các ứng dụng khác hoặc liên kết đến nó, thay vào đó, nó
đơn giản chỉ khởi động các đoạn c
ode của các ứng dụng khác khi cần sử dụng.
Để làm việc này, hệ thống phải có khả năng bắt đầu tiến trình ứng dụng khi bất kỳ
phần nào của nó cần sử dụng, và khởi tạo các đối tượng Java cho phần đó. Vì vậy, không
giống như các ứng dụng trên hầu hết các hệ thống khác, các ứng dụng A
ndroid không có
một mục nhập cho tất cả mọi thứ trong các ứng dụng (không có hàm main()). Thay vào
đó, chúng có thành phần chủ yếu là hệ thống có thể khởi tạo và chạy khi cần thiết. Có bốn
loại thành phần:
• Activities(android.app.Activity) - đây là lớp khỏi tạo gi
ao diện ứng dụng nội bộ
trên nên Android tương tư như MIDlet trong J2ME.Một hoạt động thể hiện một
hình ảnh giao diện người dùng cho một sự cố gắng tập trung để người sử dụng
có thể thực hiện. Ví dụ, một activitiy có thể trình bày một danh sách các mục để
người dùng có thể lựa chọn hoặc nó có thể hiển thị hình ảnh cùng với các chú
thich. Một tin nhắn văn bản ứng dụng có thể có một activity hiển t
hị một danh
sách các địa chỉ liên lạc để gửi tin nhắn đến một activity thứ hai để viết tin nhắn
này ứng với các địa chỉ liên lạc, và các activity khác để xem xét lại các tin nhắn
cũ hoặc thay đổi cài đặt. Mặc dù chúng làm việc cùng nhau để tạo thành một
giao diện người dùng liền nhau nhưng mỗi activity độc lập với những activity
khác. Mỗi activity đều triển khai thực hiện như là một lớp phụ của lớp activi
ty
cơ bản.
Báo cáo Đồ án tốt nghiệp Chương II : Tổng quan


Vũ Đức Mạnh-D05THA1 Trang 11

• Service(android.app.Service): cung cấp các dịch vụ liên quan đến
client/service. Một Service sẽ chạy ngầm bên dưới, sau đó các client (Activity)
sẽ kết nối và truy xuất các hàm trên dịch thông qua Interface class.Một service
không có trực quan giao diện người sử dụng nhưng sẽ chạy ngầm trong nền của
giao diện người dùng đó.
• Broadcast receiver (android.content.BroadcastReceiver): đây là một ứng dụng
chạy ngầm dùng để dọc và cập nhật thông tin trên UI, vi dụ như cập nhật sự
thay đỗi giờ, pin
Một cái máy thu broadcast sẽ nhận và phản hồi lại những thông báo
broadcast. Có rất nhiều broadcast bắt nguồn từ code hệ thống như broadcast
thông báo thay đổi múi giờ, pin thấp …
• Content Provider : cung cấp chức năng truy vấn dự liệu giữa các ứng dụng của
Android.Một content provider chỉ dẫn thiết lập cở sở dữ liệu của một ứng dụng
sẵn sàng cho các ứng dụng khác.dữ liệu này có thể được lưu trong file hệ thống
trong database của SQLite. Bất cứ khi nào có một yêu cầu cần được xử lý bởi
một thành phần, Android bảo đảm rằng các tiến trình ứng dụng của các thành
phần sẽ được chạy, nó bắt đầu nếu cần thiết và luôn giữ cho các thành phần đó
sẵn sằng .

Thành phần kích hoạt – intents : Các content provider được kích hoạt khi được
một yêu cầu từ một ContentResolver . Ba thành phần khác là activities,broadcast
và receivers được kích hoạt bởi thông báo không đồng bộ gọi từ intents . Một
intent là một đối tượng mà nó giữ những nội dung của thông báo Đối với các
activity và service, đòi hỏi tên của chúng và những chỉ dẫn URI của dữ liệu để thực
hiện theo. Ví dụ, nó có thể truyền tải một yêu cầu cho một activity trình bày một
hình ảnh cho người sử dụng hoặc cho phép người dùng chỉnh sửa một số văn bản.
Đối với các máy thu broadcast , các tên của đối tượng Intent đa

ng hoạt động sẽ
được công bố. Ví dụ, nó có thể thông báo cho ai quan tâm rằng các máy ảnh đã
được bấm nút.
Có Những phương thức riêng cho từng kiểu thành phần kích hoạt :
• Một activity là đã được phát động thông qua một đối tượng intent là
Context.startActivity() hoặc Activity.startActivityForResult.Những đáp ứng
của activity có thể được quan sát từ những intent đầu m
à nó có thể được gọi bởi
phương thức getIntent().Android gọi các phương thức getIntent() của activity
để chuyển qua bất kỳ intent kế tiếp nào.
Một activity thường bắt đầu cái kế tiếp nó.Nếu cái kết quả mong muốn được
gửi trả lại từ hành động bắt đầu của nó, nó sẽ gọi startActivityForResult() thay
vì startActivity().Ví dụ nếu nó bắt đầu một activity cho phép người dùng lựa
chọn một hình ảnh,nó có thể mong đợi kết quả được trả lại là những hình ảnh
Báo cáo Đồ án tốt nghiệp Chương II : Tổng quan

Vũ Đức Mạnh-D05THA1 Trang 12

đã chọn.Kết quả được trả lại là một đối tượng intent mà nó thông qua đó để gọi
phương thức onActivityResult() của activity
• Một service được bắt đầu thông qua đối tượng Content.startService(). Android
gọi phương thức onStart() của service và chuyển nó qua một đối tượng intent
• Một ứng dụng có thể khởi động broadcast bằng một đối tượng intent thông qua
các phương thức như :
Context.sendBroadcast(),Context.sendOrderedBroadcast() và
Context.sendStickyBroadcast ở trong bất kỳ biến nào của chúng.Android
cung cấp intent đó tới tất cả các broadcast nhận đư
ợc mà chúng quan tâm
bằng cách gọi phương thức onReceive().
Tắt các thành phần : Một content provider đang hoạt động trong khi đó chỉ đáp

ứng 1 yêu cầu từ 1 ContentResolver , một broadcast nhận kích hoạt chỉ khi đáp
ứng một thông báo broadcast khác .Như vậy rõ ràng ta không cần tắt các thành
phần này.
Android có các phương thức để tắt các dịch vụ và các hoạt động trong một cách
trật tự :
• Một activity có thể tắt bằng cách gọi phương thức finish() của nó.Một trong
những activity có thể tắt các activity khác (nó bắt đầu với
startActivityForResult()) là finishActivity().
• Một service có thể được ngừng lại khi gọi phương thức stopSelf() của nó hoặc
gọi C
ontext.stopService().
Các thành phần có thể được tắt bởi hệ thống khi chúng không còn sử dụng hoặc
khi android cần tái thiết bộ nhớ để có thêm những hoạt động khác.
File Manifest : Trước khi android có thể khởi động ứng dụng nó phải biết các
thành phần đang có trong ứng dụng, vì vậy ứng dụng sẽ khai báo các thành phần
đó trong file Manifest hiện có của gói vào trong gói ứng dụng android , file .apk
lưu giữ các đoạn code, tài nguyên, tập tin của ứng dụng.
File manifest có cấu trúc là một file xml luôn được đặt tên là AndroidManifest.xml
cho tất cả các ứng dụng. Trong việc khai báo các thành phần , khi đặt tên bất kỳ
một thư viện nào của ứng dụng phải dựa vào liên kết đó(bên cạch thư viện android
mặc định) và xác định quyền tr
uy cập bất kỳ ứng dụng nào dự kiến được cấp phép.
Nhiệm vụ chính của file manifest là thông báo các thành phần của ứng dụng
android.
Ví dụ một activity có thể được khai báo như sau :
<?xml version="1.0" encoding="utf-8"?>
<manifest . . . >
Báo cáo Đồ án tốt nghiệp Chương II : Tổng quan

Vũ Đức Mạnh-D05THA1 Trang 13


<application . . . >
<activity android:name="com.example.project.FreneticActivity"
android:icon="@drawable/small_pic.png"
android:label="@string/freneticLabel"
. . . >
</activity>
. . .
</application>
</manifest>

Đặt tên lớp phụ của activity chúng thực hiện hoạt động của activity.Các icon và
label thuộc tính trỏ đến file tài nguyên(resource) chứa các icon và label có thể hiển
thị cho người sử dụng activity này.
Các thành phần khác được khai báo một cách tương tự như : <service> cho các
phần tử của service , <receive> cho các phần tử của broadcast receivers và
<provider> cho các phần tử của content provider. Activities, Services, Content
Providers nếu chúng không được khai báo trong manifest thì sẽ không hiện trong
hệ thống và không bao giờ được chạy.Tuy nhiên đối với broadcast receivers có thể
đư
ợc khai báo trong manifest hoặc cũng có thể được tạo ra trong đoạn code tự
động(như đối tượng broadcast receivers) và đăng ký với hệ thống bằng cách gọi
Context.registerReceiver().
Intent Filters(Các bộ lọc Intent) : Một đối tượng intent nếu có thể nhắm rõ ràng
tên của một thành phần android sẽ tìm thành phần đó(dựa trên việc khai báo trong
file manifest) và kích hoạt nó còn nếu không thì android phải định vị một thành
phần tốt nhất có thể đáp ứng cho đối tượng intent đó,bằng cách so sánh các đối
tượng intent vào các mục tiêu tiềm năng của các bộ lọc intent. Dưới đây là một mở
rộng của các ví dụ trước đó cho biết thêm về intent filters :
<?xml version="1.0" encoding="utf-8"?>

<manifest . . . >
<application . . . >
<activity android:name="com.example.project.FreneticActivity"
android:icon="@drawable/small_pic.png"
android:label="@string/freneticLabel"
. . . >
<intent-filter . . . >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter . . . >
<action android:name="com.example.project.BOUNCE" />
<data android:type="image/jpeg" />
Báo cáo Đồ án tốt nghiệp Chương II : Tổng quan

Vũ Đức Mạnh-D05THA1 Trang 14

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
. . .
</application>
</manifest>
Filter đầu tiên là kết hợp của action “android.intent.action.MAIN” và
category “android.intent.category.LAUNCHER”.
Filter thứ hai khai báo một hành động của activity có thể được thực hiện
trên một kiểu đặc biệt của dữ liệu.
Để broadcast receiver được tạo ra và đăng ký trong code thì intent filter đó
phải được tạo ra trực tiếp từ đối tượng IntentFilter. Tất cả các thành phần
khác(activity , service,content provider) được thiết lập trong manifest.

1.2.2 Activitiies và Tasks
Như đã nêu ở trên , một activity có thể khởi động một activity khác ,bao gồm cả
việc định nghĩa một ứng dụng khác.Ví dụ bạn muốn hiển thị cho người dùng xem một bản
đồ đường phố của một số địa điểm.Có sẵn activity làm việc đó vì vậy tất cả việc bạn cần
làm là đặt đối tượng intent với thông tin đòi hỏi và chuyển nó vào startActivity().Bản đồ
sẽ hiển t
hị cho người xem , khi người sử dụng bấm vào phím back thì activity của bạn sẽ
hiện lên màn hình. Android duy trì sự trải nghiệm của người dùng này bằng cách giữ cho
cả hai hoạt động trong cùng một task.
Mỗi task là một stack của các activity, không phải là lớp hay các phần tử trong file
manifest, như vậy không có cách nào thiết lập giá trị cho các task độc lập của các activity
đó.
Các hành vi được mô tả là chỉ cần mặc định các hành vi cho activity và task.
Nhưng sẽ còn có nhiều cách để sửa đổi hầu hết tất cả mọi khía cạnh của nó. Sự kết hợp
các activity với task, và các hành vi của một activity trong một task, được kiểm so
át bởi
sự tương tác giữa các thiết lập cờ trong đối tượng intent để bắt đầu các activity và các
thuộc tính thiết lập trong activity của các phần tử của <activity> trong file manifest.
Về vấn đề này, các cờ Intent chính là:
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
FLAG_ACTIVITY_SINGLE_TOP
Các thuộc tính chính cở <activity> là :
taskAffinity
launch Mode

Báo cáo Đồ án tốt nghiệp Chương II : Tổng quan

Vũ Đức Mạnh-D05THA1 Trang 15


allowTaskReparenting
clearTaskOnLaunch
alwaysRetainTaskState
finishOnTaskLaunch
Affinities and new tasks : Theo mặc định tất cả các activity trong ứng dụng đều
có một affinity khác nhau cho mỗi activity.
Các chế độ khởi động : Có 4 chế độ khởi động trong đó chế độ standard là chế độ
mặc định.
"standard"
"singleTop"
"singleTask"
"singleInstance"
Làm sạch stack : Nếu người dùng bỏ task trong một thời gian dài hệ thống sẽ làm
sạch task đó trong tất cả các activity trừ activity gốc.Ý tưởng này là sau một thời
gian người dùng có khả năng bỏ di những gì đã và đang làm trước khi trở về công
việc nào đó để bắt đầu mới. Có vài thuộc tính của activity mà có thể được sử dụng
để điều khiển hành vi và sửa đổi nó :
Thuộc tính alwaysRetainTaskState – Nếu thuộc tính này thiết lập là “true”ở
gốc activity của một task , mặc định mô tả các hành vi không xảy ra.Task giữ lại
tất cả các activity trong stack của nó t
hậm chí sau một thời gian dài
Thuộc tính clearTaskOnLaunch - Nếu thuộc tính này thiết lập là “true”ở
gốc activity của một task ,stack này được xóa xuống activity gốc.Đây là cực đối
lập của alwaysRetainTaskState . Người dùng luôn trở về trạng thái ban đầu của
task thậm chí sau một sự vắng mặt tức thời.
Thuộc tính finishOnTaskLaunch – giống như clearTaskOnLaunch nhưng nó
vận hành trên một activity đơn , không phải là một task toàn vẹn và nó c
ó thể làm
cho bất kỳ một activity nào rời khỏi stack bao gồm cả activity gốc .Khi thiết lập là

“true”,activity này vẫn còn một phần của task đó cho phiên hiện tại.Nếu người
dùng bỏ nó đi và sau đó trở lại task đó, thì thuộc tính này ko còn hiện hữu.
Sự bắt đầu các task : Một activity được thiết lập như là một mục điểm cho một
task bằng cách cho nó một intent filter với "android.intent.action.MAIN" được xác
định như là hành động và "android.intent.category.LAUNCHER" như là xác định
loại
Khả năng thứ 2 rất quan trọng : người dùng phải có khả năng bỏ lại một
task và sau đó trở lại sau. Vì lý do này, hai chế độ khởi động luôn luôn đánh dấu

×