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

Xây dựng ứng dụng tổng hợp tin tức từ các trang tin và chương trình đọc tin trên thiết bị di độ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 (2.1 MB, 77 trang )










XÂY DNG NG DNG TNG HP TIN TC
T TRÌNH
C TIN TRÊN THIT B ANDROID




 ThS. TR
 PHAN TH HNG NGOAN
 51TH1
MSSV: 51131000





LI M U
Công nghệ trên thế giới đang phát triển từng ngày với tốc độ vũ bão. Xu
hướng hiện nay của ngành công nghệ thông tin không chỉ gói gọn trong việc làm việc
với các ứng dụng trên máy tính mà đang chuyển dịch dần thành công nghệ thông tin
và truyền thông. Những chiếc máy tính để bàn trở thành những chiếc laptop cơ động.
Chưa dừng lại ở đó, con người lại kết hợp máy tính với chiếc điện thoại di động để


cho ra những thiết bị di động thế hệ mới, có sức mạnh của chiếc máy tính lại nhỏ
gọn, cơ động.
Đi kèm với sự phát triển của phần cứng như vậy, phần mềm cũng đang phát
triển nhanh chóng để phù hợp với các thiết bị thế hệ mới. Quan trọng nhất đó chính là
các hệ điều hành cho các thiết bị di động. Nổi bật nhất gần đây là hệ điều hành hành
Android của Google. Nó được đánh giá là một hệ điều hành tốt, nhiều tiềm năng phát
triển và sẽ có những bước nhảy vọt trong thời gian tới.
Nhờ những thiết bị di dộng mạnh mẽ, nhu cầu của con người đối với các thiết
bị di động cũng không còn giới hạn trong việc nghe gọi và nhắn tin như trước, mà
vươn cao hơn tới các nhu cầu giải trí, cập nhật thông tin, nhất là trong thời đại bùng
nổ thông tin hiện nay. Từ nhu cầu đó, dưới sự hướng dẫn của thầy ,
em đã chọn đề tài “Xây dựng ứng dụng tổng hợp tin tức từ các trang tin và chương
trình đọc tin trên thiết bị Android” làm đề tài tốt nghiệp.

LI C
Trải qua bốn tháng thực hiện, vận dụng những gì đã được học và cũng học
thêm được nhiều điều, đồ án tốt nghiệp cũng đã hoàn tất. Để có được kết quả này, đó
không phải là công sức của cá nhân em, mà còn có sự hỗ trợ hết mình từ gia đình,
thầy cô và bạn bè. Trước hết, em xin gửi lời tri ân sâu sắc đến tất cả những “người
đồng hành” đã luôn ở bên em trong suốt thời gian qua.
Lời cảm ơn đầu tiên, em xin gửi đến những người thân yêu trong gia đình,
những người luôn luôn ủng hộ em không chỉ trong thời gian qua mà còn cả chặng
đường tương lai phía trước.
Kế đến, em xin gửi lời cảm ơn chân thành nhất đến thầy Trần Minh Văn, thầy
đã tận tình hướng dẫn em trong suốt quá trình thực hiện đồ án.
Bên cạnh đó, em cũng xin bày tỏ lời cảm ơn sâu sắc đến những thầy cô giáo đã
giảng dạy em trong hành trình bốn năm, những kiến thức mà em nhận được trên
giảng đường đại học sẽ là hành trang giúp em vững bước trên con đường em sắp đi
qua.
Cuối cùng, em muốn gửi lời cảm ơn sâu sắc đến tất cả bạn bè, những người

luôn kịp thời động viên và giúp đỡ em vượt qua những khó khăn, cũng là những
thành tố quan trọng mang đến cho em những ý nghĩa tốt đẹp của cuộc đời sinh viên.
Em xin chân thành cảm ơn!

Nha Trang, ngày 26 tháng 06 năm 2013

Phan Thị Hồng Ngoan
























































LI M U 1
NG QUAN 1
t v 1 1.1.
Mc tiêu nghiên cu 2 1.2.
Phm vi nghiên cu 2 1.3.
1.3.1. ng nghiên cu 2
1.3.2. Ph tài 2
 U HÀNH ANDROID 3
Gii thiu h u hành Android 3 2.1.
Nha h u hành Android 3 2.2.
 tr sn trong h u hành Android 4 2.3.
Kin trúc và các thành phn trong h u hành Android 5 2.4.
2.4.1. Linux kernel (nhân Linux) 5
2.4.2. Libraries 5
2.4.3. Android runtime 6
2.4.4. Application framework 6
2.4.5. Applications 7
Các khái nin trong lp trình ng dng Android 7 2.5.
2.5.1. Activity 7
2.5.2. Service 10
2.5.3. Content provider 10
2.5.4. Broadcast Receiver 10
2.5.5. View 11
2.5.6. Intent 11
Các thành phn trong mt project ng dng Android 12 2.6.
2.6.1. AndroidManifest.xml 12
2.6.2. File R.java 14
2.6.3. c src 14
2.6.4.  mc res 15

 16
c v công ngh XML 16 3.1.
3.1.1. Lch s i chun XML, XML là gì? 16
3.1.2. Cu trúc ca file XML và tài liu XML 16
3.1.3. m ca XML 17
3.1.4. So sánh XML và HTML 18
c v JSON 18 3.2.
3.2.1. Gii thiu 18
3.2.2. Các kiu d liu 19
3.2.3. So sánh JSON vi XML 19
SQLite 20 3.3.
EB SERVICE 22
Tng quan v Web Service 22 4.1.
4.1.1. Khái nim 22
4.1.2. im ca Web service 22
4.1.3. m ca Web service 22
4.1.4. m 22
4.1.5. im 23
Tng quan v REST 23 4.2.
4.2.1. Gii thiu REST 23
4.2.2. c HTTP 24
4.2.3. Các nguyên tc ca kin trúc RESTful 24
4.2.4. RESTful Web service 25
JAX-RS và Jersey 25 4.3.
4.3.1. Gii thiu JAX-RS 25
4.3.2. Các annotation ca JAX-RS 26
4.3.3. Gii thiu Jersey 27
Xây dng mn vi JAX-RS Jersey 27 4.4.
4.4.1. Yêu cu 27
4.4.2. Xây dn 27

4.4.3. Chy th Web service 30
 RSS, ATOM 32
RSS 32 5.1.
5.1.1. RSS là gì ? 32
5.1.2. Nhm mnh ca RSS 32
5.1.3. Cu trúc ca file RSS 33
Atom 35 5.2.
5.2.1. Gii thiu 35
5.2.2. So sánh Atom vi RSS 2.0 36
5.2.3. Ví d ca Atom 1.0 37
CHNG DC TIN TC 38
Kin trúc tng th ca ng dng 38 6.1.
Web service thu thp tin tc 38 6.2.
6.2.1. Mô hình thc th kt hp 38
6.2.2. Mô hình vt lý d liu 39
6.2.3. Hong ca Web service 48
6.2.4. S dng Web service 48
c báo NewsFeed trên Android 51 6.3.
6.3.1. Mô hình thc th kt hp 51
6.3.2. Mô hình vt lý d liu 52
6.3.3. Hong cc tin tc 57
6.3.4. Gii thiu chng dn s dng 58
T LUNG PHÁT TRIN 66
TÀI LIU THAM KHO 67



Hình 2.1. Kin trúc và các thành phn trong h u hành Android 5
i ca mt Activity 8
Hình 3.1. Cu trúc ca mt tài liu XML 17

Hình 3.2. Giao din ca SQLite manager trong firefox. 21
Hình 4.1. To mt Dynamic Web Project 28
Hình 4.2. Kt qu truy vn Web service t trình duyt 31
Hình 5.1. Ví d c file RSS b 35
Hình 6.1. Kin trúc tng th ca ng dng 38
Hình 6.2. Mô hình thc th kt hp ca Web service 39
Hình 6.3. Mô hình vt lý d liu ca Web service 40
Hình 6.4. Kt qu truy vn t trình duyt. 50
Hình 6.5. Mô hình thc th kt hp ca client 51
Hình 6.6. Mô hình vt lý d liu ca client 52
Hình 6.7. Giao din chính c 57
Hình 6.8. Các thành phn trên giao din chính 58
Hình 6.9. Các thao tác trên giao din thêm ch  59
Hình 6.10. Các thao tác trên giao din thêm báo 60
Hình 6.11. Các thao tác trên giao din qun lý chuyên mc báo 61
Hình 6.12. Các thao tác trên giao din danh sách tin 62
Hình 6.13. Các thao tác trên giao din tin chi tit 63
Hình 6.14. Các thao tác trên giao din bình lun 64
Hình 6.15. Giao din xem nh 65

Bng 3.1. So sánh XML và HTML 18
Bng 4.1. Các annotation ca JAX-RS 27





CSDL
Cơ sở dữ liệu
CSS

Cascading Style Sheets - tập tin định kiểu theo tầng
SOAP
Simple Object Access Protocol
WTP

IETF
Internet Engineering Task Force
RFC 4627 hoặc
RFC 3339 …
Request for Comments - Đề nghị duyệt thảo và bình luận.
1

NG QUAN
t v 1.1.
Ngày nay, các trang báo mạng ngày càng nhiều, vừa đa dạng về lượng
chuyên mục, chủ đề, cũng như phong phú trong nội dung, cập nhật từng phút, đáp
ứng rất tốt nhu cầu tin tức của người đọc. Các trang báo mạng nổi bật hiện nay có
thể kể đến như Dân Trí (dantri.com.vn), Tuổi trẻ (tuoitre.com.vn) hay 24H
(24h.com.vn),
Tuy nhiên, việc đọc báo mạng bằng điện thoại di động qua trình duyệt web
có khá nhiều hạn chế như:
 Trang báo chứa nhiều thông tin không cần thiết (quảng cáo, header, ).
 Màn hình điện thoại kích thước nhỏ không phù hợp để hiển thị cả trang báo.
 Không lưu được tin tức để đọc lại khi không có kết nối mạng,
Từ những hạn chế trên, việc xây dựng một ứng dụng đọc báo riêng trên điện
thoại được đặt ra. Một số ứng dụng đọc báo trên thị trường hiện nay có chất lượng
khá tốt có thể kể đến như Báo Mới, Pega,
Việc lấy tin tức từ trang tin được hầu hết các báo mạng hiện nay hỗ trợ bằng
công nghệ RSS, cho phép người sử dụng nhanh chóng lấy được danh mục tin tức
mới nhất. Tuy nhiên, việc tải cũng như xử lý RSS ở trên điện thoại sẽ gây tiêu tốn

tài nguyên, ứng dụng chậm đáp ứng nhất là với điện thoại cấp thấp. Từ đó, vấn đề
đặt là ra cần xây dựng một server đảm nhận việc thu thập tin tức, ứng dụng sẽ truy
vấn dữ liệu trực tiếp từ server.
Một số phương pháp trao đổi dữ liệu giữa server và client hiện nay như
socket, HTTP request/response. Và phương pháp trao đổi dữ liệu bằng giao thức
HTTP thông qua một RESTful Web service được chọn bởi những ưu điểm như:
 Dễ dàng thao tác, xử lý ở cả client và server.
 Truy vấn dữ liệu bằng các phương thức HTTP, hỗ trợ nhiều định dạng dữ
liệu khác nhau, trong đó nổi bật nhất là JSON và XML.
Từ những vấn đề đặt ra kể trên, ý tưởng xây dựng một RESTful Web service
thực hiện thu thập tin tức và ứng dụng đọc báo sử dụng Web service này trên điện
thoại Android đã ra đời.
2

Mc tiêu nghiên cu 1.2.
Những mục tiêu đặt ra khi nghiên cứu thực hiện đề tài:
 Nắm chắc lý thuyết phân tích thiết kế hệ thống.
 Hoàn thiện kỹ năng lập trình trên môi trường Java cũng như Android SDK
trên Java.
 Xây dựng một Java RESTful Web service thu thập tin tức từ các báo mạng
và đáp ứng các yêu cầu từ người dùng.
 Xây dựng một ứng dụng đọc báo sử dụng Web service là nguồn cung cấp tin
trên điện thoại Android. Ứng dụng đáp ứng nhu cầu đọc tin tức cơ bản, cung cấp tin
theo các chủ đề, báo, chuyên mục.
Phm vi nghiên cu 1.3.
1.3.1. ng nghiên cu
 Android SDK.
 RESTful Web service.
 XML, JSON, SQLite và RSS.
 Ngôn ngữ lập trình Java.

1.3.2. Ph tài
1.3.2.1. Phi dùng
Ứng dụng được xây dựng phổ biến cho mọi đối tượng, tầng lớp có nhu cầu
cập nhật tin tức, có khả năng sử dụng ứng dụng trên điện thoại Android.
1.3.2.2. Phm vi ch
Web service đảm bảo chức năng:
 Thu thập tin tức từ các trang báo tự động.
 Nhận và đáp ứng các truy vấn dữ liệu từ người dùng.
Ứng dụng Android đảm bảo chức năng:
 Nhận yêu cầu lấy tin tức từ người dùng và gửi yêu cầu cho Web service.
 Nhận kết quả từ Web service, phân tích, lưu trữ và hiển thị cho người dùng.
3

C 2. H U HÀNH ANDROID
Gii thiu h u hành Android 2.1.
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho
các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính
bảng. Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ trợ tài
chính từ Google và sau này được chính Google mua lại vào năm 2005. Như một
phần chiến lược của mình để lấn sâu vào lĩnh vực di động, Google đã mua về toàn
bộ quá trình phát triển cũng như đội phát triển nó. Đây là con át chủ bài của Google
để cạnh tranh thị phần hệ điều hành di động với Apple.
Android là mã nguồn mở và miễn phí, điều này tương đương với việc bất cứ
ai muốn sử dụng Android có thể sử dụng bằng cách tải về mã nguồn android đầy đủ.
Hơn nữa các nhà cung cấp (thường là những nhà phát triển phần cứng) có thể thêm
phần mở rộng và tùy biến cho Android để phân biệt sản phẩm của họ với sản phẩm
của những người khác. Điều này làm cho mô hình phát triển Android trở nên hấp
dẫn và do đó khơi dậy sự quan tâm của nhiều nhà cung cấp. Những nhà sản xuất coi
Android như một giải pháp – họ sẽ tiếp tục thiết kế phần cứng của riêng mình và sử
dụng Android như một hệ điều hành chính.

Ưu điểm chính của việc áp dụng Android là nó cung cấp một cách tiếp cận
thống nhất để phát triển ứng dụng. Các nhà phát triển chỉ cần phát triển cho Android
và các ứng dụng của họ có thể chạy trên nhiều thiết bị khác nhau, miễn là các thiết
bị được hỗ trợ bằng cách sử dụng Android. Trong thế giới smartphone, ứng dụng là
một phần quan trọng nhất của chuỗi thành công. Do đó các nhà sản xuất thiết bị coi
Android như là hy vọng tốt nhất để thách thức sự tấn công của Apple.
Nha h u hành Android 2.2.
 Application framework: cho phép sử dụng lại và thay thế các thành phần
trong lập trình ứng dụng.
 Dalvik virtual machine: tối ưu hóa cho thiết bị di động.
 Intergrated browser: trình duyệt tích hợp, dựa trên cơ chế WebKit mã
nguồn mở.
 SQLite: cơ sở dữ liệu trong môi trường di động.
 Media support: hỗ trợ các định dạng audio, video và hình ảnh thông dụng.
4

 GSM Telephony: mạng điện thoại di động (phụ thuộc vào phần cứng).
 Bluetooth, EDGE, 3G và WiFi: các chuẩn kết nối dữ liệu (phụ thuộc vào
phần cứng).
 Camera, GPS, la bàn : (phụ thuộc vào phần cứng).
 : bao gồm thiết bị mô phỏng, công cụ cho
việc dò tìm lỗi, bộ nhớ và định hình hiệu năng và một plugin cho Eclipse IDE.
 tr sn trong h u hành Android 2.3.
Các tính năng được hỗ trợ tùy thuộc vào cấu hình phần cứng và phần mềm.
 Storage: Sử dụng SQLite, một cơ sở dữ liệu quan hệ nhẹ cho việc lưu trữ dữ
liệu.
 Connectivity: Hỗ trợ GSM/EDGE, IDEN, CDMA, EV-DO, UMTS,
Bluetooth (bao gồm AD2P và AVRCP), Wifi, LTE và WiMAX.
 Messaging: hỗ trợ cả SMS và MMS.
 Web browser: Dựa trên mã nguồn mở Webkit, cùng với công nghệ

JavaScrip V8 của Chrome.
 Media support: Bao gồm hỗ trợ các phương tiện truyền thông sau: H.263,
H.264 (Trong 3GP hoặc MP4 container), MPEG-4 SP, AMR, AMR-WB (3GP
container), AAC, HE-AAC (MP4 hoặc 3GP container), MP3, MIDI, Ogg Vorbis,
WAV, JPEG, PNG, GIF và BMP.
 Hardware support: Accelerometer Sensor, Camera, Digital Compass,
Proximity Sensor và GPS.
 Multi-touch: Hỗ trợ màn hình cảm ứng đa điểm.
 Multi-tasking: Hỗ trợ ứng dụng đa tác vụ.
 Flash support: Android 2.3 hỗ trợ Flash 10.1.
 Tethering: Hỗ trợ kết nối internet không dây hoặc có dây.
5

Kin trúc và các thành phn trong h u hành Android 2.4.

Hình 2.1. Kiến trúc và các thành phần trong hệ điều hành Android
2.4.1. Linux kernel (nhân Linux)
Kernel Linux hoạt động như một lớp trừu tượng hóa giữa phần cứng và tầng
dưới của phần mềm. Lớp này chứa tất cả các thiết bị mức thấp điều khiển các thành
phần phần cứng khác nhau của một thiết bị Android.
2.4.2. Libraries
Libraries bao gồm một tập hợp các thư viện lập trình chứa mã lệnh cung cấp
những tính năng và thao tác chính trên hệ điều hành. Một số các thư viện cơ bản
được liệt kê dưới đây:
 System C library: BSD-derived triển khai các thư viện hệ thống ngôn ngữ C
chuẩn, được nhúng vào các thiết bị dựa trên hệ điều hành Linux.
 Media Libraries: Dựa trên PacketVideo's OpenCORE: thư viện này hỗ trợ
cho việc chơi nhạc, quay phim, chụp hình theo các định dạng file MPEG4, H.264,
MP3, AAC, AMR, JPG và PNG.
6


 Surface Manager: Quản lý truy cập đến các hệ thống con hiển thị cũng như
các lớp đồ họa 2D, 3D từ tầng ứng dụng.
 LibWebCore: Thư viện được dùng để tạo nên thành phần webview trong
Android và có thể nhúng được vào nhiều ứng dụng.
 SGL: Thư viện hỗ trợ đồ hoạ 2D.
 3D libraries: Thư viện đồ họa 3D.
 FreeType: bitmap và vector font rendering.
 SQLite: Một cơ sở dữ liệu nhỏ được dùng cho các thiết bị cầm tay có bộ nhớ
hạn chế. SQLite không có quan hệ như các cơ sở dữ liệu khác.
2.4.3. Android runtime
Tại cùng một tầng với Libraries, Android runtime cung cấp một bộ lõi thư
viện cho phép các nhà phát triển viết các ứng dụng Android bằng cách sử dụng
ngôn ngữ lập trình java. Android runtime cũng bao gồm các máy ảo Dalvik, cho
phép mọi ứng dụng Android chạy trong tiến trình riêng của mình. Dalvik là một
máy ảo chuyên dụng được thiết kế đặc biệt cho Android và tối ưu hóa cho các thiết
bị điện thoại di động với giới hạn bộ nhớ và CPU.
2.4.4. Application 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.
Nhà phát triển có thể truy cập vào các API đượ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 API.
Đưa ra những khả năng khác nhau của hệ điều hành Android vào ứng dụng để sử
dụng chúng trong các ứng dụng của mình.
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:
các View (dùng để hiển thị thông tin và để người dùng thao tác), Content Provider
(để chia sẻ dữ liệu giữa các ứng dụng), Resource Manager (truy xuất tài nguyên

7

không mã nguồn), Notifycation Manager (hiển thị các thông báo), Activity Manager
(quản lý chu trình sống của ứng dụng và điều hướng Activity).
2.4.5. Applications
Tại lớp trên cùng sẽ là các ứng dụng cho Android (như điện thoại, danh bạ,
trình duyệt,…) cũng như các ứng dụng được tải về và cài đặt từ Android Market
hay bất kỳ ứng dụng nào bạn viết được tại tầng này.
Các khái nin trong lp trình ng dng Android
2.5.
2.5.1. Activity
Là thành phần tối quan trọng của bất kỳ một ứng dụng Android nào. Thuật
ngữ activity chỉ một việc mà người dùng có thể thực hiện trong một ứng dụng
Android. Do gần như mọi activity đều tương tác với người dùng, lớp activity đảm
nhận việc tạo ra một cửa sổ (window) để người lập trình đặt lên đó một giao diện UI
với setContentView(View). Một activity có thể mang nhiều dạng khác nhau:
Một cửa sổ toàn màn hình (full screen window), một cửa sổ floating (với
windowsIsFloating) hay nằm lồng bên trong 1 activity khác (với ActivityGroup).
Để có thể sử dụng trong ứng dụng, mọi activity đều phải được khai báo trong
tệp AndroidManifest.xml với một thẻ <activity>.
i ca mt Activity
Toàn bộ trạng thái của Activity được biểu diễn trong sơ đồ sau:
8


Hình 2.2. Vòng đời của một Activity
 Các activity được quản lí trong một stack chứa activity (Cơ chế vào trước ra
sau):
 Khi ứng dụng được mở lên thì activity chính sẽ được tạo ra, nó sẽ được
thêm vào stack.

 Khi một activity mới được khởi tạo, nó sẽ được đặt lên trên cùng của
stack. Lúc này chỉ có duy nhất activity trên cùng là hiển thị nội dung đến
9

người dùng. Tất cả các activity còn lại đều chuyển về trạng thái dừng hoạt
động.
 Khi một activity bị đóng nó sẽ bị loại khỏi stack. Lúc này activity nằm
dưới đó sẽ chuyển từ trạng thái tạm dừng sang trạng thái hoạt động.
 Một activity có bốn trạng thái:
 Active hay Running: Activity đang chạy trên màn hình.
 Paused: Khi một Activity mất focus nhưng vẫn đang chạy trên màn hình
(Activity bị một activity trong suốt (transparent) hoặc một Activity không
chiếm toàn bộ màn hình thiết bị (non-full-sized) đè lên). Tuy vẫn còn tồn
tại, nhưng các “paused activity” này sẽ bị hệ thống bắt chấm dứt khi thiếu
bộ nhớ trầm trọng.
 Stopped: Khi một activity bị che khuất hoàn toàn bởi một activity khác.
Tuy vẫn tồn tại, nhưng các “stopped activity” này sẽ thường xuyên bị hệ
thống bắt chấm dứt để dành bộ nhớ cho các công việc khác.
 Killed hay Shutdown: Khi một activity đang Paused hay Stopped,
hệ thống sẽ xóa activity ấy ra khỏi bộ nhớ.
 Ba vòng đời quan trọng trong Activity:
      : Diễn ra từ lần gọi
onCreate(Bundle) đầu tiên và kéo dài tới lần gọi onDestroy() cuối cùng.
 : Diễn ra từ khi gọi onStart() và
kéo dài tới khi gọi onStop(). Ở vòng đời này, activity được hiển thị trên
màn hình mặc dù có thể nó không thể tương tác với người dùng (Activity
có thể bị đè bởi một activity trong suốt hoặc một activity không chiếm
toàn bộ màn hình thiết bị (non-full-sized)). Giữa hai phương thức này cần
giữ lại các tài nguyên dùng để hiển thị nội dung lên màn hình activity.
VD: Bạn có thể đăng kí (register) một Broadcast Receiver để theo dõi

“những thay đổi” có ảnh hưởng đến phần giao diện của bạn trong phương
thức onStart() và hủy đăng kí (unregister) BroadcastReceiver trong
phương thức onStop(). Các phương thức onStart() và onStop() có thể được
gọi nhiều lần.
10

      : Diễn ra từ khi gọi
onResume() và kéo dài tới khi gọi onPause(). Ở vòng đời này, activity
nằm trên mọi activity khác và tương tác được với người dùng. Một
activity có thể liên tục thay đổi giữa hai trạng thái Paused và Resumed
(VD: Chẳng hạn khi thiết bị sleep).
2.5.2. Service
Service là một thành phần dùng để thực thi một công việc dưới dưới nền hệ
điều hành (công việc được thực thi ẩn với người dùng). Thành phần này được dùng
cho các công việc cần nhiều thời gian để thực thi hoặc dùng để điều khiển thực thi
các công việc từ xa bởi một tiến trình khác.
VD: Ứng dụng A chạy trên tiến trình pA kết nối đến ứng dụng B hiện đang
chạy trên tiến trình pB để yêu cầu B thực hiện một công việc nào đó.
2.5.3. Content provider
Một content provider dùng để quản lý việc chia sẻ một tập dữ liệu ứng dụng
nào đó. Bạn có thể lưu trữ dữ liệu trên file, trên SQLite database, trên web hoặc trên
bất kì nơi lưu trữ nào mà ứng dụng có thể truy xuất. Thông qua việc sử dụng
content provider một ứng dụng khác có thể truy vấn, chỉnh sửa tập dữ liệu đó.
VD: Ứng dụng Contact tích hợp sẵn trong Android cung cấp một content
provider dùng để quản lý danh sách contact trên ứng dụng. Bằng cách này, bất kì
chương trình nào cũng có thể truy xuất danh sách contact này mặc cho “nguyên tắc
đặc quyền tối thiểu” đã đề cập ở trên. (Lưu ý: Nếu không cung cấp một content
provider thì dữ liệu contact chỉ có thể được sử dụng bởi ứng dụng Contact và không
thể được truy xuất bởi ứng dụng nào khác).
2.5.4. Broadcast Receiver

Broadcast Receiver là một thành phần hồi đáp những tín hiệu được phát ra
trên toàn hệ thống. Có rất nhiều Broadcast Receiver được xây dựng sẵn trên hệ điều
hành Android.
VD: Có Broadcast Receiver dùng để bắt tín hiệu tắt màn hình, tín hiệu pin
yếu… Người phát triển có thể tự xây dựng một Broadcast Receiver để bắt các tín
hiện cần thiết cho ứng dụng. VD: Bắt tín hiệu để biết một dữ liệu nào đó đã được tải
về thiết bị và sẵn sàng để sử dụng. Mặc dù một Broadcast Receiver không hiển thị
11

giao diện cho người dùng quan sát nhưng nó có thể tạo các thông báo trên thanh
trạng thái. Trong một số trường hợp Broadcast Receiver có thể khởi động một
service để thực thi một số công việc nào đó.
2.5.5. View
Mỗi item trong một giao diện người dùng là một lớp con của lớp View
(android.view.View). Android SDK cung cấp một tập các view được xây dựng sẵn
có thể sử dụng để xây dựng một giao diện người dùng. Ví dụ điển hình các item
chuẩn như các lớp Button, CheckBox, ProgressBar và TextView. Các view cũng
được xem như là các widget. Các yêu cầu không được đáp ứng bởi các widget cùng
với SDK, các view mới có thể được tạo bằng cách kế thừa và mở rộng một lớp đã
tồn tại, hoặc tạo một thành phần mới hoàn toàn bằng cách tạo trực tiếp trên đầu lớp
View.
2.5.6. Intent
Một đối tượng Intent là một gói thông tin. Nó chứa thông tin có ích cho các
component tiếp nhận intent (chẳng hạn như các hành động được thực hiện và các dữ
liệu với hoạt động trên) cộng với các thông tin liên quan đến hệ thống Android (như
các chủng loại thành phần nên xử lý các intent và hướng dẫn làm thế nào với khởi
động một activity mục tiêu).
Ba trong số bốn loại thành phần chính của một ứng dụng Android (Activity,
Service, Broadcast Receiver) có thể được khởi động bởi một đối tượng Intent.
Trong đó đối tượng Intent có ý nghĩa gần giống như một đường dẫn đến một địa chỉ

web (URLs) mà hàng ngày mọi người vẫn sử dụng. Định dạng URLs được Tim
Berners phát minh để sử dụng trong giao thức Hypertext Transfer Protocol (HTTP).
Định dạng này là một hệ thống các động từ đi kèm các địa chỉ. Địa chỉ sẽ xác
định nguồn tài nguyên như Web page, hình ảnh Động từ sẽ xác định cần phải làm
cái gì với nguồn tài nguyên đó: GET để lấy dữ liệu về, POST để đưa dữ liệu lên để
thực thi một công việc nào đó. Khái niệm Intent cũng tương tự, Intent là một mô tả
trừu tượng của một hành động được thực thi. Trong đó đối tượng Intent sẽ xác định
thành phần nào (Activity, Service, Broadcast Receiver) sẽ được khởi động, dữ liệu
cũng như hành động cần thực thi với dữ liệu đi kèm.
VD: Để hiển thị thông tin của một contact. Ta cần tạo một đối tượng kiểu
Intent xác định hành động là “xem thông tin contact”, thành phần Android sẽ được
12

khởi động để thực thi hành động là activity “Contact details” của ứng dụng Contact
(Ứng dụng tích hợp sẵn trong hệ điều hành Android) và dữ liệu đi kèm sẽ là id của
contact cần xem thông tin.
Có thể sử dụng Intent để:
 Khởi động một Activity.
 Khởi động một Service.
 Kết nối đến một Remote service.
 Khởi động một Broadcast Receiver.
 Thực thi một câu truy vấn dữ liệu trên Content Provider.
Các thành phn trong mt project ng dng Android 2.6.
2.6.1. AndroidManifest.xml
Trước khi hệ điều hành Android có thể khởi động một thành phần
(Activity, Services, Broadcast Receiver) thì hệ thống phải biết thành phần này có
tồn tại hay không bằng cách đọc file AndroidManifest.xml của ứng dụng. Mỗi ứng
dụng phải khai báo mọi thành phần (Activity, Services, Broadcast Receiver) trong
file này và phải đặt ở thư mục gốc của ứng dụng.
Mỗi file manifest có những khai báo chứa thông tin về ứng dụng Android:

 Permission: Định danh xác định các quyền của người sử dụng như truy xuất
internet, truy xuất danh sách contact…
 Version: Xác định phiên bản API tối thiểu mà ứng dụng có thể thực thi.
Phiên bản API này tương ứng với các phiên bản của hệ điều hành Android.
 Application: Các tính năng phần cứng cần thiết cho ứng dụng như GPS,
camera, Bluetooth… Các bộ API liên kết sử dụng trong ứng dụng (VD: Google
map…).
Một file AndroidManifest.xml (do Eclipse tự tạo, khi lập trình tùy theo tình
huống ta thêm vào các tính năng) có cấu trúc như sau:


13

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="
package="com.firstproject"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="7" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".MynewprojectActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"

/>
</intent-filter>
</activity>
</application>
</manifest>

Trong đó manifest là thẻ chính. Thẻ gốc này sẽ có ít nhất một thẻ con là
application với các thuộc tính xác định icon của ứng dụng, tên ứng dụng…. Trong
thẻ application sẽ đặt các khai báo các thành phần tồn tại trong ứng dụng bằng cách
sử dụng các thẻ:
 <activity>: Khai báo một Activity.
 <service>: Khai báo một Service.
 <receiver>: Khai báo một Broadcast Reciever.
 <provider>: Khai báo một Content Provider.
Ngoài việc khai bao các thành phần tồn tại trong ứng dụng còn có các khai
báo:
 <supports-screens>: Khai báo loại màn hình mà ứng dụng hỗ trợ.
 <uses-configuration>: Khai báo phần cứng nhập liệu cần thiết cho ứng dụng
(VD: Bàn phím, trackball, phím bấm năm chiều…).
14

 <uses-feature>: Các tính năng phần cứng cần thiết cho ứng dụng.
 <uses-sdk>: Phiên bản API tối thiểu.
2.6.2. File R.java
File R.java là một file tự động sinh ra ngay khi tạo ứng dụng, file này được
sử dụng để quản lý các thuộc tính được khai báo trong file XML của ứng dụng và
các tài nguyên hình ảnh.
Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào
xảy ra làm thay đổi các thuộc tính trong ứng dụng. Chẳng hạn như, bạn kéo và thả
một file hình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính đường dẫn đến

file đó cũng sẽ được hình thành trong file R.java hoặc xoá một file hình ảnh thì
đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xoá.
Có thể nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cả
quá trình xây dựng ứng dụng.
Dưới đây là nội dung của một file R.java:
package com.hongngoan.newsfeed;

public final class R {
public static final class anim {
public static final int anim_zone=0x7f040000;
public static final int slide_in_from_bottom=0x7f040001;
public static final int slide_in_from_left=0x7f040002;
public static final int slide_in_from_right=0x7f040003;
public static final int slide_in_from_top=0x7f040004;
public static final int slide_out_to_bottom=0x7f040005;
public static final int slide_out_to_left=0x7f040006;
public static final int slide_out_to_right=0x7f040007;
public static final int slide_out_to_top=0x7f040008;
}
public static final class attr {
public static final int actionBarDivider=0x7f01002f;
public static final int actionBarSize=0x7f01002e;
public static final int SlidingMenu_viewBehind = 2;
};
}
2.6.3. c src
Thư mục này chứa các file mã nguồn của Java.
15

2.6.4. c res

Ở đây ta có thể lưu trữ các file tài nguyên như hình ảnh, các file XML để
định nghĩa các layout và hơn nữa. Trong thư mục này có các thư mục khác như
Drawable, Layout và Values.
 Drawable: Ở đây lưu trữ các file đồ họa khác nhau. Ta có thể nhìn thấy ba
loại thư mục drawable. Bởi vì có rất nhiều thiết bị Android với độ phân giải màn
hình khác nhau. Theo mặc định, có một số phiên bản của thư mục này như:
drawable-mdpi, drawable-hdpi, Nó được yêu cầu để thích ứng với các độ phân
giải màn hình khác nhau.
 Layout: Đây là nơi chứa các file XML layout. Các file layout là các file
XML trong đó định nghĩa các đối tượng Android khác nhau (chẳng hạn như
TextBox, Buttons, …) được tổ chức như thế nào trên màn hình.
 Values: Các file XML lưu trữ các giá trị chuỗi khác nhau (các title, label,…).

×