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.. Tìm hiểu
Trang 1MỤC LỤC
LỜI CẢM ƠN 1
PHẦN A - GIỚI THIỆU ĐƠN VỊ THỰC TẬP 4
I Chức năng: 4
II Tổ chức 4
III Lĩnh vực hoạt động 5
PHẦN B - NỘI DUNG THỰC TẬP 6
I GIỚI THIỆU CHUNG 6
1 Chủ đề thực tập 6
2 Phương pháp thực hiện 6
3 Mục tiêu và nhiệm vụ 7
4 Kết quả đạt được 7
II NỘI DUNG 8
LỜI MỞ ĐẦU 8
CHƯƠNG I : TỔNG QUAN VỀ ANDROID 9
I Lịch sử Android 9
II Khái niệm Android 10
III Kiến trúc Android 11
1 Applications 11
2 Application Framwork 11
3 Libraries 12
4 Android Runtime 13
5 Linux Kernel 13
6 Các thành phần cơ bản của ứng dụng Android 14
IV HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆUS SQLite 18
1 SQLite là gì? 18
2 Đặc trưng của SQLite 18
V TỔNG QUAN VỀ DỊCH VỤ Google Maps API 19
1 Google Maps 19
Trang 22 Google Places API 20
3 Google Directions API 22
4 Google Geocoding API 22
CHƯƠNG II – XÂY DỰNG ỨNG DỤNG TÌM KIẾM ATM 23
I Biểu đồ phân cấp chức năng 23
1 Use Case tổng quát 23
2 Use Case Tab hiển thị vị trí người dùng 23
3 Use Case Tab hiển thị danh sách các tỉnh, thành phố 24
4 Use Case Tab hiển thị danh sách các ngân hàng 24
5 Use Case Tab hiển thị tìm kiếm ATM 25
II Chức năng của hệ thống 26
1 Hiển thị vị trí người dùng qua GPS 26
2 Tìm kiếm ATM với bán kính nhập vào từ bàn phím 26
3 Hiển thị các ngân hàng theo Tình/Thành phố 26
4 Hiển thị các ATM theo Ngân hàng và theo Tỉnh/Thành phố 27
5 Hiển thị 1 vị trí lên google maps 27
6 Chức năng tìm kiếm 27
III Thiết kế cơ sở dữ liệu 27
IV Giao diên chương trình 29
1 Tab “Home” 29
2 Tab “City” 30
3 Tab “Bank” 35
4 Tab “ More” 40
III KẾT LUẬN 43
IV TÀI LIỆU THAM KHẢO 45
Trang 3PHẦ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
- 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ớicá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ôngNghệ 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âmCông Nghệ Thông Tin CDIT với vai trò là đơn vị nghiên cứu phát triển hàng đầu tronglĩ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ộilự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ắnkết Nghiên cứu – Đào tạo - Sản xuất Kinh doanh CDIT đã duy trì, phát triển và chiễmlĩ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ạnglướ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ớicộng động CNTT trong khu vực và thế giới
Trang 4Trung tâm Công nghệ Thông tin CDIT được Tổng giám đốc Tổng công ty Bưu chínhViễn Thông Việt Nam ký quyết định thành lập số 636/QĐ.TCCB-LĐ ngày 22 tháng 3nă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ệnCô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ớiTruyề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 07thá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ểngiao 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
Trang 5PHẦN B - NỘI DUNG THỰC TẬP
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ìmkiếm máy rút tiền ATM”
CSDL cho ứngdụng
2 Thiết kế giao diệnvà bắt sự kiện của
hệ thống
- Viết code thiết kế giao diện trênXML của ngôn ngữ lập trìnhAndroid
- Viết code bắt sự kiện cho từngđối tượng thao tác
- Xây dụng cácgiao diện cầnthiết cho ứngdụng và các xử
lý bên trongcủa ứng dụng
3 Tìm hiểu và kết nốivị trí trên bản đồ
qua google map
- Tìm hiểu các tài liệu chuyênngành của Android liên quan tớigoogle map API
- Viết code cho ứng dụng hiển thị
vị trí của người dùng trên googlemap
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…
Trang 63 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, GoogleDirections 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 ứngdụ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ặcchọ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
Trang 7II 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 đemlạ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ụngtrong 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ệcphá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 ứngdụ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 takhó 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ụngvớ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ềntả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ụngcủ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 thuhú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ảitrí 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 đờisố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ườnghợ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
Trang 8CHƯƠ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áng11/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) baogồ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, ChinaMobile, T-Mobile,
Trang 9Hì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ảngầ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áttriể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ộtcá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ảotí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êncá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ậptrình java
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ị)
Trang 10 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 ratầ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ángtạ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
Trang 11củ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ếtlậ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ằmmụ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ụngemail 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ươngphá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ácthiế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.
Trang 12 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ằngphầ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ầuhế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 ứngdụ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 ảoDalvik 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áccô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ácthiế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 DalvikExecutable (.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ấpcá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
Trang 13Dướ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 ProgrammingInterface)
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áttriể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
Trang 146 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ạntrong 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ươngtá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ươngtá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ườngnhư 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 địnhtrước để thực thi một hoạt động Hệ thống sau đó sẽ xác định đối tượng nào sẽ thựchiệ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áocho người dùng năm trong một Service hay một Broadcast Receiver Ví dụ như khinhậ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ằngnhấ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ã đã đượcbiê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 filethực thi của ứng dụng Android
Trang 15Như đã 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ụngdướ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 khiActivity 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ẫnnhỏ hơn giao diện activity cũ Do đó ta vẫn thấy được một phần giao diện củaactivity 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ạngvisible Sau khi thực hiện phương thức này, hệ thống cho phép giải phóng ứngdụ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
Trang 16sang 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 cholần sau.
Hình 4: Mô hình hoạt động của Activity
Trang 17IV. 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 tathườ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ụngtrê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íchhợ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âutruy 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ủabạ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ệukhô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ònchứ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 SQLitekhông hỗ trợ lệnh ALTER TABLE, do đó, bạn không thể thực hiện chỉnh sửa hoặc xóacộ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 rightouter 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
Trang 18Và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ácchư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úngvà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
Trang 19cá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àychú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 : https://code.google.com/apis/console/ để 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
* Thêm 1 điểm trên goole maps
Trang 20Marker marker = googleMap.addMarker(new MarkerOptions()
.position(latLng).title("Vị trí hiện tại của bạn").snippet(atm_address)
Trang 213 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 quatrê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
Trang 22CHƯƠ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