Tải bản đầy đủ (.docx) (44 trang)

Đề tài tìm hiể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.35 MB, 44 trang )

Đề tài: Tìm hiể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
MỤC LỤC

Đề tài: Tìm hiể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
PHẦN A - GIỚI THIỆU ĐƠN VỊ THỰC TẬP
Đơn vị: Học Viện Công Nghệ Bưu Chính Viễn Thông
Địa chỉ: Km10, Đường Nguyễn Trãi, Q.Hà Đông, Hà Nội
I. Chức năng:
- Quản lý và thực hiện công tác đào tạo nhân lực thuộc các lĩnh vực khoa học kỹ
thuật về công nghệ thông tin.
- Đào tạo đại học, sau đại học (Thạc sĩ, tiến sĩ), đào tạo chuyên gia công nghệ
thông tin và truyền thông theo tất cả các hình thức đào tạo.
- Đào tạo, bồi dưỡng nâng cao trình độ nghiệp vụ và huấn luyện nhân lực thuộc
lĩnh vực công nghệ thông tin và truyền thông theo nhu cầu xã hội.
- Thực hiện công tác nghiên cứu khoa học, nghiên cứu phát triển, úng dụng, sản
xuất thử nghiệm các sản phẩm (quy trình/phần cứng/phần mềm/ giải pháp) trong lĩnh vực
công nghệ thông tin và truyền thông.
- Tư vấn chuyển giao công nghệ và các dịch vụ khoa học kỹ thuật khác.
- Thực hiện hợp tác đào tạo, nghiên cứu khoa học và chuyển giao công nghệ với
các đối tác trong nước và nước ngoài theo quy định của pháp luật và của Học Viện Công
Nghệ Bưu Chính Viễn Thông.
II. Tổ chức
Được thành lập năm 1999 trong xu thế cạnh tranh và hội nhập toàn cầu. Trung tâm
Công Nghệ Thông Tin CDIT với vai trò là đơn vị nghiên cứu phát triển hàng đầu trong
lĩnh vực công nghệ thông tin, xác định: Việc lĩnh hội, đúc kết và phát huy tiềm năng, nội
lực, làm chủ công nghệ là mục tiêu chiến lược nhằm thực hiện thành công định hướng
gắn kết Nghiên cứu – Đào tạo - Sản xuất Kinh doanh. CDIT đã duy trì, phát triển và
chiễm lĩnh thị trường trong nước với các sản phẩm đáp ứng tiêu chí: Tiên tiến – Tương
thích – toàn cầu, thay thế các sản phẩm nhập khẩu, nỗ lực đóng góp cho sự phát triển của
mạng lưới bưu chính viễn thông và công nghệ thông tin Việt Nam, vươn mình hòa nhập
với cộng động CNTT trong khu vực và thế giới.


Đề tài: Tìm hiể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
Trung tâm Công nghệ Thông tin CDIT được Tổng giám đốc Tổng công ty Bưu chính
Viễn Thông Việt Nam ký quyết định thành lập số 636/QĐ.TCCB-LĐ ngày 22 tháng 3
năm 1999, trên cơ sở sắp xếp lại hai đơn vị thành viên của các đơn vị trực thuộc Học viện
Công nghệ Bưu Chính Viễn thông:
1. Trung tâm Nghiên cứu Phát triển Phần mềm thuộc Viên khoa học kỹ thuật Bưu
Điện;
2. Trung tâm Đào tạo phát triển phần mềm thuộc Trung tâm Đào tạo BCVT1(cũ).
Cùng với sự phát triển của nghành Công nghệ thông tin trong xu hướng hội nhập với
Truyền thông, theo định hướng phát triển của Học viện trong giai đoạn mới, ngày 07
tháng 12 năm 2011 Tập đoàn BCVT Việt Nam đã có quyết định số 1973/QĐ-VNPT-
TCCB, đổi tên Trung tâm Công nghệ thông tin thành Viện Thông và Truyền thông CDIT
từ 01/01/2012. Viện công nghệ Thông tin và truyền thông CDIT là tổ chức đào tạo,
nghiên cứu trực thuộc Học viện, có nhiệm vụ: đào tạo, nghiên cứu khoa học và chuyển
giao công nghệ trong lĩnh vực Công nghệ thông tin và Truyền thông.
III. Lĩnh vực hoạt động
Trung tâm công nghệ thông tin hoạt động trên 5 lĩnh vực chính:
1. Nghiên cứu khoa học công nghệ
2. Phát triển, triển khai công nghệ và sản phẩm
3. Sản xuất phần mềm và thiết bị
4. Tiếp nhận và triển khai công nghệ
5. Đào tạo và bồi dưỡng nhân lực.
Đề tài: Tìm hiể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
PHẦN B - NỘI DUNG THỰC TẬP
I. GIỚI THIỆU CHUNG
1. Chủ đề thực tập : “Tìm hiể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”
– Nội dung
STT Nội dung Cách thức thực hiện Kết quả cần đạt
1

Tìm hiểu và thiết kế
cơ sở dữ liệu trên
SQLite.
- Tìm hiểu tài liệu chuyên ngành
của Android về SQLite
- Viết code tạo CSDL cho ứng
dụng bằng SQLite
- Hiểu về cách
thức hoạt động
của SQLite
- Tạo được
CSDL cho ứng
dụng.
2
Thiết kế giao diện
và bắt sự kiện của
hệ thống.
- Viết code thiết kế giao diện trên
XML của ngôn ngữ lập trình
Android
- Viết code bắt sự kiện cho từng
đối tượng thao tác
- Xây dụng các
giao diện cần
thiết cho ứng
dụng và các xử
lý bên trong
của ứng dụng.
3
Tìm hiểu và kết nối

vị trí trên bản đồ
qua google map.
- Tìm hiểu các tài liệu chuyên
ngành của Android liên quan tới
google map API
- Viết code cho ứng dụng hiển thị
vị trí của người dùng trên google
map
- Hiển thị được
vị trí của người
dùng trên
google map
4
Hoàn thiện ứng
dụng
- Kiểm tra và xử lý các lỗi phát
sinh trong quá trình viết code
- Tạo ra một ứng
dụng demo có
thể chạy được
2. Phương pháp thực hiện
Đọc các tài liệu và tham khảo các giáo trình, sách hướng dẫn lập trình android,
tham khảo các demo trên mạng để phục vụ cho bài làm…
Đề tài: Tìm hiể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
3. 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 đượ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.
 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, Google
Directions API, Google Geocoding API.
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.
4. Kết quả đạt được
4.1. Về tìm hiểu hệ điều hành Android
- Hiểu và nắm rõ các bước tạo ra 1 Project trong android
- Hiểu và nắm được các thành phần cơ bản của Android như: Vòng đời của 1 ứng
dụng, các thành phần cơ bản cấu thành nên 1 ứng dụng TabHost, Button, TextView,
Activity…
- Hiểu và biết cách giao tiếp với Google maps API để hiện các vị trí trên maps và
vẽ đường đi thông qua các dịch vụ của google Google Directions API và Google
Geocoding API
4.2 Về xây dựng ứng dụng
Trong thời gian ngắn chương trình Tìm kiếm ATM đã đạt được một số kết quả như sau:
- Tìm và hiện vị trí hiện tại của người sử dụng trên Google maps bằng việc sử
dụng GPS
- Tìm kiếm các vị trí ATM gần nhất thông qua bán kính mà người dùng nhập vào
từ bàn phím.
- Từ 1 cơ sở dữ liệu có sẵn đã lưu trữ vị trí của các ATM của các ngân hàng ta có
thể tìm kiếm các vị trí ATM này thông qua việc chọn Tỉnh/Thành phố hoặc
chọn Ngân các ngân hàng mà người dùng sử dụng.
- Vẽ đường đi và tính khoảng cách từ vị trí hiện tại đến vị trí ATM gần nhất trên
Google maps
Đề tài: Tìm hiể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
II. NỘI DUNG
LỜI MỞ ĐẦU
***
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ố ngoà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.
Đề tài: Tìm hiể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
CHƯƠNG I : TỔNG QUAN VỀ ANDROID
I. Lịch sử Android
Tháng 7/2005, Google mua lại công ty phát triển phần mềm điện thoại Android,
nhưng chưa công bố sẽ sử dụng cho mục đích gì. Để trả lời cho câu hỏi đó, tháng
11/2007, sau 2 năm phát triển, Google công bố hệ điều hành điện thoại di động mã nguồn
mở Android, cùng với sự thành lập “Liên minh di động mở” (Open Handset Alliance) bao
gồm hơn 65 nhà sản xuất phần cứng điện thoại lớn trên thế giới như Intel, HTC, China

Mobile, T-Mobile,
Đề tài: Tìm hiể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
Hình 1 - Các thành viên của "Liên minh di động mở"
Tứ năm 2007, hệ điều hành Android đã trải qua nhiều lần cập nhật, với phiên bản
gần đây nhất là Gingerbread 2.3, ra ngày 06/12/2010. Tính đến tháng 6/2010, đã có
khoảng 70 mẫu điện thoại di động sử dụng hệ điều hành Android, chưa kể các thiết bị
điện tử khác như máy tính bảng (tablet computers), ebook readers, Google TV,
II. Khái niệm Android
Android là hệ điều hành điện thoại di động mở nguồn mở miễn phí do Google phát
triển dựa trên nền tảng của Linux. Bất kỳ một hãng sản xuất phần cứng nào cũng đều có
thể tự do sử dụng hệ điều hành Android cho thiết bị của mình, miễn là các thiết bị ấy đáp
ứng được các tiêu chuẩn cơ bản do Google đặt ra (có cảm ứng chạm, GPS, 3G, )
Các nhà sản xuất có thể tự do thay đổi phiên bản Android trên máy của mình một
cách tự do mà không cần phải xin phép hay trả bất kì khoản phí nào nhưng phải đảm bảo
tính tương thích ngược (backward compatibility) của phiên bản chế riêng đó.
Android là nền tảng cho thiết bị di động bao gồm một hệ điều hành, midware và
một số ứng dụng chủ đạo. Bộ công cụ Android SDK cung cấp các công cụ và bộ thư viên
các hàm API cần thiết để phát triển ứng dụng cho nền tảng Android sử dụng ngôn ngữ lập
trình java.
Những tính năng mà nền tảng Android hổ trợ:
• Application framework: Cho phép tái sử dụng và thay thế các thành
phần sẳn có của Android.
• Dalvik virtual macine: Máy ảo java được tối ưu hóa cho thiết bị di
động.
• Intergrated browser: Trình duyệt web tích hợp được xây dựng dựa
trên WebKit engine.
• Optimized graphics: Hổ trợ bộ thư viện 2D và 3D dự vào đặc tả
OpenGL ES 1.0.
• SQLite: DBMS dùng để lưu trữ dữ liệu có cấu trúc.
• Hổ trở các định dạng media phổ biến như: MPEG4, H.264, MP3,

AAC, ARM, JPG, PNG, GIF.
• Hổ trợ thoại trên nền tảng GSM (Phụ thuộc vài phần cứng thiết bị).
• Bluetooth, EDGE, 3G và WiFi (Phụ thuộc vài phần cứng thiết bị).
• Camera, GPS, la bàn và cảm biến (Phụ thuộc vài phần cứng thiết bị).
Đề tài: Tìm hiể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ộ công cụ phát triển ứng dụng mạnh mẽ.
III. Kiến trúc Android
Lược đồ sau thể hiện các thành phần của hệ điều hành Android :
Hình 2 – Mô hình kiến trúc nền tảng Android
1. Applications
Hệ điều hành Android tích hợp sẳn một số ứng dụng cơ bản như email client, SMS,
lịch điện tử, bản đồ, trình duyệt web, sổ liên lạc và một số ứng dụng khác. Ngoài ra tầng
này cũng chính là tầng chứa các ứng dụng được phát triển bằng ngôn ngữ Java.
2. Application Framwork
Tầng này của hệ điều hành Android cung cấp một nền tảng phát triển ứng dụng mở
qua đó cho phép nhà phát triển ứng dụng có khả năng tạo ra các ứng dụng vô cùng sáng
tạo và phong phú. Các nhà phát triển ứng dụng được tự do sử dụng các tính năng cao cấp
Đề tài: Tìm hiể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
của thiết bị phần cứng như: thông tin định vị địa lý, khả năng chạy dịch vụ dưới nền, thiết
lập đồng hồ báo thức, thêm notification vào status bar của màn hình thiết bị…
Người phát triển ứng dụng được phép sử dụng đầy đủ bộ API được dùng trong các
ứng dụng tích hợp sẳn của Android. Kiến trúc ứng dụng của Android được thiết kế nhằm
mục đích đơn giản hóa việc tái sử dụng các component. Qua đó bất kì ứng dụng nào cũng
có thể công bố các tính năng mà nó muốn chia sẻ cho các ứng dụng khác (VD: Ứng dụng
email có muốn các ứng dụng khác có thể sử dụng tính năng gởi mail của nó). Phương
pháp tương tự cho phép các thành phần có thể được thay thế bởi người sử dụng.
Tầng này bao gồm một tập các services và thành phần sau:
• Một tập phong phú và có thể mở rộng bao gồm các đối tượng View
được dùng để xây dựng ứng dụng như: list, grid, text box, button và
thậm chí là một trình duyệt web có thể nhúng vào ứng dụng.

• 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 hoặc chia sẽ dữ liệu của chúng.
• Resource Manager: Cung cấp khả năng truy xuất các tài nguyên
non-code như hình ảnh hoặc file layout.
• Notification Manager: Cung cấp khả năng hiển thị custom alert trên
thanh status bar.
• Activity Manager: Giúp quản lý vòng đời của một ứng dụng.
3. Libraries
• System C library: một thể hiện được xây dựng từ BSD của bộ thư
viện hệ thống C chuẩn (libc), được điều chỉnh để tối ưu hóa cho các
thiết bị chạy trên nền Linux.
• Media libraries: Bộ thư viện hổ trợ trình diễn và ghi các định dạng
âm than và hình ảnh phổ biến.
• Surface manager: Quản lý hiển thị nội dung 2D và 3D.
• LibWebCore: Một web browser engine hiện đại được sử dụng trong
trình duyệt của Android lần trong trình duyệt nhúng web view được
sử dụng trong ứng dụng.
• SGL: Engine hổ trợ đồ họa 2D.
Đề tài: Tìm hiể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
• 3D libraries: Một thể hiện được xây dựng dựa trên các APIs của
OpenGL ES 1.0. Những thư viện này sử dụng các tăng tốc 3D bằng
phần cứng lẫn phần mềm để tối ưu hóa hiển thị 3D.
• FreeType: Bitmap and vector font rendering.
• SQLite: Một DBMS nhỏ gọn và mạnh mẽ.
4. Android Runtime
Hệ điều hành Android tích hợp sẳn một tập hợp các thư viện cốt lõi 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. Mọi ứng
dụng của Android chạy trên một tiến trình của riêng nó cùng với một thể hiện của máy ảo
Dalvik. Máy ảo Dalvik thực tế là một biến thể của máy ảo Java được sửa đổi, bổ sung các
công nghệ đặc trưng của thiết bị di động. Nó được xây dựng với mục đích làm cho các

thiết bị di động có thể chạy nhiều máy ảo một cách hiệu quả. Trước khi thực thi, bất kì
ứng dụng Android nào cũng được convert thành file thực thi với định dạng nén Dalvik
Executable (.dex). Định dạng này được thiết kế để phù hợp với các thiết bị hạn chế về bộ
nhớ cũng như tốc độ xử lý. Ngoài ra máy ảo Dalvik sử dụng bộ nhân Linux để cung cấp
các tính năng như thread, low-level memory management.
5. Linux Kernel
Hệ điều hành Android được xây dựng trên bộ nhân Linux 2.6 cho những dịch vụ
hệ thống cốt lõi như: security, memory management, process management, network stack,
driver model. Bộ nhân này làm nhiệm vụ như một lớp trung gian kết nối phần cứng thiết
bị và phần ứng dụng.
Đề tài: Tìm hiể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
Dưới đây là mô hinh hợp tác giữa máy ảo Dalvik và Navite code:
Hình 3 - Mô hình hợp tác giữa máy ảo Dalvik và Navite code
JNI: Java Native Interface (Tương tự khái niệm Application Programming
Interface).
Java Native Interface: là một bộ framework cho phép mã lệnh viết bằng Java chạy
trên máy ảo java có thể gọi hoặc được gọi bởi một ứng dụng viết bằng native code (Ứng
dụng được viết cho một phần cứng cụ thể và trên một hệ điều hành cụ thể) hoặc những bộ
thư viện viết bằng C, C++ hoặc Assembly.
Bằng cách sử dụng JNI, Android cho phép các ứng dụng chạy trên máy ảo Dalvik
có thể sử dụng những phương thức được viết bằng các ngôn ngữ cấp thấp như: C, C++,
Assembly. Qua đó các nhà phát triển ứng dụng có thể xây dựng ứng dụng dựa trên các bộ
thư viện viết bằng C, C++, Assembly nhằm tăng tốc độ thực thi của ứng dụng hoặc sử
dụng những tính năng mức thấp mà ngôn ngữ Java không hổ trợ. Tuy nhiên người phát
triển ứng dụng cần phải cân nhắc sự gia tăng độ phức tạp của ứng dụng khi quyết định sử
dụng các bộ thư viện này.
Đề tài: Tìm hiể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
6. Các thành phần cơ bản của ứng dụng 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 toàn hệ thống hay tới Activity hay 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.
Đề tài: Tìm hiể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
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.
 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
Đề tài: Tìm hiể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
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.
Hình 4: Mô hình hoạt động của Activity
Đề tài: Tìm hiể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
IV. HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆUS SQLite
1. SQLite là gì?
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).
Đặ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âulệnhSQL đầ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ứ 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. Đặc trưng của SQLite
SQLite được hiện thực từ tiêu chuẩn SQL-92 của một ngôn ngữ SQL nhưng vẫn còn
chứa một số khiếm khuyết.
Tuy SQLite hỗ trợ triggers nhưng bạn không thể viết trigger cho view. Hoặc SQLite
không hỗ trợ lệnh ALTER TABLE, do đó, bạn không thể thực hiện chỉnh sửa hoặc xóa cột
trong bảng.
SQLite không hỗ trợ ràng buộc khóa ngoại , các transactions lồng nhau, phép kết right
outer join, full outer join.
SQLite sử dụng kiểu dữ liệu khác biệt so với hệ quản trị cơ sở dữ liệu tương ứng. Bạn
có thể insert dữ liệu kiểu string vào cột kiểu integer mà không gặp phải bất kỳ lỗi nào.
Đề tài: Tìm hiể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
Vài tiến trình hoặc luồng có thể truy cập tới cùng một cơ sở dữ liệu. Việc đọc dữ liệu
có thể chạy song song, còn việc ghi dữ liệu thì không được phép chạy đồng thời.
Ngoài các khiếm khuyết trên thì Sqlite cung cấp cho người dùng gần như đầy đủ các
chưng năng mà một hệ cơ sở dữ liệu cần có như tạo database; tạo bảng; thêm, xóa, sửa dữ
liệu.
V. TỔNG QUAN VỀ DỊCH VỤ Google Maps API
Các dịch vụ của google với lập trình google maps API
Để 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. Điểm chung của các dịch vụ này là đều chạy trên môi trường web
và đều trả kết quả qua định dạng file JSON hoặc là XML.
1. Google Maps
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 5: Một ví dụ về Google Maps
2. Google Places API
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
Đề tài: Tìm hiể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
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 6: Một ví dụ về Google Places API
• Lấy API key dịch vụ Google Places
- Lấy mã SHA1 băng dòng lệnh trong CMD:
C:\Program Files\Java\jdk1.7.0_04\bin>keytool.exe -V -list -alias androiddebugkey
-keystore "C:\Documents and Settings\IBM\.android\debug.keystore" -storepass
android -keypass android
- Sau đó ta có kết quả như sau:
Với mã SHA1 vào trang : để lấy API key
Lưu ý: Bạn cần có 1 tài khoản của Google mới có thể lấy được API key
Đề tài: Tìm hiể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
* Thêm 1 điểm trên goole maps
Marker marker = googleMap.addMarker(new MarkerOptions()
.position(latLng)
.title("Vị trí hiện tại của bạn")
.snippet(atm_address)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_pink)));
+ latLng tọa độ mà ta muốn đánh dấu trên google map
Ví dụ:

Hình 7: Ví dụ thêm 1 điểm trên google maps
Đề tài: Tìm hiể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
3. Google Directions 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, oto hay
là đi bộ.
4. 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
Cách sử dụng: ta cần có tọa độ 2 điểm đầu và cuối, với 2 điểm này ta sẽ gửi lên dịch vụ
của google là: Google Geocoding API, Google Directions API để lấy tập các điểm giữa 2
điểm đó rồi hiển thị lên maps.
Ví dụ:
Hình 8: Ví dụ Vẽ đường đi trên google maps
Đề tài: Tìm hiể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
CHƯƠNG II – XÂY DỰNG ỨNG DỤNG TÌM KIẾM ATM
I. Biểu đồ phân cấp chức năng
1. Use Case tổng quát
Hình 9: Biểu đồ chức năng dạng tổng quát
2. Use Case Tab hiển thị vị trí người dùng
Đề tài: Tìm hiể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
3. Use Case Tab hiển thị danh sách các tỉnh, thành phố
4. Use Case Tab hiển thị danh sách các ngân hàng
Đề tài: Tìm hiể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
5. Use Case Tab hiển thị tìm kiếm ATM
Đề tài: Tìm hiể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
II. Chức năng của hệ thống
1. Hiển thị vị trí người dùng qua GPS
• Input : vị trí người dùng

• Xử lý :
+ Thông qua GPS gửi dữ liệu vị trí của người dùng lên Google.
+ Google xác định kinh độ và vĩ độ của người dùng để hiển thị trên Google
map.
• Output : hiển thị vị trí của người dùng trên Google map.
2. Tìm kiếm ATM với bán kính nhập vào từ bàn phím
• Input: Bán kính (tính theo m)
• Xử lý:
+ Từ bán kính mà người dùng nhập vào từ bàn phím ứng dụng xác định Radius
tứng ứng
+ Với kiểu tìm kiếm vị trí gần nhất là “atm”
+ Từ 2 dữ liệu trên ứng dụng gửi data lên google và sử dụng API nearby của
google ma tìm vị trí gần nhất và trả về vị trí các điểm gần nhất so với vị trí hiện tại
trên google map.
• Output : Hiển thị các atm nằm trong bán kính mà người dùng nhập vào từ bàn
phím.
3. Hiển thị các ngân hàng theo Tình/Thành phố
• Input: Tên 1 Tỉnh/Thành phố
• Xử lý:
+ Với tên Tỉnh/Thành phố xác định được mã Tỉnh/Thành phố
+ So sánh, tìm kiểm các ngân hàng có trong bảng “Atm” từ mã tỉnh để đưa ra các
mã ngân hàng tương ứng.
+ Hiển thị tên các ngân hàng tương ứng trong CSDL tương ứng với mã ngân hàng
đã tìm thấy.
• Output: Đưa ra list các ngân hàng tương ứng với Tỉnh/ Thành phố
Đề tài: Tìm hiể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
4. Hiển thị các ATM theo Ngân hàng và theo Tỉnh/Thành phố
• Input: Tên Tỉnh/Thành phố và tên Ngân hàng
• Xử lý
+ Từ Tên Tỉnh/Thành phố và tên Ngân hàng ta lấy được mã Tỉnh/Thành phố và mã

Ngân hàng tương ứng.
+ Với 2 mã này ta tìm trong database từ bảng Atm lấy ra các atm có mã
Tỉnh/Thành phố và mã ngân hàng tương ứng.
+ Hiển thị ra các tên ATM với có 2 mã tương ứng này.
• Output: Đưa ra list các ATM có các dữ liệu tương ứng với điều kiện dữ liệu đầu
vào.
5. Hiển thị 1 vị trí lên google maps
• In put: Tọa độ (Latlng) của điểm muốn hiển thị lên google là Kinh độ (Latitude) và
Vĩ độ ( Longitude).
• Xử lý:
+ Với 2 giá trị kinh độ và vĩ độ ta sẽ tạo được 1 tọa độ “ LatLng(Latitude,
Longitude) ”.
+ Tạo 1 Marker tương ứng với tạo độ mới tạo được gửi lên Google Place API để
xác định vị trí và hiển thị vị trí đó trên google maps.
• Hiển thị và đánh dấu vị trí muốn hiển thị lên google maps.
6. Chức năng tìm kiếm
• Input : chuỗi ký tự muốn tìm kiếm nhập vào.
• Xử lý :
+ So sánh chuỗi ký tự đó với dữ liệu có trong trường tương ứng của CSDL
của ứng dụng
+ Nếu có dữ liệu trùng lặp với chuỗi ký tự nhập vào thì trả về các dữ liệu có
trong cơ sở dữ liệu.
+ Nếu không có dữ liệu trùng lặp thì trả về Null.
• Output : đưa ra dữ liệu cần tìm kiếm hoặc rỗng.
III. Thiết kế cơ sở dữ liệu
• Bảng Bank
STT Tên trường Kiểu dữ liệu Chú thích
1 bankId Int Mã ngân hàng

×