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 công ty phần mềm
Trang 1LỜ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
Trang 2LỜ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
Trang 3MỤ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
Trang 41.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
Trang 5DANH 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
Trang 6LỜ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
Trang 7Cù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
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
Trang 8Ban đầ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ị
Trang 9rà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
Trang 10Android 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-G-H-I” Hiện tại các phiên bản chính của Android bao gồm:
Android 4.0 (Ice-cream sandwich)
Android 4.1 (Jelly Bean)
Android 4.2 (Jelly Bean)
Android 4.3 (Jelly Bean)
Trang 11Ra 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
Trang 12Hì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
Trang 131.2.2 Library và Android Runtime
Phần này có 2 thành phần là phần Library và Android Runtime
- 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ư
Trang 14JAVA 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…
Trang 15- 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ụ
Trang 16- 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
Trang 17Mỗ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
Trang 18Intent:
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
Trang 19Hì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
Trang 20nà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
Trang 21views 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/<package_name>/databases
Trang 221.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
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
Trang 23 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,
Trang 24Tạ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à
Trang 25Ngoà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
để 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ệ
Trang 26thống được kết nối với Internet Các ngôn ngữ dựa trên XML (thí dụ: RDF, RSS, MathML, XHTML, SVG, và cXML) được định nghĩa theo cách thông thường, cho phép các chương trình sửa đối và kiểm tra hợp lệ bằng các ngôn ngữ này mà không cần có hiểu biết trước về hình thức của chúng
1.5.2 Đặc điểm của XML
XML cung cấp một phương tiện dùng văn bản (text) đế mô tả thông tin và
áp dụng một cấu trúc kiếu cây cho thông tin đó Tại mức căn bản, mọi thông tin đều thế hiện dưới dạng text, chen giữa là các thẻ đánh dấu (markup) với nhiệm
vụ ký hiệu sự phân chia thông tin thành một cấu trúc có thứ bậc của các dữ liệu
ký tự, các phần tử dùng đế chứa dữ liệu, và các thuộc tính của các phần tử đó về mặt đó, XML tương tự với các biểu thức s (S-expression) của ngôn ngữ lập trình LISP ở chỗ chúng đều mô tả các cấu trúc cây mà trong đó mỗi nút có thể có một danh sách tính chất của riêng mình
Đơn vị cơ sở của XML là các ký tự theo định nghĩa của Universal Character Set (Bộ ký tự toàn cầu) Các ký tự được kết hợp theo các tố hợp chuỗi hợp lệ đế tạo thành một tài liệu XML Tài liệu này gồm một hoặc nhiều thực thế, mỗi thực thể thường là một phần nào đó của các ký tự thuộc tài liệu, được mã hóa dưới dạng một chuỗi các bit và lun trữ trong một tệp văn bản (text file)
Sự phổ biến của các phần mềm soạn thảo văn bản (word processor) đã hỗ trợ việc soạn thảo và bảo trì tài liệu XML một cách nhanh chóng Trước XML,
có rất ít ngôn ngữ mô tả dữ liệu với các đặc điểm đa năng, thân thiện với giao thức Internet, dễ học và dễ tạo Thực tế, đa số các định dạng trao đổi dữ liệu thời
đó đều chuyện dụng, có tính độc quyền, và có định dạng nhị phân (chuỗi bit thay
vì chuỗi ký tự) khó dùng chung giữa các ứng dụng phần mềm khác nhau hay giữa các hệ nền (platform) khác nhau Việc tạo và bảo trì trên các trình soạn thảo thông dụng lại càng khó khăn
Bằng cách cho phép các tên dữ liệu, cấu trúc thứ bậc được phép, và ý nghĩa của các phần tử và thuộc tính có tính chất mở và có thế được định nghĩa bởi một giản đồ tùy biến được, XML cung cấp một cơ sở cú pháp cho việc tạo lập các ngôn ngữ đánh dấu dựa XML theo yêu cầu Cú pháp chung của các ngôn