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

Xây dựng ứng dụng đọc báo trên nền tảng android

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.67 MB, 52 trang )

LỜI CẢM ƠN
Sau một thời gian tìm hiểu đề tài “Xây dựng ứng dụng đọc báo trên nền
tảng Android”, em đã hoàn thành tiến độ dự kiến. Để đạt được kết quả này, em
đã nỗ lực thực hiện và đồng thời cũng nhận được rất nhiều sự giúp đỡ, quan tâm,
ủng hộ của các thầy cô bạn bè và gia đình.
Em xin chân thành cảm ơn giáo viên hướng dẫn: Th.S Bùi Anh Tú– Bộ
môn Công nghệ phần mềm- Khoa Công nghệ thông tin- Trường Đại học Công
nghệ thông tin và truyền thông – Đại học Thái Nguyên đã tận tình giúp đỡ em
hoàn thành đồ án tốt nghiệp này.
Em xin chân thành cảm ơn các thầy cô trường Đại học Công nghệ thông
tin và truyền thông – Đại học Thái Nguyên đã nhiệt tình giảng dạy và truyền đạt
kiến thức quý báu và bổ ích trong suốt quá trình em học tập tại trường.
Em xin chân thành cảm ơn các thầy, cô giáo viên thuộc bộ môn Công
nghệ phần mềm đã trang bị cho em những kiến thức chuyên ngành rất hữu ích để
em hoàn thành đề tài và phục vụ cho công việc của em sau này.
Vì thời gian có hạn nên không thể tránh khỏi những thiếu sót, em rất
mong nhận được sự đóng góp ý kiến từ thầy cô và các bạn. Em xin chân thành
cảm ơn!
Thái Nguyên, tháng 6 năm 2016
Sinh Viên

Nguyễn Thị Kiều Nhung

1


LỜI CAM ĐOAN
Tôi xin cam đoan:
1. Những nội dung trong báo cáo này không sao chép nội dung cơ bản từ
các Đồ án khác, là do tôi thực hiện dưới sự hướng dẫn của giáo viên hướng dẫn.
2. Những tham khảo trong bài báo cáo này đều được trích dẫn rõ ràng tên


tác giả, tên công trình, thời gian, địa điểm công bố.
3. Những sao chép không hợp lệ, vi phạm quy chế đào hoặc gian trá tạo
tôi xin hoàn toàn chịu trách nhiệm.
Thái nguyên, ngày tháng năm 2016
Sinh viên thực hiện

Nguyễn Thị Kiều Nhung

2


MỤC LỤC

LỜI CẢM ƠN .....................................................................................................1
LỜI CAM ĐOAN................................................................................................2
MỤC LỤC ..........................................................................................................3
DANH MỤC HÌNH ............................................................................................5
LỜI NÓI ĐẦU ....................................................................................................6
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT ....................................................................8
1.1. Android và lịch sử phát triển .................................................................... 8
1.1.1. Lịch sử Android ................................................................................ 8
1.1.2. Các phiên bản HĐH Android ............................................................ 9
1.2. Kiến trúc Android .................................................................................. 11
1.2.1. Linux Kernel ................................................................................... 11
1.2.2. Library và Android Runtime ........................................................... 13
1.2.3. Framework ...................................................................................... 14
1.2.4. Application ...................................................................................... 15
1.3. Các thành phần của Android .................................................................. 16
1.3.1. Thành phần của 1 chương trình Android ......................................... 16
1.3.2. Các thành phần trong giao diện Widget ........................................... 20

1.3.3. Bắt sự kiện trong Android ............................................................... 21
1.4. Hệ quản trị CSDL SQLite ...................................................................... 21
1.4.1. Giới thiệu về SQLite ....................................................................... 22
1.4.2. Các bước thực hiện .......................................................................... 23
1.4.3. Sử dụng CSDL ................................................................................ 25
1.5. Phân tích XML trong Android................................................................ 25
1.5.1. Khái niệm......................................................................................... 25
1.5.2. Đặc điểm của XML .......................................................................... 26
1.5.3. Cấu trúc của XML............................................................................ 27
1.6. RSS ........................................................................................................ 28
1.6.1. Khái niệm......................................................................................... 28

3


1.6.2. Đặc điểm của RSS............................................................................ 28
CHƯƠNG 2: KHẢO SÁT, PHÂN TÍCH THIẾT KẾ HỆ THỐNG ...................30
2.1. Khảo sát hệ thống................................................................................... 30
2.1.1. Khảo sát hiện trạng........................................................................... 30
2.1.2. Mô tả bài toán .................................................................................. 31
2.1.3. Hướng giải quyết và kế hoạch thực hiện........................................... 31
2.2. Phân tích thiết kế chương trình ............................................................... 32
2.2.1. Yêu cầu người sử dụng..................................................................... 32
2.2.2. Yêu cầu hệ thống.............................................................................. 32
2.2.3. Xây dựng biểu đồ Usecase ............................................................... 32
2.2.4. Xây dựng biểu đồ tuần tự ................................................................. 36
2.2.5. Xây dựng biểu đồ hoạt động............................................................. 40
CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH ĐỌC TIN TỨC TRÊN ............41
HỆ ĐIỀU HÀNH ANDROID............................................................................41
3.1. Giải pháp đưa RSS tin tức vào app thông qua RSS ................................. 41

3.2. Giao diện chính của chương trình ........................................................... 43
3.2.1. Giao diện các danh mục ................................................................... 46
3.2.2. Giao diện danh sách tin tức theo danh mục....................................... 47
3.2.3. Giao diện đọc tin .............................................................................. 48
KẾT LUẬN.......................................................................................................50
TÀI LIỆU THAM KHẢO .................................................................................52

4


DANH MỤC HÌNH

Hình 1.1: Logo các phiên bản hệ điều hành Android ...........................................9
Hình 1.2: Biểu tượng Robot Android.................................................................10
Hình 1.3: Kiến trúc Android ..............................................................................11
Hình 1.4: Kiến trúc Linux Kernel ......................................................................12
Hình 1.5: Kiến trúc Framework .........................................................................14
Hình 1.6: Vòng đời hoạt động của 1 ứng dụng Android.....................................18
Hình 1.7: Quá trình hoạt động của Itent .............................................................19
Hình 2.1: Biểu đồ Use Case chương trình Tin tức tổng hợp ...............................33
Hình 2.2: Biểu đồ Use Case hiển thị danh sách các trang báo ............................34
Hình 2.3: Biểu đồ Use Case hiển thị các loại tin tức ..........................................34
Hình 2.4: Biểu đồ Use Case hiển thị danh sách tin tức.......................................35
Hình 2.5: Biểu đồ Use Case hiển thị đọc tin tức.................................................35
Hình 2.6: Biểu đồ trình tự Use Case View List Papers.......................................36
Hình 2.7: Biểu đồ trình tự Use Case View Category ..........................................36
Hình 2.8: Biểu đồ trình tự Use Case View ListNews .........................................37
Hình 2.9: Biểu đồ trình tự Use Case ReadNews.................................................38
Hình 2.10: Biểu đồ lớp điều khiển .....................................................................39
Hình 2.11: Biểu đồ hoạt động ............................................................................40

Hình 3.1: Lấy link RSS của website vnexpress.net ............................................42
Hình 3.2: Link RSS của website vnexpress.net ..................................................42
Hình 3.3: Link RSS danh mục tin mới nhất của website vnexpress.net ..............43
Hình 3.4: Giao diện bắt đầu của chương trình....................................................43
Hình 3.5: Giao diện menu..................................................................................44
Hình 3.6: Giao diện thông tin ............................................................................45
Hình 3.7: Giao diện danh mục thể loại của báo VnExpress................................46
Hình 3.8: Giao diện danh sách đọc tin theo chuyên mục thời sự ........................47
Hình 3.9: Giao diện đọc tin................................................................................48

5


LỜI NÓI ĐẦU
1. Lý do chọn đề tài
Ngày nay với sự cùng với sự phát triển như vũ bão của công nghệ thông
tin, các hệ điều hành trên thiết bị di động đang trở nên rất được quan tâm. Các hệ
điều hành tiêu biểu như: windowns phone của Microsoft, IOS của Apple…. Và
hệ điều hành Android. Android chiếm 75% thị phần điện thoại thông minh trên
toàn thế giới vào thời điểm hiện tại. Sự thành công của hệ điều hành cũng khiến
nó trở thành mục tiêu trong các vụ kiện liên quan đến bằng phát minh, góp mặt
trong cái gọi là "cuộc chiến điện thoại thông minh" giữa các công ty công nghệ.
Số liệu ấy đã chỉ ra cho chúng ta thấy sự phát triển mạnh mẽ của ngôn ngữ
lẫn thiết bị như thế nào. Nếu như chỉ vài năm trước, các ứng dụng như: Internet,
Email, game online, ứng dụng văn phòng… thường chỉ xuất hiện trên máy tính
bàn hoặc máy tính xách tay thì giờ đây, những ứng dụng đó ngày càng phát triển
rộng rãi trên các thiết bị như smartphone, máy tính bảng. Các công ty phần mềm
sản xuất ứng dụng di động mới liên tục được mở ra, nhiều công ty phần mềm
chuyển hướng hoặc mở rộng sang mảng sản xuất ứng dụng trên thiết bị động
cùng với đó là một hướng đi mới trong việc lựa chọn nghề nghiệp, tương lai cho

bản thân.
Đây cũng chính là lý do khiến em chọn đề tài: “xây dựng ứng dụng đọc
báo trên nền tảng Android”, cụ thể là lập trình cho thiết bị Android để làm sáng
rõ sức mạnh của hệ điều hành Android như thế nào. Cùng với đó em cũng đã xây
dựng một ứng dụng dành cho thiết bị Android để phần nào đó thể hiện được điểm
mạnh của hệ điều hành mã nguồn mở Android.
2. Tính cấp thiết của đồ án
Di động đang và sẽ trở thành xu thế của tương lai. Cho nên các hãng thiết
bị di động nổi tiếng trên thế giới vô cùng khuyến khích các nhà lập trình viên lên
ý tưởng và làm ra một ứng dụng trên ý tưởng của mình. Google cũng không phải
là ngoại lệ, họ cũng đang khuyến khích các nhà lập trình viên xây dựng nhiều ứng
dụng trên nền tảng Android để phục vụ nhu cầu của người sử dụng.

6


Cùng với đó, vai trò của các ứng dụng đọc tin tức trên thiết bị di động
ngày càng trở nên quan trọng. Khác với báo trí truyền thông có giới hạn cập nhật
tin tức, các tờ báo trực tuyến đã cung cấp được sự tiện lợi trong việc cập nhật và
phát hành thông tin. Về phía người dùng, họ xem thông tin mọi lúc mọi nơi với
thiết bị di động của mình. Về phía người cung cấp thông tin, họ có thể dễ dàng
cập nhật tin tức mới nhất, thời sự nhất. Do đó việc sử dụng các ứng dụng đọc tin
tức luôn là điều cần thiết nhất hiện nay, nhằm đáp ứng nhu cầu cập nhật thông tin
của mỗi người.
Vì vậy, nhằm đáp ứng nhu cầu cập nhật tin tức của người dùng mọi lúc,
mọi nơi với thiết bị di động của minh, chủ yếu là với những người sử dụng hệ
điều hành Android nên em đã chọn và thực hiện đề tài này.
3. Mục tiêu của đồ án
- Tìm hiểu về hệ điều hành android, nắm bắt được cách thức xây dựng
một ứng dụng trên hệ điều hành Android.

- Phân tích thiết kế ứng dụng đọc tin tức.
- Xây dựng ứng dụng đọc tin.
4. Nội dung đồ án
Đồ án nghiên cứu về tổng quan về cơ sở lý thuyết, đánh giá những đặc
điểm nổi bật, hạn chế của những ứng dụng đã xây dựng được và phân tích thiết
kế hệ thống. Đề tài gồm 3 chương:
Chương 1: cơ sở lý thuyết.
Chương 2: Khảo sát phân tích thiết kế hệ thống.
Chương 3: Xây dựng demo chương trình đọc tin tức trên hệ điều hành
Android.
5. Kết quả đạt được
Xây dựng một chương trình đọc tin trên Android đáp ứng tương đối tốt
nhu cầu đọc tin của người dùng với số lượng đầu báo lớn, nhiều chủ đề, đủ sức
cạnh tranh với một số chương trình đọc tin tức trên thị trường.

7


CHƯƠNG 1:
CƠ SỞ LÝ THUYẾT

1.1. Android và lịch sử phát triển
1.1.1. Lịch sử Android
Android là 1 nền tảng phần mềm dựa trên mã nguồn mở Linux OS
(Kernel 2.6) cho máy di động, máy tính bảng và những phần mềm trung gian
(middleware). Nó không đơn thuần là 1 hệ điều hành, 1 công cụ lập trình hay 1
phần mềm trung gian mà nó gồm tất cả.
Ban đầu, Android là hệ điều hành cho các thiết bị cầm tay dựa 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 dựng Android Platform.

Và sau tiếp, vào cuối năm 2007, thuộc về Liên minh thiết bị cầm tay mã
nguồn mở (Open Handset Alliance). Mục 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 của
nó chính là nền tảng Android. Android được thiết kế để phục vụ nhu cầu của các
nhà sản xuất thiết bị, các nhà khai thác và các lập trình viên thiết bị cầm tay.
Phiên bản SDK (Software Development Kit) 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 dựa trên nền tảng
Android. Một vài ngày sau đó, Google lại tiếp tục công bố sự ra mắt phiên bản
Android SDK release Candidate 1.0. Trong tháng 10 năm 2008, Google được cấp
giấy phép mã nguồn mở cho Android Platform.
Khi Android được phát hành thì một trong số các mục tiêu trong kiến trúc
của nó là cho phép các ứng dụng có thể tương tác được với nhau và có thể sử
dụng lại các thành phần từ những ứng dụng khác. Việc tái sử dụng không chỉ
được áp dụng cho cho các dịch vụ mà nó còn được áp dụng cho cả các thành
phần dữ liệu và giao diện người dùng.
Vào cuối năm 2008, Google cho phát hành một thiết bị cầm tay được gọi
là Android Dev Phone 1 có thể chạy được các ứng dụng Android mà không bị

8


ràng buộc vào các nhà cung cấp mạng điện thoại di động. Mục tiêu của thiết bị
này là cho phép các nhà phát triển thực hiện các cuộc thí nghiệm trên một thiết bị
thực có thể chạy hệ điều hành Android mà không phải ký một bản hợp đồng nào.
Vào khoảng cùng thời gian đó thì Google cũng cho phát hành một phiên vản vá
lỗi 1.1 của hệ điều hành này. Ở cả hai phiên bản 1.0 và 1.1 Android chưa hỗ trợ
soft-keyboard mà đòi hỏi các thiết bị phải sử dụng bàn phím vật lý. Android cố
định vấn đề này bằng cách phát hành SDK 1.5 vào tháng Tư năm 2009, cùng với
một số tính năng khác. Chẳng hạn như nâng cao khả năng ghi âm truyền thông,

vật dụng, và các live folder.
1.1.2. Các phiên bản HĐH Android
Android đã trải qua một số các cấp nhật kể từ lần đầu phát hành. Những
cập nhật này nhìn chung có nhiệm vụ vá các lỗ hổng và thêm các tính năng mới
vào hệ điều hành.

Hình 1.1: Logo các phiên bản hệ điều hành Android

9


Android những thế hệ đầu tiên 1.0 ( 9/2008) và 1.1 ( 2/2009) chưa có tên
gọi chính thức. Từ thế hệ tiếp theo, mỗi bản nâng cấp đều được đặt với những mã
tên riêng dựa theo các món ăn hấp dẫn theo thứ tự bảng chữ cái từ “C-D-E-F-GH-I”. Hiện tại các phiên bản chính của Android bao gồm:
Android 1.5 (Cupcake)
Android 1.6 (Donut)
Android 2.0/2.1 (Éclair)
Android 2.2 (Froyo)
Android 2.3 (Gingerbread)
Android 3.2 (Honeycomb)
Android 4.0 (Ice-cream sandwich)
Android 4.1 (Jelly Bean)
Android 4.2 (Jelly Bean)
Android 4.3 (Jelly Bean)
Android 4.4 (Kitkat
Android 5.0 (Lollipop)
Android 5.1
Android 6.0 (Marshmallow)

Hình 1.2: Biểu tượng Robot Android


10


Ra mắt vào ngày 18/9/2015. Android 6.0 đi theo chiều sâu nhằm hoàn
thiện những cái đã có. Tập trung hơn về trải nghiệm của người sử dụng, đồng
thời đơn giản hóa một số thao tác mà chúng ta rất hay thực hiện trên thiết bị di
động. So với phiên bản 5.0 trước đây, phiên bản mới sẽ có ví điện tử Adroid Pay,
hỗ trợ chuẩn USB Type-C và thêm nhiều tùy chỉnh cũng như cải thiện hiệu năng
hoạt động. Hiện cũng có nhiều tin đồn cho rằng Google đang sản xuất 2 thiết bị
Nexus chạy Android 6.0 sắp tới - một từ Huawei và một Nexus 5 phiên bản 2015
của LG. Cả 2 điện thoại này dường như sẽ có tính năng quét vân tay, vốn sẽ được
hỗ trợ trên bản Android sắp tới.
1.2. Kiến trúc Android
Mô hình tổng quát các thành phần của hệ điều hành Android:

Hình 1.3: Kiến trúc Android
1.2.1. Linux Kernel
Hệ điều hành android được phát trển dựa trên hạt nhân linux, cụ thể là hạt
nhân linux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này. Tất cả mọi
hoạt động của điện thoại muốn thi hành được thì đều được thực hiện ở mức cấp
thấp ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếp với
phần cứng (driver model), thực hiện bảo mật (security), quản lý tiến trình
(process).

11


Hình 1.4: Kiến trúc Linux Kernel
Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux đã được

nâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầm tay
như hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cầu kết
nối mạng không dây...
Các thành phần của nhân Linux:
- Display Driver: Điều khiển việc hiển thị lên màn hình cũng như thu nhận
những điều khiển của người dùng lên màn hình (di chuyển, cảm ứng...).
- Camera Driver: Điều kiển hoạt động của camera, nhận luồng dữ liệu từ
camera trả về.
- Bluetooth Driver: Điều khiển thiết bị phát và thu sóng Bluetooth.
- USB driver: Quản lý hoạt động của các cổng giao tiếp USB.
- Keypad driver: Điều khiển bàn phím.
- Wifi Driver: Chịu trách nhiệm về việc thu phát sóng wifi.
- Audio Driver: điều khiển các bộ thu phát âm thanh, giải mã các tính hiệu
dạng audio thành tín hiệu số và ngược lại.
- Power Madagement: Giám sát việc tiêu thụ điện năng.
- M-System Driver: Quản lý việc đọc ghi... lên các thiết bị nhớ như thẻ
SD, flash.
- Binder IPC Driver: Chịu trách nhiệm về việc kết nối và liên lạc với mạng
vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền
thông được thực hiện.

12


1.2.2. Library và Android Runtime
Phần này có 2 thành phần là phần Library và Android Runtime

1.2.2.1. Library
Thành phần này có nhiều thư viện được viết bằng C/C++ để các phần
mềm có thể sử dụng, các thư viện đó được tập hợp thành một số nhóm như:

- Thư viện hệ thống (System C library)(Libc): thư viện dựa trên chuẩn C,
được sử dụng chỉ bởi hệ điều hành.
- Thư viện Media (Media Libraries): Có nhiều codec để hỗ trợ việc phát và
ghi các loại định dạng âm thanh, hình ảnh, video thông dụng.
- Thư viện web (LibWebCore) : Đây là thành phần để xem nội dung trên
web, được sử dụng để xây dựng phần mềm duyệt web (Android Browse) cũng
như để các ứng dụng khác có thể nhúng vào. Nó cực kỳ mạnh, hỗ trợ được nhiều
công nghệ mạnh mẽ như HTML5, JavaScript, CSS, DOM, AJAX..
- Surface Manage: quản lý hiển thị 2D và 3D.
- SGL công nghệ 2D
- SQLite : quản lý database của ứng dụng.
- Free Type: dùng cho hiển thị ảnh, font.
- SSL(Secure Socket Layer): Tầng thiết lập giao dịch an toàn trên 2 ứng
dụng trên 1 cổng (socket).
- Open GL/EL: hỗ trợ thư viện tùy chọn 3D tĩnh và động.
1.2.1.2. Android runtime
Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java
có thể hoạt động. Phần này có 2 bộ phận tương tự như mô hình chạy Java trên
máy tính thường. Thứ nhất là các thư viện lõi (Core Library), chứa các lớp như

13


JAVA IO, Collections, File Access. Thứ hai là một máy ảo java (Dalvik Virtual
Machine).
Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệ
điều hành android không được chạy bằng JRE(Java Runtime Environment) của
Sun (nay là Oracle) (JVM) mà là chạy bằng máy ảo Dalvik (máy ảo dalvik đc đặt
tên sau khi 1 nhà phát triển phần mềm của google tạo ra nó sau khi đi thăm 1
ngôi làng ở nơi tổ tiên ông sinh sống) do Google phát triển. máy ảo davik thực thi

cái tập tin davik(dex), khác với java là chuyển sang dạng bytecode. Định dạng
này được tối ưu hóa cho bộ nhớ tối thiểu.
1.2.3. Framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho
các nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng
tạo. Nhà phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm
truy cập, các dịch vụ chạy nền, thiết lập hệ thống báo động, thêm các thông báo
để các thanh trạng thái, và nhiều, nhiều hơn nữa.

Hình 1.5: Kiến trúc Framework
Nhà phát triển có thể truy cập vào các API cùng một khuôn khổ được sử
dụng bởi các ứng dụng lõi. Các kiến trúc ứng dụng được thiết kế để đơn giản hóa
việc sử dụng lại các thành phần. Cơ bản tất cả các ứng dụng là một bộ các dịch
vụ và các hệ thống, bao gồm:
- View Manage: Một tập hợp rất nhiều các View có khả năng kế thừa lẫn
nhau dùng để thiết kế phần giao diện ứng dụng như: Gridview, Tableview,
Linearlayout…

14


- Activity Manager: Quản lý các chu kỳ sống của một ứng dụng cũng như
cung cấp công cụ điều khiển các Activity.
- Telephony Manager: Cung cấp công cụ để thực hiện việc liên lạc như gọi
điện thoại.
- Location Manager: Cho phép xác định vị trí của điện thoại thoại dựa vào
hệ thống định vị toàn cầu GPS và Google Maps.
- Window Manager : Quản lý việc xây dựng và hiển thị các giao diện
người dùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng.
- Notication Manager: Quản lý việc hiển thị các thông báo (như báo có tin

nhắn, có e-mail mới).
- Resource Manager: Quản lý tài nguyên tĩnh của các ứng dụng bao gồm
các file hình ảnh, âm thanh, layout, string. (Những thành phần không được viết
bởi ngôn ngữ lập trình).
- Content Provider: cho phép các ứng dụng có thể truy xuất dữ liệu từ các
ứng dụng khác (chẳng hạn như Contacts) hoặc là chia sẻ dữ liệu giữa các ứng
dụng đó.
1.2.4. Application
Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng
như: Các ứng dụng cơ bản, được cài đặt đi liền với hệ điều hành là gọi
điện(phone), quản lý danh bạ(Contacts), duyệt web (Browser), nhắn tin(SMS),
lịch làm việc (Calendar), đọc e-mail (Email-Client), bản đồ (Map), quay phim
chụp ảnh (camera)... Các ứng dụng được cài thêm như các phần mềm chứng
khoán (Stock), các trò chơi (Game), từ điển, các widget các ứng dụng của bên
thứ 3…
Các ứng dụng viết sẽ có những đặc tính sau:
- Viết bằng Java, phần mở rộng là.apk.
- Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine
được dựng lên để phục vụ cho nó. Nó có thể là một Active Program: Chương
trình có giao diện với người sử dụng hoặc là một background: chương trình chạy
nền hay là dịch vụ.

15


- Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một
thời điểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗi
ứng dụng thì có duy nhất một thực thể (instance) được phép chạy mà thôi. Điều
đó có tác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn.
Các ứng dụng được phân quyền và tự hệ thống sẽ kill nếu mức ưu tiên thấp.

- Các ứng dụng được gán số ID của người sử dụng nhằn phân định quyền
hạn khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống.
- Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di
động khác, android cho phép một ứng dụng của bên thứ ba được phép chạy nền.
Các ứng dụng đó chỉ có một hạn chế nhỏ đó là nó không được phép sử dung quá
5~10% công suất CPU, điều đó nhằn để tránh độc quyền trong việc sử dụng
CPU.
1.3. Các thành phần của Android
1.3.1. Thành phần của 1 chương trình Android
1.3.1.1. Activity và Intent
Activity:
Một activity thể hiện một giao diện đồ họa người dùng. Ví dụ một activity
có thể biểu diễn một danh sách các menu item để người dùng có thể chọn và có
thể hiển thị ảnh cùng với tiêu đề. Một ứng dụng gửi tin nhắn văn bản có thể có
một hoạt động là hiển thị một danh sách các liên hệ để gửi tin nhắn tới, hoạt động
thứ hai là viết tin nhắn tới liên hệ được chọn, các hoạt động khác nữa là xem lại
tin nhắn cũ hay 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, mỗi activity độc lập với những cái khác. Mỗi activity
là một lớp con của lớp cơ sở Activity.
Một ứng dụng có thể gồm chỉ một activity hay nhiều activity. Thông
thường, một trong số các activity được đánh dấu như là activity đầu tiên phải
được trình diễn tới người dùng khi ứng dụng được khởi động. Chuyển từ một
activity sang activity khác được hoàn thành bằng cách cho activity hiện thời khởi
động activity kế tiếp.

16


Mỗi activity được đưa ra một cửa sổ mặc định để vẽ vào. Thông thường,
cửa sổ sẽ lấp đầy màn hình, nhưng nó có thể nhỏ hơn màn hình và nằm trên các

cửa sổ khác. Một activity có thể sử dụng cửa sổ bổ sung - ví dụ như một pop-up
dialog gọi cho một đáp ứng người dùng ở giữa của activity, hay một cửa sổ biểu
diễn những cho người dùng với thông tin quan trọng khi họ chọn một item cụ thể
trên màn hình.
Nội dung trực quan của cửa sổ được cung cấp bởi một cây phân cấp các
đối tượng view dẫn xuất từ lớp View. Mỗi view điều khiển một khoảng hình chữ
nhật cụ thể bên trong cửa sổ. View cha chứa và tổ chức bố cục các view con. Các
view lá vẽ trong hình chữ nhật mà chúng điều khiển và đáp ứng lại các hành
động người dùng trực tiếp ở khoảng trống này. Do đó, các view là nơi mà các
tương tác của activity với người dùng diễn ra. Ví dụ một view có thể hiển thị một
hình ảnh nhỏ và khởi tạo một hoạt động khi người dùng nhấn vào hình ảnh đó.
Android có một số view đã xây dựng sẵn mà bạn có thể sử dụng - gồm có các
buttons, text fields, scroll bars, menu items, check boxes….
Một cây phân cấp view được đặt trong một cửa sổ của activity bằng
phương thức Activity.setContentView(). Content view là đối tượng View ở gốc
của cây phân cấp.
Class cơ sở Activity định nghĩa một loạt các sự kiện mà điều chỉnh vòng
đời của một hoạt động. Class Activity định nghĩa các sự kiện sau đây:
- onCreate(): Được gọi khi hoạt động được tạo ra lần đầu tiên.
- onStart(): Được gọi khi hoạt động trở nên hữu hình so với người dùng.
- onResume():Được gọi khi hoạt động bắt đầu tương tác với người sử dụng.
- onPause(): Được gọi để dừng các hoạt động hiện tại và nối lại các hoạt
động trước đó.
- onStop():Được gọi khi hoạt động không còn hiển thị với người dùng.
- onDestroy():Được gọi trước khi hoạt động bị phá hủy bởi hệ thống (bằng
tay hoặc bằng hệ thống để bảo tồn bộ nhớ).
- onRestart(): Được gọi khi hệ thống đã được dừng lại và khởi động lại
một lần nữa.

17



Intent:

Hình 1.6: Vòng đời hoạt động của 1 ứng dụng Android
Là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một
Activity. Là cầu nối giữa các Activity: Ứng dụng Android thường bao gồm nhiều
Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc
khác nhau. Intent chính là người đưa thư, giúp các Activity có thể triệu gọi cũng
như truyền các dữ liệu cần thiết tới một Activity khác. Điều này cũng giống như
việc di chuyển qua lại giữa các Forms trong lập trình Windows Form.

18


Hình 1.7: Quá trình hoạt động của Itent
1.3.1.2. Broadcast Reveive
Một Broadcast Rreceiver là một thành phần không làm gì ngoài việc nhận
và đáp lại các thông báo broadcast. Nhiều broadcast khởi đầu trong mã hệ thống ví dụ như thông báo múi giờ thay đổi, pin yếu, ảnh đã được chụp, hay người
dùng đã thay đổi ngôn ngữ … Các ứng dụng có thể tạo ra các broadcast, chẳng
hạn để ứng dụng khác biết được một số dữ liệu đã được tải về thiết bị và sẵn sàng
cho việc sử dụng chúng.
Một ứng dụng có thể có một số Broadcast Receiver để đáp lại bất cứ thông
báo nào mà nó cho là quan trọng. Tất cả các receiver mở rộng từ lớp cơ sở
BroadcastReceiver.
Broadcast Receiver không hiển thị một giao diện người dùng. Tuy nhiên
chúng có thể bắt đầu một activity để đáp lại thông tin mà chúng nhận, hay chúng
có thể sử dụng NotificationManager để cảnh báo người dùng. Notifications có
thể lấy sự chú ý của người dùng bằng nhiều cách, lóe sáng đèn sau, rung, tạo ra
âm thanh,…. Chúng thường lấy một biểu tượng bền vững trong thanh trạng thái,

cái mà người dùng có thể mở để lấy thông điệp.
1.3.1.3. Content Provider
Một content provider tạo ra một tập cụ thể các dữ liệu của ứng dụng khả
dụng cho các ứng dụng khác. Dữ liệu có thể được lưu trữ trong hệ thống file,
trong một cơ sở dữ liệu SQLite, hay trong một cách khác nào đó. Content
provider mở rộng lớp cơ sở ContentProvider để cài đặt một tập các chuẩn các
phương thức cho phép các ứng dụng khác đạt được và lưu trữ dữ liệu của kiểu
mà nó điều khiển. Tuy nhiên, các ứng dụng không gọi trực tiếp các phương thức
19


này, chúng sử dụng một đối tượng ContentResolver và gọi các phương thức của
nó. Một ContentResolver có thể nói chuyện với bất cứ content provider nào,
chúng cộng tác với provider để quản lý giao tiếp liên tiến trình.
1.3.1.4. Manifest File
Trước khi Android có thể khởi động một thành phần ứng dụng, nó phải
biết rằng thành phần đó tồn tại. Vì vậy, ứng dụng khai báo những thành phần của
mình trong một manifest file được gắn vào Android package, file.apk này cũng
giữ chứa mã của ứng dụng và các tài nguyên.
Manifest file là một file XML có cấu trúc và thường được đặt tên là
AndroidManifest.xml cho mọi ứng dụng. Nó thực hiện một số bổ sung để khai
báo các thành phần của ứng dụng, như là nêu tên các thư viện ứng dụng cần đến,
và xác định các quyền hạn của ứng dụng muốn được cấp.
Ví dụ như nó khai báo các Activity trong chương trình của chúng ta, khi
khởi động chương trình thì Activity nào sẽ được thực hiện đầu tiên, các quyền
truy cập Internet, SDCard, hay các vấn đề về gửi nhận tin nhắn, cuộc gọi...
1.3.1.5. Giao diện người dùng trong Android
Trong một ứng dụng Android, giao diện người dùng được xây dựng bằng
cách sử dụng View và ViewGroup đối tượng. Có nhiều loại quan điểm và các
nhóm view, mỗi một trong số đó là hậu duệ của lớp View. View objects là các

đơn vị cơ bản của biểu hiện giao diện người dùng trên nền tảng Android. Các
class xem như là cơ sở phục vụ cho class con được gọi là "widget", trong đó cung
cấp đầy đủ các đối tượng thực hiện giao diện, giống như các lĩnh vực văn bản và
nút. Class ViewGroup phục vụ như là cơ sở cho lớp con được gọi là " layouts",
cung cấp các loại khác nhau của kiến trúc bố trí, như linear, tabular và relative.
1.3.2. Các thành phần trong giao diện Widget
Có rất nhiều cách bố trí giao diện. Sử dụng nhiều hơn và các loại khác
nhau của các view group, bạn có thể cấu trúc views con và view groups trong vô
số cách. Xác định các nhóm xem được cung cấp bởi Android (gọi là layouts) bao
gồm LinearLayout, RelativeLayout, TableLayout, GridLayout và khác. Mỗi cung
cấp một bộ duy nhất của các thông số bố trí được sử dụng để xác định vị trí của

20


views con và cơ cấu layout Để tìm hiểu về một số các loại khác nhau của các
view group được sử dụng cho một layout, đọc Giao diện đối tượng thường gặp.
Widget là một object View phục vụ như một giao diện để tương tác với
người dùng. Android cung cấp một tập các widgets thực hiện đầy đủ, giống như
các button, Checkbox, và text-entry, do đó bạn có thể nhanh chóng xây dựng
giao diện người dùng của bạn. Một số widgets được cung cấp bởi Android phức
tạp hơn, giống như một date picker, clock, và zoom controls. Nhưng nó không
giới hạn trong các loại widgets được cung cấp bởi các nền tảng Android.
1.3.3. Bắt sự kiện trong Android
Khi đã thêm một số Views/widgets đến giao diện. Để được thông báo về
UI events người dùng, cần phải làm một trong hai điều: Xác định một sự kiện
nghe và đăng ký nó với các View. Đây là cách lắng nghe sự kiện. Các class View
có một phương pháp gọi là On<something>().
Ví dụ: View.OnClickListener (để xử lý "nhấp chuột" trên một View),
View.OnTouchListener ( để xử lý các sự kiện màn hình cảm ứng trong một

View), và View.OnKeyListener (để xử lý thiết bị ép quan trọng trong một View).
Vì vậy nếu muốn View được thông báo khi nó là " clicked" (chẳng hạn như khi
một nút được chọn), thực hiện và xác định OnClickListener của nó gọi method
onClick() (nơi thực hiện các hành động sau khi nhấp chuột), và đăng ký nó vào
Xem với setOnClickListener().
1.4. Hệ quản trị CSDL SQLite
Mỗi ứng dụng đều sử dụng dữ liệu, dữ liệu có thể đơn giản hay đôi khi là
cả 1 cấu trúc. Trong Android thì hệ cơ sở dữ liệu được sử dụng là SQLite
Database, đây là hệ thống mã nguồn mở được sử dụng rộng rãi trong các ứng
dụng (Mozilla Firefox sử dụng SQLite để lưu trữ các dữ liệu về cấu hình, iPhone
cũng sử dụng cơ sở dữ liệu là SQLite).
Trong Androidd, cơ sở dữ liệu mà bạn tạo cho 1 ứng dụng thì chỉ ứng
dụng đó có quyền truy cập và sử dụng, các ứng dụng khác thì không. Khi được
tạo, cơ sởdữ liệu SQLite được chứa trong thư mục:
/data/data//databases.

21


1.4.1. Giới thiệu về SQLite
 SQLite là một SQL embedded database engine. SQLite không có
server, nó đọc và ghi dữ liệu trực tiếp xuống file.
 Định dạng file của SQLite là cross-platform. Ta có thể sao chép, sử
dụng dữ liệu ở bất cứ hệ điều hành nào.
 SQLite rất nhẹ, kích thước tối đa cỡ 250KB. SQLite thích hợp cho các
ứng dụng chạy trên điện thoại di động, pda hay các thiết bị có bộ nhớ nhỏ.
 SQLite rất ổn định
 SQLite hoàn toàn miễn phí và mã mở
 SQLite hỗ trợ ngôn ngữ SQL với đầy đủ table, trigger, view,
transactional, index...

 Chương trình viết bằng SQLite khi cài đặt không cần phải cài thêm
CSDL, có thể đem chạy bất cứ đâu
Ưu điểm:
 Tin cậy: các hoạt động transaction (chuyển giao) nội trong cơ sở dữ liệu
được thưc hiện trọn vẹn, không gây lỗi khi xảy ra sự cố phần cứng.
 Tuân theo chuẩn SQL92 (chỉ có một vài đặc điểm không hỗ trợ).
 Không cần cài đặt cấu hình.
 Kích thước chương trình gọn nhẹ.
 Thực hiện các thao tác đơn giản nhanh hơn các hệ thống cơ sở dữ liệu
khách/chủ.
 Không cần phần mềm phụ trợ.
 Phần mềm tự do với mã nguồn nhỏ, được chú thích rõ ràng.
Nhược điểm:
 Max_db_size là bao nhiêu? Nếu theo cơ chế lưu toàn bộ data trên 1 file
thì chạy trên windows sẽ bị giới hạn 2GB -> 4GB tùy thuộc dùng FAT32 hay
NTFS.
 Cho phép nhập kiểu dữ liệu động – dynamically typed. VD: có thể chèn
1 dữ liệu kiểu string vào 1 cột column kiểu integer.
 Chưa hỗ trợ foreign key.

22


 Chưa hỗ trợ các lệnh alter table: drop column, alter column, add
constraint.
 Nested transactions.
Cácbinding (Các gói kèm theo)
 Cũng như các thư viện nguồn mở nói chung, SQLite được phát triển
các binding (gói kèm) các ngôn ngữ thông dụng: PHP, Perl, Java, Python, Ruby,
Tcl...

 SQLite là một cơ sở dữ liệu đơn giản, nhanh chóng, không cần giao
thức server/client, tất cả db được lưu trong duy nhất một file. SQLite hỗ trợ khá
nhiều các lệnh của SQL cơ bản. SQLite rất thích hợp cho các site nhỏ, không cần
các cơ sở dữ liệu phức tạp....
 SQLite có API cho nhiều ngôn ngữ lập trình: C/C++, PHP, Perl,
Python, Java, Ruby, Tcl,...
1.4.2. Các bước thực hiện
1. Tạo 1 CSDL (thông thường chỉ cần làm 1 lần).
2. Mở CSDL đó.
3. Thêm giá trị vào trong table.
4. Truy vấn.
 ĐóngCSDL.
a) Tạo CSDL
Add 1 class DBAdapter để xử lý tất cả các thao tác liên quan đến CSDL

23


Tạo 1 lớp bên trong DBAdapter được extend từ lớp SQLiteOpenHelper,
override 2 phương thức onCreate() và onUpgrade() để quản lý việc tạo CSDL và
version của CSDL đó

b) Mở CSDL đó

c) Thêm giá trị vào trong tables

d) Truy vấn
Có thể lấy toàn bộ data hoặc có thể lấy data theo ID ( tiện cho việc chỉnh
sửa hay cập nhật thông tin của từng bản ghi).


24


Ngoài ra còn nhiều thao tác như sửa, xóa,update…tất cả chức năng đều
được cung cấp bởi SQLite Database.
e) Đóng CSDL

1.4.3. Sử dụng CSDL
Để test CSDL vừa tạo, có thể thêm 1 vài dòng code để thêm 1 user và hiển
thị CSDL lên màn hình thông qua lớp Activity ban đầu.
Create 1 user thông qua câu lệnh :
mDB.createUser("Username");

1.5. Phân tích XML trong Android
1.5.1. Khái niệm
XML (viết tắt từ tiếng Anh Extensible Markup Language, “Ngôn ngữ
Đánh dấu Mở rộng”) là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị,
để tạo ra các ngôn ngữ đánh dấu khác. Đây là một tập con đơn giản của SGML,
có khả năng mô tả nhiều loại dữ liệu khác nhau. Mục đích chính của XML là đơn
giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệ

25


×