XÂY DNG NG DNG TNG HP TIN TC
T TRÌNH
C TIN TRÊN THIT B ANDROID
ThS. TR
PHAN TH HNG NGOAN
51TH1
MSSV: 51131000
LI 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 để
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
LI M U 1
NG QUAN 1
t v 1 1.1.
Mc tiêu nghiên cu 2 1.2.
Phm vi nghiên cu 2 1.3.
1.3.1. ng nghiên cu 2
1.3.2. Ph tài 2
U HÀNH ANDROID 3
Gii thiu h u hành Android 3 2.1.
Nha h u hành Android 3 2.2.
tr sn trong h u hành Android 4 2.3.
Kin trúc và các thành phn 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 nin trong lp trình ng dng 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 phn trong mt project ng dng 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. mc res 15
4.4.3. Chy th Web service 30
RSS, ATOM 32
RSS 32 5.1.
5.1.1. RSS là gì ? 32
5.1.2. Nhm mnh ca RSS 32
5.1.3. Cu trúc ca file RSS 33
Atom 35 5.2.
5.2.1. Gii thiu 35
5.2.2. So sánh Atom vi RSS 2.0 36
5.2.3. Ví d ca Atom 1.0 37
CHNG DC TIN TC 38
Kin trúc tng th ca ng dng 38 6.1.
Web service thu thp tin tc 38 6.2.
6.2.1. Mô hình thc th kt hp 38
6.2.2. Mô hình vt lý d liu 39
6.2.3. Hong ca Web service 48
6.2.4. S dng Web service 48
c báo NewsFeed trên Android 51 6.3.
6.3.1. Mô hình thc th kt hp 51
6.3.2. Mô hình vt lý d liu 52
6.3.3. Hong cc tin tc 57
6.3.4. Gii thiu chng dn s dng 58
T LUNG PHÁT TRIN 66
TÀI LIU THAM KHO 67
Hình 2.1. Kin trúc và các thành phn trong h u hành Android 5
i ca mt Activity 8
Hình 3.1. Cu trúc ca mt tài liu XML 17
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
1.3.2. Ph tài
1.3.2.1. Phi 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. Phm 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
Gii thiu 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.
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
Kin trúc và các thành phn 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
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 nin trong lp trình ng dng 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 ca mt 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.
“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
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 phn trong mt project ng dng 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:
/>
</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
Ở đâ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,…).