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

Nghiên cứu hệ điều hành android và xây dựng ứng dụng tìm kiếm máy rút tiền atm

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

LỜI CẢM ƠN

Hiện nay, thị trƣờng phần mềm cho điện thoại di động ngày càng trở nên hấp
dẫn đối với các công ty công nghệ. Ngƣời tiêu dùng đang có xu hƣớng sử dụng điện
thoại để truy cập Internet, nghe nhạc số và chơi game đã làm từng bƣớc thay đổi cuộc
sống của con ngƣời bởi các ứng dụng sản phẩm của công nghệ. Một trong những bộ
phận ứng dụng cơng nghệ thơng tin chính là thay đổi và giúp đỡ việc sinh hoạt hàng
ngày của mọi ngƣời trong cuộc sống. Vì vậy em đã lựa chọn đề tài “Nghiên cứu hệ
điều hành Android và xây dựng ứng dụng tìm kiếm máy rút tiền ATM” để làm đồ án
với ý nghĩa mang tính thực tế.

Trong thời gian làm đồ án em đã gặp khơng ít khó khăn nhƣng đƣợc sự giúp đỡ
hƣớng dẫn tận tình của các thầy giáo, cơ giáo trong bộ mơn lập trình – Khoa Khoa Học
Máy Tính – Trƣờng Cao Đẳng Công Nghệ Thông Tin Hữu Nghị Việt – Hàn đã giúp
em hoàn thành đƣợc đồ án này.

Do thời gian hạn chế nên đồ án khơng hồn thành hết các chức năng nhƣ dự định
ban đầu đã đặt ra. Trong quá trình thực hiện thì khơng thể tránh khỏi những sai sót,
mong thầy cơ và các bạn góp ý để em hồn thiện tốt hơn.

Em xin chân thành cảm ơn!

Trang i

MỤC LỤC

LỜI CẢM ƠN...................................................................................................................i
MỤC LỤC .................................................................................................................... ii
DANH MỤC CÁC TỪ VIẾT TẮT................................................................................iv
DANH MỤC CÁC HÌNH VẼ.........................................................................................v
Chƣơng 1. CHƢƠNG MỞ ĐẦU .....................................................................................1



1.1. Phát biểu bài toán .................................................................................................1
1.2. Mục tiêu và nhiệm vụ ...........................................................................................1

1.2.1. Mục tiêu..........................................................................................................1
1.2.2. 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 hệ thống............................................................................................2
1.4. Ý nghĩa thực tiễn của ứng dụng............................................................................2
Chƣơng 2. CƠ SỞ LÝ THUYẾT.....................................................................................3
2.1. Giới thiệu hệ điều hành Android ..........................................................................3
2.1.1. Khái niệm hệ điều hành Android ...................................................................3
2.1.2. Đặc điểm của hệ điều hành Android..............................................................3
2.1.3. Kiến trúc của hệ điều hành Android ..............................................................4
2.1.4. Các thành phần cơ bản của hệ điều hành Android........................................5
2.1.5. Android Emulator ..........................................................................................7
2.2. Lập trình trên hệ điều hành Android ....................................................................8
2.2.1. Ngôn ngữ JAVA..............................................................................................8
2.2.2. Tổng quan ngôn ngữ XML ...........................................................................10
2.2.3. Tổng quan ngôn ngữ JSON ..........................................................................10
2.2.4. Tổng quan ngôn ngữ PHP ...........................................................................11
2.2.5. Các dịch vụ của google để lập trình MapView............................................12
Chƣơng 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG ........................................................14
3.1. Yêu cầu hệ thống ................................................................................................14
3.1.1. Yêu cầu chức năng .......................................................................................14
3.1.2. Yêu cầu phi chức năng .................................................................................14
3.1.3. Yêu cầu hệ thống ..........................................................................................14
3.2. Phân tích thiết kế hệ thống .................................................................................14
3.2.1. Mơ hình hóa u cầu ....................................................................................14

3.2.2. Mơ hình hóa khái niệm.................................................................................19

Trang ii

3.2.3. Mơ hình hóa tương tác đối tượng ................................................................21
3.2.4. Mơ hình hóa hành vi ....................................................................................27
3.2.5. Thiết kế chi tiết biểu đồ lớp..........................................................................30
3.2.6. Thiết kế kiến trúc vật lý ................................................................................31
Chƣơng 4. XÂY DỰNG ỨNG DỤNG..........................................................................32
4.1. Demo chƣơng trình.............................................................................................32
4.1.1. Xây dựng giao diện của web service............................................................32
4.1.2. Xây dựng chức năng xử lý của web service .................................................34
4.1.3. Truyền dữ liệu qua các Activity ...................................................................36
4.1.4. Hiển thị Bản đồ ............................................................................................37
4.1.5. Đọc dữ liệu từ file JSON ..............................................................................39
4.2. Giao diện ứng dụng ............................................................................................40
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ....................................................................44
DANH MỤC TÀI LIỆU THAM KHẢO ..................................................................... vii
NHẬN XÉT CỦA CÁN BỘ HƢỚNG DẨN .............................................................. viii

Trang iii

DANH MỤC CÁC TỪ VIẾT TẮT

 ATM: Automated teller machine (Máy rút tiền tự động).
 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.
 GPS: Global Positioning System (Hệ thống định vị toàn cầu).
 XML: eXtensible Markup Language (Ngôn ngữ đánh dấu mở rộng).

 SDK: Software Development Kit (Bộ công cụ phát triển phần mềm).

Trang iv

DANH MỤC CÁC HÌNH VẼ

Số hiệu hình vẽ Tên hình vẽ Trang
Hình 2.1. Kiến trúc Android 4
Hình 2.2. Cách biên dịch chƣơng trình truyền thống 9
Hình 2.3. Cơ chế biên dịch của JAVA 9
Hình 2.4. Ví dụ về Google Map 12
Hình 2.5. Ví dụ Google Places API 13
Hình 3.1. Biểu đồ trƣờng hợp sử dụng tổng quát 17
Hình 3.2. Biểu đồ trƣờng hợp sử dụng cập nhật danh sách ngân hàng 18
Hình 3.3. Biểu đồ trƣờng hợp sử dụng cập nhật danh sách tỉnh thành 18
Hình 3.4. Biểu đồ trƣờng hợp sử dụng cập nhật danh sách quận 18
huyện
Hình 3.5. Biểu đồ trƣờng hợp sử dụng cập nhật danh sách địa điểm 19
Hình 3.6. Biểu đồ trƣờng hợp sử dụng cập nhật danh sách ngƣời 19
dùng
Hình 3.7. Các lớp biên 20
Hình 3.8. Các lớp điều khiển 20
Hình 3.9. Các lớp thực thể ở mức phân tích 21
Hình 3.10. Biểu đồ trình tự khởi động hệ thống 21
Hình 3.11. Biểu đồ trình tự đóng hệ thống 22
Hình 3.12. Biểu đồ trình tự tìm kiếm 22
Hình 3.13. Biểu đồ trình tự ngƣời dùng đăng ký tài khoản 22
Hình 3.14. Biểu đồ trình tự đăng nhập 23
Hình 3.15. Biểu đồ trình tự góp ý 23
Hình 3.16. Biểu đồ trình tự xem ATM trên bản đồ 23

Hình 3.17. Biểu đồ trình tự thêm danh sách địa điểm 24
Hình 3.18. Biểu đồ trình tự sửa danh sách địa điểm 24
Hình 3.19. Biểu đồ trình tự xóa danh sách địa điểm 24
Hình 3.20. Biểu đồ cộng tác khởi động hệ thống 25
Hình 3.21. Biểu đồ cộng tác đóng hệ thống 25
Hình 3.22. Biểu đồ cộng tác tìm kiếm 25
Hình 3.23. Biểu đồ cộng tác đăng ký 26
Hình 3.24. Biểu đồ cộng tác đăng nhập 26
Hình 3.25. Biểu đồ cộng tác góp ý 26
Hình 3.26. Biểu đồ cộng tác thêm địa điểm 26

Trang v

Hình 3.27. Biểu đồ cộng tác sửa địa điểm 27

Hình 3.28. Biểu đồ cộng tác xóa địa điểm 27

Hình 3.29. Biểu đồ cộng tác xem ATM trên bản đồ 27

Hình 3.30. Biểu đồ trạng thái mở hệ thống 27

Hình 3.31. Biểu đồ trạng thái tìm kiếm 28

Hình 3.32. Biểu đồ trạng thái gửi góp ý 28

Hình 3.33. Biểu đồ trạng thái xem ATM trong danh sách u thích 28

Hình 3.34. Biểu đồ hoạt động mở hệ thống 28

Hình 3.35. Biểu đồ hoạt động đóng hệ thống 29


Hình 3.36. Biểu đồ hoạt động cập nhật danh sách ngân hàng 29

Hình 3.37. Biểu đồ hoạt động tìm kiếm 29

Hình 3.38. Biểu đồ hoạt động gửi góp ý 30

Hình 3.39. Chi tiết biểu đồ lớp 30

Hình 3.40. Biểu đồ thành phần 31

Hình 3.41. Biểu đồ triển khai 31

Hình 4.1. Giao diện chính của web service 32

Hình 4.2. Giao diện danh sách địa điểm ATM 32

Hình 4.3. Giao diện thêm tài khoản 33

Hình 4.4. Giao diện xóa tài khoản 33

Hình 4.5. Quá trình xử lý của web service 34

Hình 4.6. Mơ hình trao đổi dữ liệu giữa 2 Activity 36

Hình 4.7. Cấu trúc một Intent 36

Hình 4.8. Quá trình lấy dữ liệu từ Google Map 37

Hình 4.9. Quá trình sử dụng tài nguyên hệ thống 37


Hình 4.10. Quá trình đánh dấu trên bản đồ 38

Hình 4.11. Mơ hình xác định mảng giá trị trong JSON 39

Hình 4.12. Giao diện chính của chƣơng trình 40

Hình 4.13. Giao diện tìm kiếm 40

Hình 4.14. Giao diện kết quả tìm kiếm 41

Hình 4.15. Giao diện tính đánh dấu địa điểm và tính vẽ đƣờng 41

Hình 4.16. Giao diện góp ý và giao diện thông tin tài khoản 42

Hình 4.17. Giao diện đăng ký và đăng nhập 42

Hình 4.18. Giao diện xem địa điểm yêu thích 43

Hình 4.19. Giao diện xem ATM trên bản đồ 43

Trang vi

Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android

Chƣơng 1. CHƢƠNG MỞ ĐẦU

1.1. Phát biểu bài toán
Ngày nay các thiết bị số cầm tay nhƣ điện thoại di động, điện thoại thơng minh,


máy tính bảng có rất nhiều trên thị trƣờng. Với giá thành ngày càng rẻ và các lợi ích
đem lại, các thiết bị đó ngày càng đƣợc sử dụng nhiều và phổ biến. Một nền tảng đƣợc
sử dụng trong các thiết bị đó là hệ điều hành thơng minh Android của Google. Do vậy
đi cùng việc phát triển và sử dụng các thiết bị phần cứng một cách hiệu quả thì việc
phát triển các ứng dụng phần mềm chạy trên nền Android càng lúc càng tăng cao.

Các thiết bị di động ngày càng mạnh mẽ với khả năng xử lí các tác vụ mà chúng
ta khó có thể tƣởng tƣợng trƣớc đây vài năm. Những chiếc điện thoại thời trang và tiện
dụng với những tính năng về phần cứng nhƣ GPS, gia tốc kế và màn hình cảm ứng là
một nền tảng hấp dẫn cho các ứng dụng di động đột phá. Trong khi việc phát triển nền
tảng di động hiện nay chủ yếu xây dựng trên các hệ điều hành độc quyền, hạn chế các
ứng dụng của bên thứ ba, sự ra đời của Android đã mang lại một giải pháp mở. Khơng
bị hạn chế, các lập trình viên Android tự do viết các ứng dụng tận dụng tối đa sự phát
triển mạnh mẽ của phần cứng cho điện thoại di động. Android nhanh chóng trở thành
hệ điều hành thu hút nhiều lập trình viên và chiếm một thị phần lớn trong thị trƣờng di
động.

Việc sử dụng các thiết bị số ngồi khả năng hỗ trợ con ngƣời trong cơng việc,
giải trí mà cịn giúp con ngƣời tiết kiệm thời gian hơn vào nhiều công việc thực tiễn
trong đời sống hằng ngày. Hiện nay một hình thức lƣu giữ tiền khá phổ biến trong
cuộc sống đó là thẻ rút tiền ATM, nó đƣợc dùng để chi trả lƣơng cho nhiều nhân viên
của các công ty, doanh nghiệp, hay dùng để gởi tiền cho sinh viên ở xa nhà. Vì vậy
việc tìm kiếm các địa điểm để sử dụng thẻ là điều khá hữu dụng trong cuộc sống, khi
mà trong một số trƣờng hợp chúng ta rất khó có thể xác định cột thẻ trong hàng ngàn
địa điểm trong thành phố hay các khu vực khác.

1.2. Mục tiêu và nhiệm vụ
1.2.1. 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 để hồn thành

đƣợc ứng dụng có thể tìm kiếm nhanh và chính xác vị trí máy ATM.
 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.

Trần Ánh Bang – CCLT04C Trang 1

Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành 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, tƣơng tác với các tài nguyên của hệ thống (GPS, Internet,
TouchScreen), sử dụng các dịch vụ của Google nhƣ Google Map, Google Places
API…
 Tìm hiểu xây dựng một cơ sở dữ liệu bằng MySql. Xây dựng một web service
để quản lý và cập nhật thông tin cho ứng dụng.

1.2.2. Nhiệm vụ
 Đọc các tài liệu liên quan 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 đến ứng dụng.

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ữ lập trình JAVA, XML, PHP.
 Hệ cơ sở dữ liệu MySQL.
 Công cụ Android SDK Eclipse.
 Hệ điều hành và tài nguyên hệ thống Android.
 Các dịch vụ của Google nhƣ Google Map, Google Places API…

1.3.2. Phạm vi hệ thống

 Đề tài chỉ dừng lại ở khuôn khổ tìm kiếm địa chỉ đặt các trạm ATM theo tỉnh
thành phố ở Việt Nam. Ứng dụng đƣợc viết trên nền hệ điều hành Android, Web
Service đƣợc đƣợc viết bằng PHP và dùng CSDL MySQL.

1.4. Ý nghĩa thực tiễn của ứng dụng
 Chƣơng trình có thể áp dụng vào cuộc sống hàng ngày để tìm kiếm máy ATM
trên tồn quốc khi có nhu cầu mà đến cả những ngƣời có ít kiến thức về cơng nghệ
có thể sử dụng.

Trần Ánh Bang – CCLT04C Trang 2

Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android

Chƣơng 2. CƠ SỞ LÝ THUYẾT

2.1. Giới thiệu hệ điều hành Android
2.1.1. Khái niệm hệ điều hành Android

Android là hệ điều hành trên các thiết bị số di động nhƣ smartphone và tablet (và
hiện nay là cả trên một số đầu phát HD, HD Player) phát triển bởi Google và dựa trên
nền tảng Linux. Trƣớc đây, Android đƣợc phát triển bởi công ty liên hợp Android.
Vào năm 2005, Google đã mua lại Android nằm trong chiến lƣợc tiến vào thị trƣờng di
động. Google muốn Android trở thành nền tảng “mở” và miễn phí. Do vậy hầu hết mã
nguồn của Android đƣợc phát hành theo giấy phép mã nguồn mở Apache nên bất cứ ai
muốn sử dụng Android có thể download tồn bộ mã nguồn. Hơn nữa các nhà sản xuất
phần cứng có thể thêm các thành phần mở rộng độc quyền của hãng để tạo ra các sản
phẩm khác nhau. Chính mơ hình phát triển đơn giản này khiến Android trở nên rất hấp
dẫn. Android có một cộng đồng những nhà phát triển rất lớn viết các ứng dụng cho hệ
điều hành của mình.


Hiện tại có khoảng hơn 250,000 ứng dụng cho Android OS và vào khoảng hơn
375,000 ứng dụng đã đƣợc đệ trình, điều này khiến Android trở thành hệ điều hành di
động có mơi trƣờng phát triển lớn thứ 2. Các nhà phát triển viết ứng dụng cho Android
dựa trên ngôn ngữ Java. 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 của Android theo bản
cấp phép Apache. Hệ điều hành Android bao gồm 12 triệu dòng mã; 3 triệu dòng
XML, 2.8 triệu dòng mã C, 2.1 triệu mã Java và 1.75 triệu dòng mã C++.

2.1.2. Đặc điểm của hệ điều hành Android
 Aplication framework: cho phép tái sử dụng và thay thế các thành phần.
 Davik virtual machine: tối ưu các yêu cầu bộ nhớ cần thiết cho việc phát triển
các ứng dụng trên thiết bị di động.
 Intergrated browser: dựa trên mã nguồn mở webkit động.
 Optimized graphics: hỗ trợ thư viện đồ họa 2D, 3D dựa trên các đặc điểm kỹ
thuật OpenGL ES 1,0 (phần cứng tăng tốc tùy chọn).
 SQLite: lưu trữ cấu trúc dữ liệu.
 Media Support: hỗ trợ các định dạng âm thanh, video, hình ảnh phổ biến

Trần Ánh Bang – CCLT04C Trang 3

Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android

(MPEG4, H.264, MP3, AAC, ARM, JPG, PNG, GIF).
 GSM Telephony (phụ thuộc phần cứng).
 Bluetooth, EDGE, 3G, WIFI (phụ thuộc phần cứng).
 Camera, GPS, compass, and accelronment:bao gồm thiết bị giả lập (Emutor)
công cụ debugging. Công cụ cho bộ nhớ và Plugin cho Eclipse IDE.


2.1.3. Kiến trúc của hệ điều hành Android
Mơ hình sau thể hiện một cách tổng qt 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. Kiến trúc Android

 Applications: Android đƣợc tích hợp sẵn một số ứng dụng cần thiết cơ bản nhƣ:
contacts, browser, camera, Phone.… Tất cả các ứng dụng chạy trên hệ điều hành
Android đều đƣợc viết bằng Java.

 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.

 Library: Android bao gồm một bộ thƣ viện C/C++, đƣợc sử dụng bởi các thành
phần khác nhau của hệ thống Android. Những khả năng tiếp xúc với các nhà phát triển

Trần Ánh Bang – CCLT04C Trang 4

Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android

thông qua các khuôn khổ ứng dụng Android. Ví dụ một số thƣ viện nhƣ “System C
library, Media Libraries, Surface Manager,LibWebCore, SQLite…”

 Android Runtime: Android bao gồm một tập hợp các thƣ viện cơ bản cung cấp
hầu hết các chức năng có sẵn trong các thƣ viện lõi của ngơn ngữ lập trình Java. Tất cả
các ứng dụng Android đều chạy trong tiến trình riêng. Máy ảo Dalvik đã đƣợc viết để

cho một thiết bị có thể chạy nhiều máy ảo hiệu quả. Các VM Dalvik thực thi các tập
tin thực thi Dalvik (dex). Định dạng đƣợc tối ƣu hóa cho bộ nhớ tối thiểu. VM là dựa
trên register-based, và chạy các lớp đã đƣợc biên dịch bởi một trình biên dịch Java để
chuyển đổi thành các định dạng dex. Các VM Dalvik dựa vào nhân Linux cho các
chức năng cơ bản nhƣ luồng và quản lý bộ nhớ thấp.

 Linux kernel: Android dựa trên Linux phiên bản 2.6 cho hệ thống dịch vụ cốt
lõi nhƣ security, memory management, process management, network stack, and
driver model. Kernel Linux hoạt động nhƣ một lớp trừu tƣợng hóa giữa phần cứng và
phần cịn lại của phần mềm stack.

2.1.4. Các thành phần cơ bản của hệ điều hành Android
 Ứng dụng Android bao gồm nhiều thành phần liên kết với nhau đƣợc giới hạn
trong kiến trúc ứng dụng. Kiến trúc ứng dụng mô tả chi tiết mỗi thành phần và sự
tƣơng tác giữa các thành phần này cũng nhƣ siêu dữ liệu về yêu cầu phần cứng.
 Các thành phần sau đây tạo nên một ứng dụng Android:
 Activity: là lớp thể hiện ứng dụng. Mỗi màn hình trong ứng dụng là một
mở rộng của lớp Activity. Các Activity sử dụng các View tạo thành giao diện đồ
họa tƣơng tác ngƣời dùng để thể hiện thông tin và phản hồi hành động của ngƣời
dùng.
 Service: là thành phần chạy ẩn, cập nhật nguồn dữ liệu và thể hiện các
Activity, kích hoạt các Notification. Các Service thƣờng thực hiện các xử lí thơng
thƣờng nhƣ tiếp tục Activity sau khi các Activity này không hoạt động hoặc hiển
thị.
 Content Provider: là thành phần lƣu trữ dữ liệu chia sẻ. Content
Provider quản lí và chia sẻ cơ sở dữ liệu của ứng dụng. Chúng đƣợc coi nhƣ là
phƣơng tiện chia sẻ dữ liệu giữa các ứng dụng.
 Intent: là cấu trúc truyền thông điệp giữa các ứng dụng. Chúng ta có thể
sử dụng Intent để truyền một thơng tin tới tồn hệ thống hay tới Activity hay


Trần Ánh Bang – CCLT04C Trang 5

Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android

Service định trƣớc để thực thi một hoạt động. Hệ thống sau đó sẽ xác định đối
tƣợng nào sẽ thực hiện các hoạt động phù hợp.

 Broadcast Receiver: là nơi nhận các Intent. Chúng ta có thể tự tạo một
Broadcast Receiver để ứng dụng có thể nhận đƣợc các Intent phù hợp với bộ lọc
đặt trƣớc. Broadcast Receiver tự động bắt đầu khi ứng dụng phản hồi với Intent
nhận đƣợc và biến ứng dụng trở thành hƣớng sự kiện một cách hoàn hảo.

 Widget: thành phần trực quan của ứng dụng có thể thêm vào màn hình
chính. Là một dạng Broadcast Receiver, Widget cho phép ngƣời dùng tạo ra các
ứng dụng động, tƣơng tác đƣợc nhúng ngay trên màn hình chính.

 Notification: là thành phần thông báo cho ngƣời dùng. Hộp thoại thông
báo cho ngƣời dùng mà không gián đoạn các Activity hiện thời. Đây là kĩ thuật
thông báo cho ngƣời dùng nằm trong một Service hay một Broadcast Receiver. Ví
dụ nhƣ khi nhận đƣợc một tin nhắn hay cuộc gọi đến có thể thơng báo cho ngƣời
dùng bằng nhấp nháy đèn hay bằng âm thanh…
 Một ứng dụng không nhất thiết phải gồm tất cả các thành phần trên nhƣng để có
một giao diện với ngƣời dùng thì ít nhất ứng dụng đó phải có một Activity. Mã đã
đƣợc biên dịch của các thành phần của ứng dụng, tài nguyên liên quan nhƣ thƣ viện,
hình ảnh và các dữ liệu cần thiết khác đƣợc đóng gói trong một file apk duy nhất
chính là dạng file thực thi của ứng dụng Android.
 Nhƣ đã trình bày ở trên, Activity là thành phần quan trọng nhất và đóng vai trị
chính trong việc xây dựng ứng dụng Android. Hệ điều hành Android quản lí ứng
dụng dƣới dạng stack: khi một Activity mới đƣợc khởi tạo, nó đƣợc xếp lên đầu
stack và trở thành running activity, các Actitivy trƣớc đó sẽ bị tạm dừng và chỉ hoạt

động trở lại khi Activity mới đƣợc giải phóng.
 Activity có 4 trạng thái

 Active (running): Activity đang hiển thị trên màn hình (foreground).
 Pause: Activity vẫn hiển thị (visible) nhƣng không thể tƣơng tác. VD:
một activity mới xuất hiện hiển thị giao diện đè lên trên activity cũ, nhƣng giao
diện này vẫn nhỏ hơn giao diện activity cũ. Do đó ta vẫn thấy đƣợc một phần giao
diện của activity cũ nhƣng khơng tƣơng tác đƣợc với nó.
 Stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng
thái stop.

Trần Ánh Bang – CCLT04C Trang 6

Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android

 Killed: Khi hệ thống thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo
nguyên tắc ƣu tiên ở trên. Các Activity ở trạng thái stop hoặc paused cũng có thể
bị giải phóng và khi nó đƣợc hiển thị lại thì các Activity này phải khởi động lại
hoàn toàn và phục hồi trạng thái trƣớc đó.
 Tuỳ từng sự kiện mà các phƣơng thức đƣợc gọi để đảm bảo trạng thái các
Activity đƣợc hoạt động đúng. Chi tiết từng phƣơng thức và sự kiện thay đổi trạng
thái tƣơng ứng:

 onCreate(): Phƣơng thức này khởi tạo Activity. Nó có thể bỏ qua trạng
thái cũ để trở lại hoạt động. Phƣơng thức tiếp theo luôn là onStart().

 onRestart(): Đƣợc gọi sau khi một Activity dừng và muốn bắt đầu lại.
 onStart(): Đƣợc gọi khi ứng dụng chuyển sang visible nhƣng chƣa
tƣơng tác đƣợc với ngƣời dùng.
 onResume(): Activity có tƣơng tác với ngƣời sử dụng và có thể nhận

thơng tin đầu vào. Kiểu tiến trình của ứng dụng đƣợc chuyển sang dạng hiển thị
(foreground).
 onPause(): Nếu ứng dụng khơng cịn tƣơng tác hay thiết bị không hoạt
động, phƣơng thức này đƣợc gọi và kiểu tiến trình ứng dụng sẽ đƣợc chuyển sang
dạng visible. Sau khi thực hiện phƣơng thức này, hệ thống cho phép giải phóng
ứng dụng bất cứ lúc nào. Các thao tác sử dụng CPU và dữ liệu đều đƣợc lƣu lại.
Activity sẽ có thể đƣợc hoạt động trở lại hoặc dừng lại.
 onStop(): Khi Activity khơng cịn tƣơng tác nữa thì kiểu tiến trình đƣợc
chuyển sang chạy nền (background) và ứng dụng có thể bị giải phóng bất cứ lúc
nào bởi hệ thống để lấy lại bộ nhớ. Activity sẽ bị giải phóng hoặc khởi động lại.
 onDestroy(): Phƣơng thức cuối cùng này đƣợc hệ thống gọi trƣớc khi
giải phóng ứng dụng hay ứng dụng loại bỏ Activity. Tiến trình của ứng dụng có
thể chuyển sang kiểu rỗng nếu hệ thống muốn giữ lại ứng dụng để tiếp tục lại ứng
dụng cho lần sau.

2.1.5. Android Emulator
 Android SDK và Plugin Eclipse đƣợc gọi là một Android Deverloper Tool
(ADT). Các Android coder sẽ cần phải sử dụng công cụ IDE (Integrated
Development Enveronment) này để phát triển, debugging và testing cho ứng dụng.

Trần Ánh Bang – CCLT04C Trang 7

Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android

Tuy nhiên, các coder cũng có thể khơng cần phải sử dụng IDE mà thay vào đó là sử
dụng command line để biên dịch và tất nhiên là vẫn có Emulator nhƣ thƣờng.
 Android Emulator đƣợc trang bị đầy đủ hầu hết các tính năng của một thiết bị
thật. Tuy nhiên, một số đã bị giới hạn nhƣ là kết nối qua cổng USB, camera và
video, nghe phone, nguồn điện giả lập và bluetooth.
 Android Emulator thực hiện các công việc thông qua một bộ xử lý mã nguồn

mở, công nghệ này đƣợc gọi là QEMU ( đƣợc phát triển
bởi Fabrice Bellard.
2.2. Lập trình trên hệ điều hành Android
2.2.1. Ngôn ngữ JAVA
 Tổng quan ngôn ngữ JAVA

 Java là một ngôn ngữ lập trình dạng lập trình hƣớng đối tƣợng (OOP).
Khác với phần lớn ngôn ngữ lập trình thơng thƣờng, thay vì biên dịch mã nguồn
thành mã máy hoặc thông dịch mã nguồn khi chạy, Java đƣợc thiết kế để biên dịch
mã nguồn thành bytecode, bytecode sau đó sẽ đƣợc mơi trƣờng thực thi (runtime
environment) chạy. Bằng cách này, Java thƣờng chạy chậm hơn những ngôn ngữ
lập trình thơng dịch khác nhƣ C++, Python, Perl, PHP, C#...

 Trình biên dịch thƣờng phải tốn nhiều thời gian để xây dựng nên rất đắt,
vì vậy để mỗi loại CPU có một trình biên dịch riêng là rất tốn kém. Do đó nhu cầu
thực tế địi hỏi một ngơn ngữ chạy nhanh, gọn, hiệu quả và độc lập thiết bị tức là
có thể chạy trên nhiều loại CPU khác nhau, dƣới các môi trƣờng khác nhau. “Oak”
đã ra đời và vào năm 1995 đƣợc đổi tên thành Java.
 Một số tính chất ngơn ngữ JAVA

 Cú pháp Java đƣợc vay mƣợn nhiều từ C C++ nhƣng có cú pháp
hƣớng đối tƣợng đơn giản hơn và ít tính năng xử lý cấp thấp hơn. Do đó việc viết
một chƣơng trình bằng Java dễ hơn, đơn giản hơn, đỡ tốn công sửa lỗi hơn. Dùng
bộ thƣ viện chuẩn KFC, nhiều đoạn code Java chỉ mất vài dòng trong khi C phải
mất cả trang giấy.

 Đơn giản: Những ngƣời thiết kế mong muốn phát triển một ngôn ngữ dễ
học và quen thuộc với đa số ngƣời lập trình. Do vậy Java loại bỏ các đặc trƣng
phức tạp của C và C++.


 Hƣớng đối tƣợng: Java là ngôn ngữ lập trình thuần hƣớng đối tƣợng, mọi
chƣơng trình viết trên Java đều phải đƣợc xây dựng trên các đối tƣợng. Nếu trong

Trần Ánh Bang – CCLT04C Trang 8

Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android

C/C++ ta có thể tạo ra các hàm (chƣơng trình con khơng gắn với đối tƣợng nào)
thì trong Java ta chỉ có thể tạo ra các phƣơng thức (chƣơng trình con gắn liền với
một lớp cụ thể). Trong Java không cho phép các đối tƣợng có tính năng đa kế thừa
mà đƣợc thay thế bằng các giao diện (interface).

 Độc lập phần cứng và hệ điều hành: Đối với các ngơn ngữ lập trình
truyền thống nhƣ C/C++, phƣơng pháp biên dịch đƣợc thực hiện nhƣ sau.

Hình 2.2. Cách biên dịch chương trình truyền thống

Hình 2.3. Cơ chế biên dịch của JAVA

 Mạnh mẽ:
 Java là ngôn ngữ yêu cầu chặt chẽ về kiểu dữ liệu.
 Kiểu dữ liệu phải khai báo tƣờng minh.
 Java khơng sử dụng con trỏ và các phép tốn con trỏ.
 Java kiểm tra tất cả các truy nhập đến mảng, chuỗi khi thực thi để đảm
bảo rằng các truy nhập đó khơng ra ngồi giới hạn kích thƣớc.
 Tự động giải phóng bộ nhớ
 Cơ chế bẫy lỗi của Java giúp đơn giản hóa quá trình xử lý lỗi và hồi
phục sau lỗi.

Trần Ánh Bang – CCLT04C Trang 9


Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android

 Bảo mật: Java cung cấp một môi trƣờng quản lý thực thi chƣơng trình
với nhiều mức để kiểm sốt tính an tồn:

 Phân tán: Java đƣợc thiết kế để hỗ trợ các ứng dụng chạy trên mạng bằng
các lớp mạng (java.net). Hơn nữa, Java hỗ trợ nhiều nền chạy khác nhau nên
chúng đƣợc sử dụng rộng rãi nhƣ là công cụ phát triển trên Internet - nơi sử dụng
nhiều nền khác nhau.

 Đa luồng: Chƣơng trình Java cung cấp giải pháp đa luồng
(Multithreading) để thực thi các công việc đồng thời. Chúng cũng cung cấp giải
pháp đồng bộ giữa các luồng. Đặc tính hỗ trợ đa luồng này cho phép xây dựng các
ứng dụng trên mạng chạy hiệu quả.

 Linh động: Java đƣợc thiết kế nhƣ một ngôn ngữ động để đáp ứng cho
những môi trƣờng mở. Các chƣơng trình Java chứa rất nhiều thơng tin thực thi
nhằm kiểm soát và truy nhập đối tƣợng lúc chạy. Điều này cho phép khả năng liên
kết mã động.

2.2.2. Tổng quan ngôn ngữ XML
 XML, hoặc Extensible Markup Language (ngôn ngữ đánh dấu mở rộng), là một
ngơn ngữ đánh dấu mà bạn có thể sử dụng để tạo ra thẻ riêng của mình. Nó đƣợc
tạo nên bởi Liên minh mạng toàn cầu, nhằm khắc phục những hạn chế của HTML -
ngôn ngữ đánh dấu siêu văn bản, là cơ sở của mọi trang Web. Giống nhƣ HTML,
XML cũng đƣợc dựa trên SGML – Standard Generalized Markup Language. Mặc
dù SGML đƣợc sử dụng trong ngành công nghiệp xuất bản trong nhiều thập kỷ,
nhƣng sự phức tạp của nó đều khiến những ai từng sử dụng nó mà khơng có cách
nào khác phải thấy mệt mỏi.


2.2.3. Tổng quan ngôn ngữ JSON
 JSON (JavaScript Object Noattion) là một chuẩn để định dạng dữ liệu. Rất dễ
dàng để đọc, viết và phân tích. Nó dựa trên cơ sở tập hợp của ngôn ngữ JavaScript,
tiêu chuẩn ECMA-262 phiên bản 3 – tháng 12 năm 1999. Khi sử dụng JSON không
cần phải có các bƣớc phân tích phức tạp nhƣ đối với XML. Mà có thể truy vấn trực
tiếp giá trị theo tên (khóa) đƣợc định nghĩa trong JSON. Đứng về mặt tốc độ của
các ứng dụng di động đây là một ƣu điểm rất lớn.
 JSON đƣợc xây dựng trên 2 cấu trúc:
 Là tập hợp của các cặp tên và giá trị name-value.

Trần Ánh Bang – CCLT04C Trang 10

Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android

 Là 1 tập hợp các giá trị đã đƣợc sắp xếp.
 Các đặc điểm của JSON:

 JSON là văn bản trơn (khơng có định dạng màu sắc, cỡ chữ,…)
 JSON là "tự mô tả" (ngƣời dùng có thể hiểu đƣợc)
 JSON là phân cấp (có cấu trúc cây)
 JSON có thể đƣợc phân tích cú pháp (parse) bởi JavaScript
 Dữ liệu JSON có thể đƣợc truyền đi bằng AJAX
 Khơng có thẻ kết thúc
 Ngắn hơn
 Nhanh hơn để đọc và ghi
 Sử dụng mảng (Array)
 Không dùng các từ reserve

2.2.4. Tổng quan ngôn ngữ PHP

 Tóm tắt sơ lƣợc về PHP
 PHP đƣợc phát triển từ một sản phẩm có tên là PHP/FI. PHP/FI do
Rasmus Lerdorf tạo ra năm 1995. Rasmus đã quyết định công bố mã nguồn của
PHP/FI cho mọi ngƣời xem, sử dụng cũng nhƣ sửa các lỗi có trong nó đồng thời
cải tiến mã nguồn.
 Vào năm 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C. PHP/FI
2.0 đƣợc chính thức cơng bố vào tháng 11 năm 1997.
 PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi
với các phiên bản PHP mà chúng ta đƣợc biết ngày nay. Nó đã đƣợc Andi
Gutmans và Zeev Suraski tạo ra năm 1997. PHP 3.0 đã chính thức đƣợc cơng bố
vào tháng 6 năm 1998, sau thời gian 9 tháng đƣợc cộng đồng kiểm nghiệm.
 PHP 4.0 đã chính thức đƣợc cơng bố vào tháng 5 năm 2000, gần 2 năm
sau khi bản PHP 3.0 ra đời. Ngoài tốc độ xử lý đƣợc cải thiện rất nhiều, PHP 4.0
đem đến các tính năng chủ yếu khác gồm có sự hỗ trợ nhiều máy chủ Web hơn, hỗ
trợ phiên làm việc HTTP, tạo bộ đệm thông tin đầu ra, nhiều cách xử lý thông tin
ngƣời sử dụng nhập vào bảo mật hơn và cung cấp một vài các cấu trúc ngôn ngữ
mới.
 PHP 5 bản chính thức đã ra mắt ngày 13 tháng 7 năm 2004 sau một
chuỗi khá dài các bản kiểm tra thử bao gồm Beta 4, RC1, RC2, RC3. Mặc dù coi

Trần Ánh Bang – CCLT04C Trang 11

Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android

đây là phiên bản sản xuất đầu tiên nhƣng PHP 5.0 vẫn còn một số lỗi trong đó
đáng kể là lỗi xác thực HTTP.

 Hiện nay phiên bản tiếp theo của PHP đang đƣợc phát triển, PHP 6 bản
sử dụng thử đã có thể đƣợc download tại địa chỉ . Phiên bản
PHP 6 đƣợc kỳ vọng sẽ lấp đầy những khiếm khuyết của PHP ở phiên bản hiện

tại.
 Lý do chọn ngôn ngữ PHP

 Viết mã PHP trở nên khá trực quan và dễ dàng trong việc xây dựng phần
giao diện ứng dụng HTTP.

 Rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML.
 Tối ƣu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn.
 Dễ học và thời gian xây dựng sản phẩm tƣơng đối ngắn hơn so với các
ngôn ngữ khác.

2.2.5. Các dịch vụ của google để lập trình MapView

 Để làm việc tốt với hệ thống bản đồ của google, thì cần sử dụng một số các dịch

vụ cần thiết để lập trình sau:
 Google Maps: (thời gian trƣớc còn gọi là Google Local) là một dịch vụ

ứng dụng và công nghệ bản đồ trực tuyến trên web miễn phí đƣợc cung cấp bởi
Google và hỗ trợ nhiều dịch vụ dựa vào bản đồ nhƣ Google Ride Finder và một số
có thể dùng để nhúng vào các trang web của bên thứ ba thông qua Google Maps
API. Nó cho phép thấy bản đồ đƣờng sá, đƣờng đi cho xe đạp, cho ngƣời đi bộ
(những đƣờng đi ngắn hơn 6.2 dặm) và xe hơi, và những địa điểm kinh doanh
trong khu vực cũng nhƣ khắp nơi trên thế giới.

Hình 2.4. Ví dụ về Google Map Trang 12

Trần Ánh Bang – CCLT04C

Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android


 Google Places API: là một dịch vụ của Google INC mà khi sử dụng
chúng ta sẽ nhận đƣợc các thông tin về các địa điểm đã đƣợc đánh dấu trên bản đổ
Google Maps bởi các tổ chức, công ty và cá nhân ở khắp nơi trên thế giới. Để sử
dụng đƣợc dịch vụ này chúng ta phải đăng ký API key dịch vụ Google Places với
google (Sử dụng miễn phí có giới hạn số lần request/day).

Hình 2.5. Ví dụ Google Places API
 Google Directions API: là một dịch vụ của Google INC mà khi sử dụng
chúng ta sẽ đƣa vào tọa độ 2 địa điểm đầu cuối rồi sau đó sẽ đƣợc nhận thông tin
về khoảng cách giữa 2 địa điểm, tọa độ GPS, thời gian đi lại dự kiến với các
phƣơng tiên nhƣ xe máy, ô tô hay là đi bộ.
 Google Geocoding API: Đây là một dịch vụ nữa của google cho phép
chúng ta xác định các địa điểm đi qua trên đƣờng đi giữa 2 vị trí xác định.

Trần Ánh Bang – CCLT04C Trang 13

Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android

Chƣơng 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG

3.1. Yêu cầu hệ thống
3.1.1. Yêu cầu chức năng

 Tìm kiếm theo các tiêu chí.
 Xem các ATM trong danh sách yêu thích.
 Xem ATM trên bản đồ Google Map.
 Gửi góp ý.
 Đăng nhập, đăng ký.
 Xem thông tin tài khoản, cập nhật thông tin tài khoản.

 Thêm, sửa, xóa danh sách ngân hàng.
 Thêm, sửa, xóa danh sách tình thành.
 Thêm, sửa, xóa danh sách quận huyện.
 Thêm, sửa, xóa danh sách địa điểm ATM.
 Xem liên hệ.

3.1.2. Yêu cầu phi chức năng
 Chƣơng trình thực hiện chính xác kết quả với sai số nhỏ và cơ sở dữ liệu lớn.
 Chƣơng trình ổn định, chính xác và có độ an tồn cao.
 Gọn nhẹ, tốn ít tài nguyên hệ thống.
 Hạn chế đến mức thấp nhất những sai sót có thể xảy ra trong q trình sử dụng.
 Sử dụng hệ thống dữ liệu hợp lí.
 Giao diện thân thiện, dễ sử dụng.

3.1.3. Yêu cầu hệ thống
 Sử dụng hệ điều hành Android phiên bản mới hơn 2.3.
 Có kết nối Internet và hỗ trợ GPS để sử dụng chức năng xem các ATM ở gần,
vẽ đƣờng và tính khoảng cách.

3.2. Phân tích thiết kế hệ thống
3.2.1. Mơ hình hóa u cầu

 Xác định tác nhân:
 Ngƣời sử dụng: Là ngƣời trực tiếp sử dụng phần mềm để tìm kiếm các

máy ATM hay góp ý cho ngƣời phát triển.
 Ngƣời quản lý: Là ngƣời quản lý sử dụng giao diện web service để xem,

cập nhật, xóa danh sách ngân hàng, danh sách địa điểm, danh sách tỉnh thành….


Trần Ánh Bang – CCLT04C Trang 14


×