- Hiểu về nguyên lý hoạt động của Android, các thành phần của hệ thống cũng như của một ứng dụng thực thi trên nền Android.. Đồng thời, tìm hiểu về hệ điều hành Android thông qua sách, t
Trang 1
Sinh viên thực hiện:
NGUYỄN THANH HOÀNG
MSSV: 1101878
Cán bộ hướng dẫn: ThS HỒ VĂN TÚ
Trang 2Cần Thơ, 2014
Sinh viên thực hiện:
NGUYỄN THANH HOÀNG
MSSV: 1101878
Cán bộ hướng dẫn: ThS HỒ VĂN TÚ
Cán bộ phản biện Luận văn được bảo vệ tại: Hội đồng chấm luận văn tốt nghiệp Bộ môn Tin học Ứng dụng Khoa Khoa học Tự nhiên, Trường Đại học Cần Thơ vào ngày 12 tháng 12 năm 2014
Mã số đề tài:
Có thể tìm hiểu luận văn tại:
- Trung tâm Học liệu, Trường Đại học Cần Thơ
- Website: http://www.lrc.ctu.edu.vn/
TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA KHOA HỌC TỰ NHIÊN
BỘ MÔN TIN HỌC ỨNG DỤNG
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
XÂY DỰNG ỨNG DỤNG QUẢN LÝ HÀNG HÓA TRÊN THIẾT BỊ DI ĐỘNG ANDROID
Trang 3
LỜI CẢM ƠN
Trong suốt quá trình học tập, rèn luyện đặc biệt là giai đoạn thực hiện luận văn
“Xây dựng ứng dụng quản lý hàng hóa trên thiết bị di động Android”, tôi đã gặp rất nhiều khó khăn và trở ngại Tuy nhiên nhờ có sự hướng dẫn từ Thầy, Cô và sự giúp đỡ
từ bạn bè cộng với sự cố gắng và nỗ lực của bản thân, tôi đã hoàn thành luận văn này Tôi xin gởi lời cảm ơn chân thành nhất đến:
Quý Thầy, Cô trong bộ môn Tin học Ứng Dụng – Khoa Khoa học Tự Nhiên – Trường Đại học Cần Thơ đã tận tình truyền đạt kiến thức trong 4 năm học tập Với vốn kiến thức tiếp thu trong quá trình học đã tạo nền tảng giúp tôi thực hiện luận văn này Xin gởi lời tri ân đến giáo viên hướng dẫn ThS Hồ Văn Tú đã tận tình hướng dẫn
và góp ý cho tôi rất nhiều trong quá trình làm luận văn
Bạn bè trong lớp Tin học Ứng dụng K36 đã kịp thời chia sẻ và đưa ra những góp ý cho đề tài
Mặc dù đã cố gắng hoàn thành luận văn này, nhưng với lượng kiến thức có hạn
về một lĩnh vực mới sẽ khó tránh khỏi những thiếu sót và hạn chế Do đó, tôi rất mong nhận được sự nhận xét và góp ý từ quí Thầy, Cô, bạn bè để có thể rút kinh nghiệm và hoàn thiện hơn
Tôi xin chân thành cảm ơn!
Cần Thơ, ngày 1 tháng 12 năm 2014
Sinh viên thực hiện
Nguyễn Thanh Hoàng
Trang 4NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN
Trang 5
NHẬN XÉT CỦA CÁN BỘ PHẢN BIỆN
Trang 6
MỤC LỤC
MỤC LỤC iv
DANH MỤC TỪ VIẾT TẮT vii
DANH MỤC HÌNH VẼ viii
DANH MỤC BẢNG x
TÓM TẮT xi
ABSTRACT xii
CHƯƠNG 1: CHƯƠNG MỞ ĐẦU 1
1.1 LÝ DO CHỌN ĐỀ TÀI 1
1.2 MỤC TIÊU VÀ NHIỆM VỤ 2
1.3 ĐỐI TƯỢNG NGHIÊN CỨU VÀ PHẠM VI HỆ THỐNG 2
1.3.1 Đối tượng nghiên cứu 2
1.3.2 Phạm vi chức năng 2
1.3.3 Phạm vi yêu cầu kỹ thuật 2
1.4 PHƯƠNG PHÁP NGHIÊN CỨU 3
1.4.1 Về phương pháp thu thập thông tin 3
1.4.2 Về lý thuyết 3
1.4.3 Về công nghệ 3
1.5 Ý NGHĨA THỰC TIỄN CỦA ỨNG DỤNG 3
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 4
2.1 SƠ LƯỢC QUÁ TRÌNH PHÁT TRIỂN CỦA ANDROID [3] 4
2.1.1 Giới thiệu về Android 4
2.1.2 Lịch sử phát triển 4
2.2 DELVING VỚI MÁY ẢO DALVIK [3] 9
2.3 KIẾN TRÚC CỦA ANDROID [3] 9
2.3.1 Linux kernel 10
2.3.2 Library và Android Runtime 11
2.3.2.1 Library 11
2.3.2.2 Android runtime 12
2.3.3 Framework 12
2.3.4 Aplication 13
Trang 72.4 CÁC THÀNH PHẦN CỦA ANDROID [3] 14
2.4.1 Thành phần của một chương trình Android 14
2.4.1.1 Activity 14
2.4.1.2 Intent 16
2.4.1.3 Service 16
2.4.1.4 Broadcast Receiver 17
2.4.1.5 Content Provider 18
2.4.1.6 View 18
2.4.1.7 Lưu trữ dữ liệu 20
2.4.1.8 SQLite 20
2.4.1.9 Manifest File 21
2.4.1.10 Giao diện người dùng trong Android 21
2.4.2 Bắt sự kiên trong Android 22
2.4.3 Menu 22
2.5 CÁC THÀNH PHẦN TRONG MỘT ANDROID PROJECT [3] 23
CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ ỨNG DỤNG 27
3.1 ĐẶC TẢ HỆ THỐNG 27
3.1.1 Giới thiệu 27
3.1.2 Mô tả bài toán 27
3.2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 27
3.2.1 Xây dựng các thực thể 27
3.2.2 Mô hình thực thể mối kết hợp 30
3.2.3 Mô hình dữ liệu vật lý (Physical Data Model - PDM) 32
3.2.4 Lược đồ cơ sở dữ liệu quan hệ 33
3.2.5 Sơ đồ Use Case 35
3.2.5.1 Use Case quản lý nhà cung cấp 35
3.2.5.2 Use Case quản lý nhập hàng hóa 36
3.2.5.3 Use Case quản lý khách hàng 36
3.2.5.4 Use Case quản lý hóa đơn bán 37
3.2.6 Sơ đồ tuần tự 37
3.2.6.1 Thêm nhà cung cấp 37
Trang 83.2.6.2 Thêm hàng hóa 38
3.2.6.3 Thêm khách hàng 38
3.2.6.4 Thêm hóa đơn bán 39
3.3 KẾT QUẢ ĐẠT ĐƯỢC 40
3.3.1 Về lý thuyết 40
3.3.2 Về chương trình 40
3.4 ỨNG DỤNG QUẢN LÝ HÀNG HÓA TRÊN THIẾT BỊ DI ĐỘNG ANDROID 41
3.4.1 Danh sách các màn hình 41
3.4.2 Mô tả chi tiết mỗi màn hình 42
3.4.2.1 Màn hình chính của chương trình 42
3.4.2.2 Màn hình thêm nhà cung cấp 43
3.4.2.3 Màn hình danh sách nhà cung cấp 44
3.4.2.4 Màn hình chỉnh sửa nhà cung cấp 45
3.4.2.5 Màn hình thêm hàng hóa 46
3.4.2.6 Màn hình danh sách hàng hóa 47
3.4.2.7 Màn hình chỉnh sửa hàng hóa 48
3.4.2.8 Thông tin chi tiết hàng hóa 49
3.4.2.9 Màn hình thêm khách hàng 50
3.4.2.10 Màn hình danh sách khách hàng 51
3.4.2.11 Màn hình chỉnh sửa khách hàng 52
3.4.2.12 Màn hình thêm hóa đơn bán 53
3.4.2.13 Màn hình danh sách hóa đơn bán 54
3.4.2.14 Màn hình chỉnh sửa hóa đơn bán 55
3.4.2.15 Màn hình báo cáo 56
3.4.2.16 Màn hình sao lưu và phục hồi cơ sở dữ liệu 57
3.4.2.17 Màn hình tìm kiếm hàng hóa 58
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 59
DANH MỤC TÀI LIỆU THAM KHẢO 61
Trang 9DANH MỤC TỪ VIẾT TẮT
API: Application Programming Interface (Giao diện lập trình ứng dụng)
CPU: Central Processing Unit (Đơn vị xử lý trung tâm)
CSDL: Cơ sở dữ liệu
DTD: Document Type Definition (Định nghĩa kiểu văn bản)
GPS: Global Positioning System (Hệ thống định vị toàn cầu)
HD: High-Definition (Độ nét cao)
HTML: HyperText Markup Language (Ngôn ngữ đánh dấu siêu văn bản)
JSON: JavaScript Object Notation (Định dạng trao đổi dữ liệu cực nhẹ)
OOP: Object-Oriented Programming (Lập trình hướng đối tượng)
OHA: Open Handset Alliance (Liên minh thiết bị cầm tay mở rộng)
SDK: Software Development Kit (Bộ công cụ phát triển phần mềm)
XML: eXtensible Markup Language (Ngôn ngữ đánh dấu mở rộng)
SQLITE: Hệ quản trị cơ sở dữ liệu
HĐH: Hệ điều hành
Trang 10DANH MỤC HÌNH VẼ
Hình 1.1 Các thành viên của liên minh di động mở 5
Hình 2.1: Cấu trúc hệ thống Android 9
Hình 2.2: Cấu trúc Linux kernel 10
Hình 2.3: Cấu trúc Library và Android runtime 11
Hình 2.4: Cấu trúc Framework 12
Hình 2.5 Chu kỳ sống của activity 15
Hình 2.6: Cấu trúc truyền tải dữ liệu giữa các Activity 16
Hình 2.7: Cấu trúc của một service 17
Hình 2.8: Các thành phần trong một Android project 23
Hình 3.1: Mối kết hợp hàng hóa với nhà cung cấp 30
Hình 3.2: Mối kết hợp hàng hóa với khách hàng 31
Hình 3.3: Mô hình dữ liệu quan niệm 32
Hình 3.4: Mô hình dữ liệu vật lý 32
Hình 3.5: Lược đồ cơ sở dữ liệu quan hệ 33
Hình 3.6: Sơ đồ Use Case quản lý nhà cung cấp 35
Hình 3.7: Use Case quản lý nhập hàng hóa 36
Hình 3.8: Use Case quản lý khách hàng 36
Hình 3.9: Use Case quản lý hóa đơn bán 37
Hình 3.10: Sơ đồ tuần tự thêm nhà cung cấp 37
Hình 3.11: Sơ đồ tuần tự thêm hàng hóa 38
Hình 3.12: Sơ đồ tuần tự thêm khách hàng 38
Hình 3.13: Sơ đồ tuần tự thêm hóa đơn bán 39
Hình 3.14: Màn hình chính của chương trình 42
Hình 3.15: Màn hình thêm nhà cung cấp 43
Hình 3.16: Màn hình danh sách nhà cung cấp 44
Hình 3.17: Màn hình chỉnh sửa nhà cung cấp 45
Hình 3.18: Màn hình thêm hàng hóa 46
Hình 3.19: Màn hình danh sách hàng hóa 47
Hình 3.20: Màn hình chỉnh sửa hàng hóa 48
Hình 3.21: Màn hình thông tin chi tiết hàng hóa 49
Trang 11Hình 3.22: Màn hình thêm khách hàng 50
Hình 3.23: Màn hình danh sách khách hàng 51
Hình 3.24: Màn hình chỉnh sửa khách hàng 52
Hình 3.25: Màn hình thêm hóa đơn bán 53
Hình 3.26: Màn hình danh sách hóa đơn bán 54
Hình 3.27: Màn hình chỉnh sửa hóa đơn bán 55
Hình 3.28: Màn hình báo cáo 56
Hình 3.29: Màn hình backup và restore cơ sở dữ liệu 57
Trang 12DANH MỤC BẢNG
Bảng 3.1 Thuộc tính của thực thể nhà cung cấp 28
Bảng 3.2 Thuộc tính của thực thể khách hàng 28
Bảng 3.3 Thuộc tính của thực thể hàng hóa 28
Bảng 3.4 Thuộc tính của thực thể hóa đơn nhập 29
Bảng 3.5 Thuộc tính của thực thể hóa đơn bán 29
Bảng 3.6 Thuộc tính của thực thể nhân viên 29
Trang 13TÓM TẮT
Hiện nay, việc kinh doanh của các cửa hàng bách hóa ngày càng phát triển
Điều đó làm cho việc phát triển đội ngũ nhân viên bán hàng hoặc tiếp thị tại các cửa
hàng nhằm mục giới thiệu hàng hóa, sản phẩm cũng không ngừng phát triển theo Bên
cạnh đó là sự phát triển của những chiếc điện thoại thông minh Do đó, việc phát triển
các ứng dụng quản lý các hàng hóa trên điện thoại thông minh là một điều cần thiết
Ứng dụng này giúp cho việc quản lý hàng hóa, sản phẩm của các nhân viên bán hàng
hoặc tiếp thị trở nên tiện lợi hơn và tiết kiệm thời gian hơn
Mục tiêu của luận văn là tìm hiểu công nghệ lập trình ứng dụng Android để hoàn
thành ứng dụng quản lý hàng hóa Luận văn gồm năm phần chính Phần một giới thiệu
lý do chọn đề tài, mục tiêu, nhiệm vụ, đối tượng và phương pháp nghiên cứu, ý nghĩa
thực tiễn của ứng dụng Phần hai khái quát về cơ sở lý thuyết cần cho thiết kế ứng
dụng Phần ba phân tích và thiết kế hệ thống, sơ đồ ứng dụng, xây dựng ứng dụng thực
tiễn Cuối cùng là kết luận và hướng phát triển cho ứng dụng
Ứng dụng quản lý hàng hóa được viết bằng ngôn ngữ Java trên nền tảng Android
và sử dụng hệ quản trị cơ sở dữ liệu SQLite
Sau khi hoàn thành, ứng dụng có thể xử lý được các yêu cầu cơ bản như lưu trữ,
cập nhật thông tin hàng hóa, tìm kiếm, báo cáo thông tin theo yêu cầu Đồng thời cũng
cho phép nhập và xuất thông tin hàng hóa
Về mặt ý nghĩa, ứng dụng này sẽ nâng cao hiệu quả quản lý hàng hóa cho các
nhân viên bán hàng trở nên nhanh chóng và chính xác hơn
Từ khóa: hàng hóa, hệ điều hành, Android, cơ sở dữ liệu, quản lý
Trang 14ABSTRACT
Nowadays, the business of the grocery stores more and more develop That
makes the development of the sale staff or market staff at the stores in order to
introduce goods, products, which also develop Besides that, this is the development of
smartphones Therefore, it is necessary to develop the management application of
goods in smartphones This application is going to help the management of goods,
products of the sale staff or market staff, which becomes more and more convenient
and time-saving
The purpose of the dissertation is finding out the technology programming of
Android application to complete the grocery store’s management application The
dissertation has 5 main parts Part 1 the introduction of reasons for selecting the topic,
aims, mission, objects and research methods, practical significance of the application
Part 2 the overview of the theoretical bases needed for designing of application Part 3
analysis and designing of system, application diagrams, construction for practical
applications Finally is that, the conclusion and the tendency for development of
application
This application written in Java and management system use SQLite database
on the Android
After conplete the construction, this aplication can handle the basic re
quirements, such as storage, update information goods, search and statistical
information as required In addition, it also allow import and export goods
In terms of significance, this application will enhance effective management of
goods for the salesperson becomes more quickly and accurately
Key words: goods, management system, Android, database, management
Trang 15CHƯƠNG 1: CHƯƠNG MỞ ĐẦU
vụ tốt hơn cho những nhu cầu thiết yếu cho con người Lập trình ứng dụng, lập trình quản lý trên di động cũng là tiềm năng trong sự phát triển của công nghệ di động
Và từ đó các ứng dụng quản lý trên di động xuất hiện ngày càng nhiều, trên các
hệ điều hành khác nhau như Android, iOS, RIM Blackberry OS, Symbian… Và Android là hệ điều hành do Google mua về và cho ra đời vào năm 2007, đây là hệ điều hành tương đối mới và đang rất được ưa chuộng trên thị trường từ khi nó ra đời, nên
tôi đã chọn đề tài “Xây dựng ứng dụng quản lý hàng hóa trên thiết bị di động Android”
Trang 161.2 MỤC TIÊU VÀ NHIỆM VỤ
Mục tiêu: Tìm hiểu được các công nghệ lập trình cần thiết trên nền Android để hoàn
thành ứng dụng quản lý một cách hiệu quả
- Hiểu về nguyên lý hoạt động của Android, các thành phần của hệ thống cũng như của một ứng dụng thực thi trên nền Android
- Tìm hiểu và áp dụng được các công nghệ lập trình trên nền Android như ngôn ngữ JAVA, cơ sở dữ liệu SQLite
Nhiệm vụ: Nghiên cứu về Android và bộ thư viện lập trình trên nền Android Tìm
hiểu các dịch vụ liên quan và xây dựng ứng dụng quản lý hàng hóa
1.3 ĐỐI TƢỢNG NGHIÊN CỨU VÀ PHẠM VI HỆ THỐNG
1.3.1 Đối tƣợng nghiên cứu
- Ngôn ngữ JAVA, PHP, JSON, XML
- Cơ sở dữ liệu SQLite
- Công cụ Android SDK & Eclipse
- Hệ điều hành và tài nguyên hệ thống Android
1.3.3 Phạm vi yêu cầu kỹ thuật
Trong quá trình sử dụng, ứng dụng phải đảm bảo các yêu cầu như:
Giao diện trực quan, thân thiện, giúp người dùng thao tác dễ dàng, nhanh chóng
Tốc độ truy xuất nhanh, linh hoạt
An toàn và bảo mật thông tin của dữ liệu
Trang 171.4 PHƯƠNG PHÁP NGHIÊN CỨU
1.4.1 Về phương pháp thu thập thông tin
Tìm hiểu quy trình quản lý thông tin hàng hóa thông qua quan sát thực tế và từ
giáo viên hướng dẫn Dựa trên những thông tin đó, tiến hành phân tích, thiết kế và xây
dựng ứng dụng cho đầy đủ, phù hợp với quy trình hoạt động trong thực tế
1.4.2 Về lý thuyết
Vận dụng những kiến thức từ những học phần đã học, đặc biệt là môn học phân
tích và thiết kế hệ thống thông tin, Lập trình hướng đối tượng với ngôn ngữ Java để
xây dựng mô hình cơ sở dữ liệu và lập trình
Đồng thời, tìm hiểu về hệ điều hành Android thông qua sách, tài liệu, thông qua
Hệ quản trị cơ sở dữ liệu: SQLite
1.5 Ý NGHĨA THỰC TIỄN CỦA ỨNG DỤNG
Chương trình có thể áp dụng vào công việc hàng ngày khi người bán hàng có
nhu cầu sử dụng đến, ứng dụng rất dễ sử dụng và thân thiện với người dùng
Trang 18CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 SƠ LƯỢC QUÁ TRÌNH PHÁT TRIỂN CỦA ANDROID [3]
2.1.1 Giới thiệu về Android
Thiết bị chuẩn của Android bao gồm bốn phím chính (cứng hoặc mềm) là home, back, search và menu (iPhone chỉ có duy nhất phím Home)
- Phím Home sẽ quay trở về màn hình home
- Phím back quay lại màn hình trước đó
- Phím search và menu sẽ tùy từng ứng dụng mà chúng sẽ có action tương ứng
Android được xây dựng trên nhân Linux và được phân phối miễn phí Không giống như Windows mobile và Apple iPhone, tuy cả hai đều cung cấp môi trường phát triển ứng dụng phong phú và đơn giản dễ tiếp cận nhưng luôn có sự ưu tiên cho các ứng dụng mặc định có sẵn của hệ điều hành (native applications) Với Android mọi ứng dụng đều được viết trên cùng một tập API, thế nên không có sự phân biệt giữa các ứng dụng mặc định và các ứng dụng của bên thứ ba Người dùng hoàn toàn có thể thay thế mọi ứng dụng mặc định bằng các ứng dụng yêu thích của mình, thậm chí ngay cả màn hình thực hiện cuộc gọi và màn hình chính (home scream)
Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai Google công bố hầu hết các mã nguồn Android theo bản cấp phép Apache
Trang 19Hình 1.1 Các thành viên của liên minh di động mở
Các ứng dụng có sẵn trên Android
Một điện thoại Android thông thường sẽ đi kèm với một vài ứng dụng có sẵn, bao gồm:
Một trình email tương thích với Gmail
Chương trình quản lý tin nhắn SMS
Chương trình quản lý thông tin cá nhân, bao gồm cả lịch làm việc, danh bạ
và được đồng bộ hóa với dịch vụ Google
Phiên bản thu gọn của Google Map cho điện thoại, bao gồm StreetView, tìm kiếm địa chỉ, chỉ đường, tình trạng giao thông…
Trình duyệt Web dựa trên nhân Webkit
Chương trình tán gẫu (Chat)
Trình đa phương tiện ( chơi nhạc, xem phim…)
Android MarketPlace cho phép người dùng tải về và cài đặt các ứng dụng mới
Trang 20Tất cả các ứng dụng có sẵn đều được viết bằng ngôn ngữ Java và sử dụng Android SDK
Các dữ liệu về thông tin người dùng được các ứng dụng có sẵn sử dụng như thông tin về danh bạ vẫn hoàn toàn có thể được sử dụng bởi các ứng dụng của bên thứ
ba Tương tự vậy, ứng dụng của bạn hoàn toàn có thể xử lý các sự kiện như các cuộc gọi đến, nhận một tin nhắn mới… thay cho các ứng dụng có sẵn
Truy cập phần cứng
Android bao gồm các thư viện API giúp đơn giản hóa tối đa việc sử dụng phần cứng của thiết bị Điều đó đảm bảo rằng bạn không cần phải bận tâm nhiều đến việc ứng dụng của mình có thể chạy như mong đợi trên nhiều thiết bị khác nhau hay không, miễn là thiết bị đó có hỗ trợ Android
Android SDK bao gồm các API cho phần cứng :GPS, Camera, kết nối mạng, WIFI, Bluetooth, con quay gia tốc, màn hình cảm ứng, quản lý năng lượng…
Hệ thống thông báo
Thông báo là cách thức tiêu chuẩn mà ở đó thiết bị báo cho người dùng đã có một sự kiện nào đó đã xảy ra Chẳng hạn như có cuộc gọi tới, máy sắp hết pin… Sử dụng các API bạn có thể cho ứng dụng của mình thông báo tới người dùng bằng âm thanh, rung, hoặc thậm chí cả đèn LED của thiết bị
Trang 21 Tối ưu hóa bộ nhớ và quản lý tiến trình
Việc quản lý bộ nhớ và tiến trình trong Android cũng có một chút khác biệt giống như công nghệ Java và NET, Android sử dụng một bộ Run-time của riêng mình với công nghệ ảo hóa để quản lý bộ nhớ của các ứng dụng đang chạy Không giống như những nền tảng khác, Android Run-time cũng đồng thời quản lý luôn cả thời gian sống của ứng dụng Android đảm bảo các ứng dụng đều được đáp ứng bằng cách dừng
và hủy các tiến trình không cần thiết để giải phóng các tài nguyên cho các tiến trình có
độ ưu tiên cao hơn
Trong bối cảnh đó, độ ưu tiên được xác định tùy thuộc vào ứng dụng mà người dùng đang tương tác Android đảm bảo rằng các ứng dụng được hủy một cách nhanh chóng, đồng thời cũng khởi động là nhanh cũng không kém nếu cần Điều này thật sự quan trọng trong một môi trường mà ở đó bản thân ứng dụng không thể tự kiểm soát được thời gian sống cho mình
Android software development kit (SDK)
Bộ SDK của Android bao gồm mọi thứ cần thiết giúp bạn có thể lập trình, debug, test ứng dụng Android
Android API: Cốt lõi của bộ SDK là thư viện các hàm API và Google cũng chỉ sử
dụng bộ API này để xây dựng các ứng dụng có sẵn cho Android
Development tool: SDK bao gồm rất nhiều công cụ để giúp biên dịch, sửa lỗi và hỗ
trợ trong việc lập trình ứng dụng
Android Emulator: Trình giả lập thiết bị chạy Android thực sự với nhiều Skin thay
thế, cực kì tiện lợi cho việc test ứng dụng Android ngay trên máy tính mà không cần phải thông qua một thiết bị chạy Android thực
Tài liệu: SDK bao gồm một bộ tài liệu rất chi tiết, giải thích cặn kẽ chính xác những gì
bao gồm trong mỗi page, class cùng với cách sử dụng chúng Ngoài tài liệu về “code”, còn có những tài liệu dùng để “getting started” và giải thích các nguyên tắc và cơ chế hoạt động của ứng dụng trong Android
Code mẫu: SDK bao gồm các ứng dụng mẫu đơn giản minh họa cho các tính năng nổi
bật trên Android, cũng như các ứng dụng demo cách sử dụng các tính năng của bộ API
Kiến trúc ứng dụng
Ý tưởng của Android là việc khuyến khích tái sử dụng lại các thành phần đã có, cho phép ứng dụng của bạn có thể chia sẻ Activity, Service, Dữ liệu với các ứng dụng khác nhau trong giới hạn bạn đặt ra
Sau đây là kiến trúc của mọi ứng dụng Android:
Trang 22- Activity Manager : Kiểm soát vòng đời của Activity
- View : Xây dựng giao diện người dùng cho Activity
- Notification Manager: Cung cấp một cơ chế thống nhất và an toàn để ứng
dụng có thể đưa ra các thông báo cho người dùng
- Content Provider: Giúp trao đổi và chia sẽ dữ liệu giữa các ứng dụng với
nhau
- Resource Manager: Hỗ trợ quản lý các tài nguyên không là code như các
chuỗi, hình ảnh, và âm thanh…
Các thư viện của Android
Android cung cấp các gói API để phát triển ứng dụng Sau đây là các API mà tất cả các thiết bị Android đều tối thiểu phải hỗ trợ để giúp cho chúng ta một cái nhìn tổng quát về thư viện này
Android.util : Gói API lõi, chứa các class cấp thấp như container, string formatter, XML parsing
Android.os : Truy cập tới chức năng của hệ điều hành như : gởi nhận tin nhắn, giao tiếp nội bộ giữa các ứng dụng, thời gian…
Android.graphics: Cung cấp các lớp liên quan tới xử lý đồ họa ở mức thấp
Hỗ trợ các hàm cơ bản như vẽ điểm, vẽ miền, tô màu trên khung canvas
Android.text: Cung cấp các hàm phân tích và xử lý chuỗi
Android.database: Cung cấp các lớp cấp thấp cần thiết để làm việc với database
Android.content: Dùng để quản lý các tài nguyên, các nội dung và các gói
Android.view: Views là lớp cha của mọi lớp giao diện người dùng
Android.widget: Được thừa kế từ lớp View, bao gồm các lớp cơ bản để xây dựng giao diện widget như: list, button, layout
Android.map: Gói API cấp cao, dùng để truy cập tới các chức năng của GoogleMap
Android.app: Gói API cấp cao, bao gồm các Activity và Service – hai lớp cơ
sở cho mọi ứng dụng Android
Android.telephony: Cung cấp cho bạn khả năng tương tác trực tiếp với các chức năng cơ bản của một điện thoại như nghe, gọi, tin nhắn
Trang 23 Android.webkit: cung cấp một webView control trên nền webkit để có thể nhúng ứng dụng, cùng với các API điều khiển cơ bản như stop, refresh, cookieManager…
2.2 ANDROID RUNTIME [3]
Dalvik là máy ảo giúp các ứng dụng java chạy được trên các thiết bị di động Android
Nó chạy các ứng dụng đã được chuyển đổi thành một file thực thi Dalvik (dex) Định dạng phù hợp cho các hệ thống mà thường bị hạn chế về bộ nhớ và tốc độ xử lý
Dalvik trông giống như máy ảo Java (Java Virtual Machine) nhưng thực tế thì hoàn toàn khác dưới gốc nhìn của nhà phát triển Khi nhà phát triển viết một ứng dụng dành cho Android, anh ta thực hiện các đoạn mã trong môi trường Java Sau đó, nó sẽ được biên dịch sang các bytecode của Java, tuy nhiên để thực thi được ứng dụng này trên Android thì nhà phát triển phải thực thi một công cụ có tên là dex Đây là công cụ dùng để chuyển đổi bytecode sang một dạng gọi là dex bytecode "Dex" là từ viết tắt của "Dalvik executable" đóng vai trò như cơ chế ảo thực thi các ứng dụng Android
2.3 KIẾN TRÚC CỦA ANDROID [3]
Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành Android Mỗi một phần sẽ được đặc tả một cách chi tiết dưới đây
Hình 2.1: Cấu trúc hệ thống Android
Trang 242.3.1 Linux kernel
Hệ điều hành Android được phát triển dựa trên hạt nhân Linux 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 bao gồm quản lý bộ nhớ (memory managerment), giao diện với phần cứng (driver medel), thực hiện bảo mật (security), quản lý tiến trình (process)
Hình 2.2: Cấu 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ư 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 khiể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 sóng wifi
- Audio Driver: Điều khiển các bộ thu phát âm thanh, giải mã tín 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ư SD, flash
Trang 25- 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 để đảm bào những chức năng truyền thông được thực hiện
2.3.2 Library và Android Runtime
Phần này có 2 thành phần là Library và Android runtime
Hình 2.3: Cấu trúc Library và Android runtime
- Suface 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
Trang 262.3.2.2 Android runtime
Phần này chứa các thư viện mà một chương trình có thể hoạt động Phần này có hai 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ư JAVA IO, Collection, File Access Thứ hai
là một máy ảo java (Dalvik Virtual Machine) Mặc dù cũng được viết bằng 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 Enviroment) 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 một nhà phát triểm 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 dalvik thực thi tập tin dalvik (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
2.3.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 hơn nữa
Hình 2.4: Cấu 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ế giao diện ứng dụng như: gridview, tableview, linearlayout,…
Trang 27- 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 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ý 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 đó
2.3.4 Aplication
Đâ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ứ ba,…
Các ứng dụng viết sẽ có những đặc tính sau:
- Viết bằng ngôn ngữ Java, C# hoặc một ngôn ngữ khác, 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ụ
- 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ể đượ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 cho 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ằm 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
Trang 28- 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ử dụng quá 5~10% công suất CPU, điều đó nhằm để tránh độc quyền trong việc sử dụng CPU
là hiển thị một danh sách các liên hệ để giử 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 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
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 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 back, menu items, check boxes,…
Trang 29Mộ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 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 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
Hình 2.5 Chu kỳ sống của activity
Trang 302.4.1.2 Intent
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
Hình 2.6: Cấu trúc truyền tải dữ liệu giữa các Activity
2.4.1.3 Service
Một service không có giao diện trực quan, nó chạy trên nền trong một khoảng thời gian không xác định Ví dụ một service có thể chơi nhạc nền, hay nó nạp dữ liệu trên mạng hay tính toán cái gì đó và cung cấp kết quả cho activity cần đến nó Mỗi service mở rộng từ lớp cơ sở Service
Một ví dụ cổ điển là media player chơi các bài hát từ một danh sách Ứng dụng player có thể có một hay hai activity cho phép người dùng chọn bài hát và bắt đầu chơi Tuy nhiên, music playback không tự nó được xử lý bởi một activity bởi vì người dùng mong muốn sẽ chơi tiếp nhạc khi họ rời khỏi player và làm cái gì đó khác Để tiếp tục chơi nhạc, media player activity có thể khởi động một service chạy trên nền
Hệ thống sẽ giữ cho music playback service chạy thậm chí khi activity khởi động nó rời khỏi màn hình
Trong khi kết nối, bạn có thể giao tiếp với dịch vụ thông qua giao diện mà service đó trưng ra Ví dụ như trong music service, giao diện này có thể cho phép người dùng pause, rewind, stop và restart lại playback
Trang 31Giống như các activity và các thành phần khác, service chạy trong thread chính của tiến trình ứng dụng Vì thế chúng không thể chặng những thành phần khác hay giao diện người dùng, chúng thường tạo ra các thead khác cho các nhiệm vụ hao tốn thời gian
Hình 2.7: Cấu trúc của một service
2.4.1.4 Broadcast Receiver
Một Broadcast Receiver 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 đã 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ở Broadcast Receiver
Trang 32Broadcast 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 Notification có thể lấy sự chú ý của người dùng bằng nhiều cách, léo 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
2.4.1.5 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 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
2.4.1.6 View
View là thành phần cơ bản để xây dựng giao diện người dùng cho một ứng dụng Android View là một lớp căn bản của widgets (widgets được dùng để tạo các nút nhấn, text fields,…)
Lớp con ViewGroup là lớp căn bản của layouts, có thể coi như một cái hộp vô hình chứa nhiều Views hay ViewGroups khác và xác định các thuộc tính layout
Sử dụng Views:
Trong 1 cửa sổ màn hình, mọi views đều được sắp xếp theo thứ tự trên một cây trong một hay nhiều file XML nằm trong res/layout
Trang 33Khi tạo 1 cây chứa các views, người lập trình cần xác định những giá trị sau:
Các thuộc tính – Chẳng hạn định xem một TextView sẽ hiển thị chữ gì Mỗi view có những thuộc tính và phương thức khác
Mức độ tập trung (Focus) - Thay đổi sự tập trung tuỳ theo input của người dùng với requestFocus()
Listeners - Định các listeners để có hành động khi một sự kiện gì đó xảy ra với setOnFocusChangeListener(View.OnFocusChangeListener)
Một số Views thường dùng:
- TextView: Hiển thị một khung text và cho phép người dùng thay đổi
- ImageView: Hiển thị một hình ảnh xác định từ file tài nguyên hay qua một content
provider
- Button: Hiển thị một nút nhấn
- Checkbox: Hiển thị một nút nhấn với hai trạng thái khác nhau
- KeyboardView: Hiển thị bàn phím ảo để nhập liệu
- WebView: Hiển thị các trang web bằng Webkit
Một số ViewGroups thường dùng:
- LinearLayout: Các view được xếp theo một hàng hay một cột duy nhất
- AbsoluteLayout: Cho phép xác định chính xác vị trí của từng view
- TableLayout: Sắp xếp các view theo các cột và hàng Mỗi hàng có thể có nhiều
view, mà mỗi view sẽ tạo nên một ô
- RelativeLayout: Cho phép xác định vị trí các view theo mối quan hệ giữa chúng
(VD; canh trái, phải, )
- FrameLayout: Là một placeholder cho phép đặt lên đó một view duy nhất View
đặt lên FrameLayout luôn được canh lề trái phía trên
- ScrollView: Là một FrameLayout đặc biệt cho phép trượt (scroll) một danh sách dài hơn kích thước màn hình
Trang 342.4.1.7 Lưu trữ dữ liệu
Android có nhiều cách để lưu trữ dữ liệu Một cách đơn giản nhất là sử dụng hệ thống preferences Android cho phép các activity và ứng dụng lưu giữ preferences theo dạng cặp từ khóa và giá trị, nằm giữa các lần gọi một activity Mục đích chính là để lưu trữ thông tin cấu hình chi tiết mà người dùng hiệu chỉnh, chẳng hạn trang web người dùng xem gần đây nhất Bạn có thể lưu trữ bất kì thông tin nào trong preferences bằng từ khóa có kiểu String và kiểu dữ liệu nguyên thủy (boolean, String…)
Preferences có thể dùng cho activity độc lập hay được chia sẻ giữa các activity của một ứng dụng Và tương lai, Preference có thể được chia sẻ giữa các ứng dụng với nhau
Bên cạnh việc sử dụng Preferences để lưu trữ dữ liệu thì cũng còn một cách đơn giản khác để thực hiện công việc lưu trữ dữ liệu là sử dụng tập tin Android cung cấp hai mô hình để truy cập tập tin:
- Một cho các tập tin được đóng gói sẵn cho ứng dụng
- Một dành cho tập tin được tạo trên thiết bị thực thi ứng dụng đó
- Đối với dữ liệu tĩnh, chẳng hạn danh sách các từ dùng để kiểm tra chính tả Cách đơn giản nhất để thực hiện điều đó là lưu vào một tập tin, và tập tin này phải được đặt trong thư mục res/raw của project Nhờ vậy, tập tin sẽ được đặt trong tập tin APK của ứng dụng như một nguồn tài nguên cơ bản
- Ngoài hai phương pháp trên, Android còn hỗ trợ hệ quản trị cơ sở dữ liệu quan hệ SQLite để quản lý dữ liệu lớn và có quan hệ phức tạp Nhờ vậy, người lập trình có thể thực hiện quản lý dữ liệu một cách dễ dàng, linh hoạt hơn
2.4.1.8 SQLite
Khi lập trình trên di động hay các thiết bị có dung lượng bộ nhớ hạn chế, người
ta thường dùng SQLite SQLite là một hệ quản trị cơ sở dữ liệu nhúng được hiện thực
từ chuẩn SQL-92 Giống với cái tên của nó, SQLite chiếm dung lượng nhỏ (khoảng 275KB) nên việc truy xuất dữ liệu được nhanh chóng, không chiếm dụng quá nhiều tài nguyên hệ thống Do SQLIte là phần mềm mã nguồn mở nên nó không bị giới hạn tác quyền Vì lý do đó mà SQLite được nhiều hãng sử dụng (Adobe, Apple, Google, Sun, Symbian) và các dự án mã nguồn mở (Mozila, PHP, Python)
Trang 35Đặc biệt, đối với Android, SQLite rất thích hợp để tạo cơ sở dữ liệu cho các ứng dụng trên nền Android Từ khi SQLite có giao diện SQL thì nó càng được sử dụng
dễ dàng và thông dụng hơn
SQLite tuy nhẹ hơn so với các hệ cơ sở dữ liệu khác nhưng cũng không khác biệt nhiều SQLite cũng sử dụng ngôn ngữ truy vấn SQL (SELECT, INSERT, DELETE…), thích hợp cho các ứng dụng trên điện thoại, đặc biệt là ứng dụng trên hệ điều hành Android vì Android Runtime có thể chứa cả SQLite mà không cần phải chia nhỏ ra
SQLite có một hệ thống câu lệnh SQL đầy đủ với các triggers, transactions Các câu truy vấn cũng như các hệ cơ sở dữ liệu khác SQLite như bản thu nhỏ của so với các hệ CSDL khác, vì vậy nó không thể có đầy đủ các chức năng trên chiếc điện thoại di động của bạn
SQLite là một lựa chọn thích hợp dành cho ứng dụng trên hệ điều hành Android Ngoài dung lượng lưu trữ nhỏ gọn, SQLite còn cho phép sử dụng Unicode, kiểu dữ liệu không được cài đặt trong một số phiên bản Android
2.4.1.9 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 mainfest file được gắn vào Android package, file apk này cũng chứa mã của ứng dụng và tài nguyên
Mainfest file là một file XML có cấu trúc được đặt tên là AndroidMainfest.xml cho mọi ứng dụng Nó thực hiên một số bổ sung để khai thác 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, …
2.4.1.10 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 object là các đơn vị cơ bản 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ơ
Trang 36sở 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
2.4.2 Bắt sự kiện trong Android
Khi đã thêm một số View/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ị 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 xen với setOnClickListener()
Ghi đè một callback method hiện cho View Đây là những gì nên làm khi đã thực hiện lớp View của riêng mỗi người và muốn lắng nghe cho các sự kiện cụ thể xảy ra trong
nó Ví dụ về các sự kiện có thể xử lý bao gồm màn hình là touched onTouchEvent() khi tracball là di chuyển onTrack ballEvent() hoặc khi một phím trên thiết bị được nhấn onKeyDown() Điều này cho phép xác định các hành vi mặc định cho từng sự kiện bên trong tùy chỉnh View và xác định xem sự kiện này cần được thông qua ngay
để View con khác Một lần nữa, đây là những callback View class, do đó, cơ hội duy nhất để xác định đó là khi xây dựng một phần tùy chỉnh
2.4.3 Menu
Menu đơn có một phần quan trọng của giao diện người dùng trong một ứng dụng Menus cung cấp một giao diện đáng tin cậy cho thấy rằng các chức năng ứng dụng và cài đặt Trong trình đơn ứng dụng phổ biến nhất là bằng cách bấm phím MENU trên thiết bị Tuy nhiên, cũng có thể thêm Context Menus, có thể hiển thị khi người sử dụng máy nhấn và nắm giữ phím trên một mục Thực đơn cũng được hệ thống phân cấp cấu trúc bằng cách sử dụng một xem, nhưng không xác định cấu trúc này
Thay vào đó, xác định onCreateOptionsMenu() hoặc onCreateContext Menu() gọi method cho hoạt động của mình và tuyên bố các mục mình muốn bao gồm trong menu của mình Trong một thời gian thích hợp, Android sẽ tự động tạo ra hệ thống View phân cấp cần thiết cho menu, và rút ra trong mỗi menu đó
Trang 372.5 CÁC THÀNH PHẦN TRONG MỘT ANDROID PROJECT [3]
Android project là một hệ thống thư mục file chứa toàn bộ source code, tài nguyên… mà mục đích cuối cùng là để đóng gói thành một file apk duy nhất
Trong một thư mục project, có một số thành phần (file, thư mục con) được tạo
ra mặc định, còn lại phần lớn sẽ được tạo ra sau nếu cần trong phát triển ứng dụng
Hình 2.8: Các thành phần trong một Android project