1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu hệ điều hành android và xây dựng ứng dụng tìm lịch trình xe buýt

51 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên Cứu Hệ Điều Hành Android Và Xây Dựng Ứng Dụng Tìm Lịch Trình Xe Buýt
Người hướng dẫn Võ Hoàng Phương Dung
Trường học Trường Cao Đẳng Công Nghệ Thông Tin Hữu Nghị Việt – Hàn
Chuyên ngành Lập trình
Thể loại Đồ án tốt nghiệp
Định dạng
Số trang 51
Dung lượng 1,97 MB
File đính kèm xây dựng ứng dụng tìm lịch trình xe buýt.rar (2 MB)

Cấu trúc

  • CHƯƠNG 1 CHƯƠNG MỞ ĐẦU (7)
    • 1.1. LÝ DO CHỌN ĐỀ TÀI (7)
    • 1.2. MỤC TIÊU VÀ NHIỆM VỤ (7)
    • 1.3. ĐỐI TƢỢNG NGHIÊN CỨU VÀ PHẠM VI HỆ THỐNG (8)
    • 1.4. PHƯƠNG PHÁP NGHIÊN CỨU (8)
    • 1.5. Ý NGHĨA THỰC TIỄN CỦA ỨNG DỤNG (8)
  • CHƯƠNG 2 CƠ SỞ LÝ THUYẾT (9)
    • 2.1. GIỚI THIỆU HỆ ĐIỀU HÀNH ANDROID (9)
      • 2.1.1. Tổng quan cấu trúc của Android (9)
      • 2.1.2. Sơ lược các phiên bản Android (0)
      • 2.1.3. Các thành phần cơ bản của ứng dụng Android (11)
    • 2.2. LẬP TRÌNH TRÊN HỆ ĐIỀU HÀNH ANDROID (15)
      • 2.2.1. Ngôn ngữ JAVA (15)
        • 2.2.1.1. Tổng quan về ngôn ngữ JAVA (15)
        • 2.2.1.2. Một số tính chất ngôn ngữ JAVA (15)
      • 2.2.2. Ngôn ngữ JSON (18)
      • 2.2.3. Ngôn ngữ XML (18)
      • 2.2.4. Các dịch vụ của google với lập trình MapView (19)
        • 2.2.4.1. Google Maps (19)
        • 2.2.4.2. Google Places API (20)
        • 2.2.4.3. Google Directions API (21)
        • 2.2.4.4. Google Geocoding API (21)
    • 2.3. MÁY ẢO DALVIK VÀ ANDROID SDK (21)
      • 2.3.1. Máy ảo Dalvik (21)
      • 2.3.2. Android SDK (21)
      • 2.3.3. Android Emulator (23)
      • 3.1.1. Yêu cầu chức năng (24)
      • 3.1.2. Yêu cầu phi chức năng (24)
      • 3.1.3. Yêu cầu hệ thống (24)
    • 3.2. PHÂN TÍCH THIẾT KẾ (25)
      • 3.2.1. Mô hình hóa yêu cầu (25)
      • 3.2.2. Mô hình hóa khái niệm (28)
      • 3.2.3. Mô hình hóa tương tác (30)
        • 3.2.3.1. Biểu đồ trình tự (30)
        • 3.2.3.2. Biểu đồ cộng tác (33)
      • 3.2.4. Mô hình hóa hành vi (37)
        • 3.2.4.1. Biểu đồ trạng thái (37)
        • 3.2.4.2. Biểu đồ hoạt động (37)
      • 3.2.5. Thiết kế kiến trúc vật lý (42)
        • 3.2.5.1. Biểu đồ thành phần (42)
        • 3.2.5.2. Biểu đồ triển khai (42)
  • CHƯƠNG 4 XÂY DỰNG ỨNG DỤNG (43)
    • 4.1. DEMO CHƯƠNG TRÌNH (43)
      • 4.1.1. Hiển thị MapView (43)
      • 4.1.2. Sử dụng tài nguyên GPS và Internet của hệ thống (43)
      • 4.1.3. Đánh dấu vị trí trên MapView (44)
      • 4.1.4. Truy vấn và lấy dữ liệu từ hệ thống Services của Google (45)
      • 4.1.5. Đọc dữ liệu từ file JSON (45)
    • 4.2. GIAO DIỆN ỨNG DỤNG (46)

Nội dung

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ố cầm tay 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 xe buýt là phương tiện được khuyến khích sử dụng nhằm giảm thiểu ùn tắt giao thông. Vì vậy việc tìm lịch trình các tuyến xe buýt 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 có bao nhiêu tuyến xe buýt đang hoạt động, tuyến đường nào có xe buýt đi qua, bao nhiêu phút thì có xe buýt đi qua…

CHƯƠNG MỞ ĐẦU

LÝ DO CHỌN ĐỀ TÀI

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ố cầm tay 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 xe buýt là phương tiện được khuyến khích sử dụng nhằm giảm thiểu ùn tắt giao thông Vì vậy việc tìm lịch trình các tuyến xe buýt 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 có bao nhiêu tuyến xe buýt đang hoạt động, tuyến đường nào có xe buýt đi qua, bao nhiêu phút thì có xe buýt đi qua…

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ể có thể tìm kiếm nhanh và chính xác vị trí các tuyến xe buýt trong thành phố Đà Nẵng

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

ĐỐI TƢỢNG NGHIÊN CỨU VÀ PHẠM VI HỆ THỐNG

 Ngôn ngữ JAVA, JSON, XML

 Hệ 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

 Các dịch vụ của google như Google Map, Google Places API, Google Directions API, Google Geocoding API

Phạm vi: Đề tài chỉ dừng lại ở khuôn khổ tìm kiếm các tuyến xe buýt hoạt động trong thành phố Đà Nẵng, ứng dụng mapview để tìm kiếm và dẫn đường trực quan cho người dùng Ứng dụng được viết trên nền android 4.0.

PHƯƠNG PHÁP NGHIÊN CỨU

Đọc sách và các tài liệu tham khảo tìm được

Hỏi những người có chuyên môn về Android.

Ý 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 các tuyến xe buýt khi có nhu cầu bằng thiết bị cầm tay chạy hệ điều hành Android mà đến cả những người có ít kiến thức về công nghệ cũng có thể sử dụng.

CƠ SỞ LÝ THUYẾT

GIỚI THIỆU 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 toà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.1 Tổng quan cấu trúc của Android

Nói một cách đơn giản thì Android bao gồm ba thành phần:

1 Một hệ điều hành mở, miễn phí cho các thiết bị di động

2 Một nền tảng mã nguồn mở cho phát triển các ứng dụng

3 Thiết bị chạy hệ điều hành Android và các ứng dụng Android

Chi tiết hơn thì Android gồm các thành phần quan trọng sau:

1 Một thiết kế phần cứng cho thiết bị di động hỗ trợ bộ phần mềm

2 Một nhân hệ điều hành Linux cung cấp giao diện mức thấp với phần cứng, quản lý bộ nhớ và kiểm soát tiến trình Tất cả đều tối ưu hoá cho thiết bị di động

3 Thư viện mã nguồn mở cho phát triển ứng dụng bao gồm SQLite, Webkit, OpenGL và quản lí đa phương tiện

4 Một hệ thống thực thi và lưu trữ cho ứng dụng Android bao gồm máy ảo Dalvik và các thư viện cơ bản cung cấp chức năng đặc thù cho Android Hệ thống thực thi được thiết kế nhỏ gọn và hiệu quả khi sử dụng trên các thiết bị di động

5 Một kiến trúc ứng dụng cung cấp các dịch vụ hệ thống cho tầng ứng dụng bao gồm quản lí cửa sổ, quản lí vị trí, cung cấp nội dung và các cảm biến

6 Một kiến trúc giao diện người dùng để lưu trữ và chạy các ứng dụng

7 Một số ứng dụng được cài đặt sẵn được coi như một phần của bộ ứng dụng

8 Một bộ phát triển ứng dụng bao gồm các công cụ và tài liệu

Hình 2.1: Các thành phần của hệ điều hành Android

2.1.2 Sơ lƣợc các phiên bản Android

Android là một nền tảng mới và phát triển nhanh Các phiên bản thông thường được phát hành sau khoảng 6 tháng Sau đây là danh sách các phiên bản chính và sự thay đổi lớn trong mỗi phiên bản Android

 Apple pie - Android 1.0 (23/11/2008): Phát hành phiên bản Android 1.0 trên điện thoại Android đầu tiên – HTC Dream (G1)

 Banana bread - Android 1.1 (9-2-2009): Phát hành phiên bản cập nhật 1.1 riêng cho T-Mobile G1

 Ice Cream Sandwich – Android 4.0 (19/10/2011) Đây là thế hệ android được mong đợi, cùng với sự xuất hiện của dòng Smartphone Samsung Galaxy Nexus, thế hệ Smartphone đầu tiên trang bị ICS

 Jelly Bean – Android 4.1 (09/07/2012) Đây là sản phẩm hợp tác giữa Google và Asus

Tên gọi của các phiên bản Android đều được đặt theo các món tráng miệng:

Hình 2.2: Logo và tên các phiên bản Android

2.1.3 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

LẬP TRÌNH TRÊN HỆ ĐIỀU HÀNH ANDROID

2.2.1.1 Tổng quan về 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#

Vào năm 1991, một nhóm các kỹ sư của Sun Microsystems có ý định thiết kế một ngôn ngữ lập trình để điều khiển các thiết bị điện tử như tivi, máy giặt, lò nướng,… Mặc dù C và C++ có khả năng làm việc này nhưng trình biên dịch lại phụ thuộc vào từng loại CPU

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

2.2.1.2 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++ như:

 Loại bỏ thao tác con trỏ, thao tác định nghĩa chồng toán tử

 Không cho phép đa kế thừa mà sử dụng các giao diện

 Không sử dụng lệnh “goto” cũng như file header (.h)

 Loại bỏ cấu trúc “struct” và “union”

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

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.4: Cách biên dịch chương trình truyền thống

Với mỗi nền phần cứng khác nhau, có một trình biên dịch khác nhau để biên dịch mã nguồn chương trình cho phù hợp với nền phần cứng ấy Do vậy, khi chạy trên một nền phần cứng khác bắt buộc phải biên dịch lại mã nguồn Đối với các chương trình viết bằng Java, trình biên dịch Javac sẽ biên dịch mã nguồn thành dạng bytecode Sau đó, khi chạy chương trình trên các nền phần cứng khác nhau, máy ảo Java dùng trình thông dịch Java để chuyển mã bytecode thành dạng chạy được trên các nền phần cứng tương ứng Do vậy, khi thay đổi nền phần cứng, không phải biên dịch lại mã nguồn Java

Hình 2.5: Cơ chế biên dịch chương trình của Java

 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 toá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 ngoài giới hạn kích thước

 Trong các môi trường lập trình truyền thống, lập trình viên phải tự mình cấp phát bộ nhớ, trước khi chương trình kết thúc thì phải tự giải phóng bộ nhớ đã cấp Vấn đề có thể nảy sinh khi lập trình viên quên giải phóng bộ nhớ đã xin cấp trước đó Trong chương trình Java, lập trình viên không phải bận tâm đến việc cấp phát bộ nhớ Quá trình cấp phát, giải phóng được thực hiện tự động, nhờ dịch vụ thu nhặt những đối tượng không còn sử dụng nữa (garbage collection)

 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

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 soát tính an toàn:

 Ở mức thứ nhất, dữ liệu và các phương thức được đóng gói bên trong lớp Chúng chỉ được truy xuất thông qua các giao diện mà lớp cung cấp

 Ở mức thứ hai, trình biên dịch kiểm soát để đảm bảo mã là an toàn, và tuân theo các nguyên tắc của Java

 Mức thứ ba được đảm bảo bởi trình thông dịch; chúng kiểm soát xem bytecode có đảm bảo các quy tắc an toàn trước khi thực thi không

 Mức thứ tư kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi phạm giới hạn truy xuất trước khi nạp vào hệ thống

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

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

 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

 Nhanh hơn để đọc và ghi

 Có thể được phân tích cú pháp bằng hàm dựng sẵn trong JavaScript là eval ()

 Không dùng các từ reserve

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

Các đặc điểm của XML:

 Dễ dàng viết được các chương trình xử lý dữ liệu

 Tài liệu XML dễ đọc và có tính hợp lý cao

 XML dễ dàng được sử dụng trên Internet

 XML hỗ trợ nhiều ứng dụng

 Không đặt nặng tính hình thức trong nội dung thẻ

Các loại văn bản XML:

 Văn bản không hợp lệ: không theo nguyên tắc cú pháp được quy định bởi đặc tính kỹ thuật XML

 Văn bản hợp lệ: tuân theo nguyên tắc cú pháp XML và quy định trong DTD hoặc lược đồ

 Văn bản chuẩn: tuân theo quy tắc cú pháp XML nhưng không có DTD hoặc lược đồ

Một tài liệu XML được chia thành hai phần chính:

- Phần khai báo: khai báo cho tài liệu XML

 khai báo phiên bản, bảng mã ký tự sử dụng trong tài liệu

 định nghĩa kiểu cho tài liệu

- Phần thân: chứa nội dung dữ liệu

 gồm một hay nhiều phần tử,

 mỗi phần tử được chứa trong một cặp thẻ

 phần tử đầu tiên là phần tử gốc (root element)

2.2.4 Các dịch vụ của google với 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 Đ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

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.6: Một ví dụ về Google Maps 2.2.4.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 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)

MÁY ẢO DALVIK VÀ ANDROID SDK

Các ứng dụng Android và các thành phần cơ bản hầu hết được viết bằng Java Thay vì sử dụng máy ảo Java, Android sử dụng máy ảo riêng Máy ảo của Android được thiết kế và tối ưu cho các hệ thống nhỏ, không tương thích với máy ảo Java của Java ME Những hệ thống nhỏ này có dung lượng RAM nhỏ, CPU chậm và hầu hết không có chỗ để tráo đổi dữ liệu bù đắp cho dung lượng bộ nhớ nhỏ Đây là điểm khác biệt giữa Android với các hệ điều hành cho di động khác như Symbian, iOS của Apple, webOS của Palm Ngôn ngữ lập trình được sử dụng chính là

C, C++ và objective C, trong khi với webOS sử dụng chủ yếu ngôn ngữ web như Javascript hay HTML

Trình biên dịch byte code là máy ảo Dalvik Thay vì sử dụng dạng byte code thông thường, Dalvik có định dạng riêng để phù hợp với yêu cầu đối với thiết bị cho Android Mã của Android nhỏ hơn so với mã của Java và file dex được tạo ra cũng nhỏ

Android SDK là bộ công cụ phát triển phần mềm cho phép lập trình viên tạo ra các ứng dụng cho các thiết bị sử dụng nền tảng Android Android SDK bao gồm nền tảng Android, các công cụ, chương trình mẫu và các tài liệu hỗ trợ Nó cũng là thành phần bổ sung trong bộ phát triển Java và có thể tích hợp vào Eclipse

Android chứa các gói hỗ trợ các chức năng tính toán cơ bản như quản lí xâu, quản lí vào ra, tính toán từ các gói cơ bản trong Java:

 Java.lang – lớp ngôn ngữ cơ bản của java

 Java.io – quản lí vào ra

 Java.net – quản lí kết nối mạng

 Java.text – tiện ích xử lí văn bản

 Java.math – hỗ trợ tính toán

 Java.sercurity – quản lí các thành phần bảo mật

 Java.xml – các lớp về XML

 org.apache – các lớp liên quan HTTP

Ngoài ra Android có các lớp riêng như:

 android.app – truy cập mô hình ứng dụng Android

 android bluetooth – chức năng bluetooth của Android

 android.content - quản lí dữ liệu trong Android

 android.net – chứa các lớp Uri dùng để truy cập dữ liệu

 android.graphics – các thành phần đồ hoạ

 android location – các dịch vụ liên quan đến vị trí (ví dụ như GPS)

 android.opengl – các lớp OpenGL

 android.view – chứa các thành phần giao diện

 android.webkit – chức năng của trình duyệt web

 android.widget – các thành phần giao diện khác Ở đây chúng ta xem xét lập trình Android với Eclipse vì Eclipse cung cấp phong phú các thành phần hỗ trợ biên soạn java và môi trường debug mà còn có thể quản lí và điều khiển các yếu tố khác của ứng dụng Android trực tiếp từ Eclipse IDE

Hình 2.8: Môi trường phát triển ứng dụng Android trong Eclipse

Android SDK cung cấp một bộ giả lập thiết bị di động ảo Máy ảo này cho phép chúng ta phát triển và kiểm tra các ứng dụng mà không cần một thiết bị Android thật Máy ảo Android có đầy đủ các thành phần từ phần cứng đến phần mềm giống như một thiết bị thật ngoại trừ nó không thể thực hiện được một cuộc gọi Máy ảo Android cho phép sử dụng chuột để định hướng hay bàn phím để tạo các sự kiện Người dùng có thể cài đặt để kiểm thử phần mềm trên máy ảo với từng phiên bản khác nhau của Android Khi ứng dụng được cài đặt nó có thể sử dụng các ứng dụng đã được cung cấp trong Android như nghe nhạc, xem video hay vào mạng Máy ảo cũng có khả năng debug, truy cập vào đầu ra của nhân, giả lập các ngắt như khi nhân cuộc gọi hay tin nhắn thậm chí là các ảnh hượng độ trễ của mạng và ngắt trên kênh truyền dữ liệu

CHƯƠNG 3 – PHÂN TÍCH THIẾT KẾ HỆ THỐNG

3.1 MÔ TẢ VỀ HỆ THỐNG

Hệ thống tìm lịch trình xe buýt được xây dựng theo mô hình trao đổi dữ liệu client-server và lấy dữ liệu từ cơ sở dữ liệu Trong đó ứng dụng phía thiết bị android là máy client tạo các truy vấn lên máy chủ các dịch vụ cần thiết của google để lấy dữ liệu phù hợp và truy vấn vào cơ sở dữ liệu SQLite để lấy dữ liệu cho thiết bị Hệ thống có thể tìm các tuyến xe thông qua tên đường và tìm các trạm xe buýt thông qua google

API Hệ thống sẽ chỉ đường cho chúng ta đi từ vị trí hiện tại đến trạm xe buýt cần đến

Các chức năng của hệ thống bao gồm:

 Cập nhật DS Xe buýt

 Cập nhật DM Giá vé

 Cập nhật DM Trạm xe

3.1.2 Yêu cầu phi chức năng

 Chương trình có thể đảm bảo làm việc 24/7

 Chương trình có thể vận hành tốt khi mà cơ sở dữ liệu về địa điểm có thể tăng đột biến trong tương lai

 Chương trình có thể thực hiện chính xác kết quả với sai số nhỏ với cơ sở dữ liệu lớn

 Chương trình phải đẹp và đơn giản để những người có ít kinh nghiệm máy tính có thể sử dụng

 Sử dụng hệ điều hành Android phiên bản mới hơn 2.1

 Có kết nối Internet và hỗ trợ GPS

 Máy chủ máy chủ các dịch vụ cần thiết của google và CSDL SQLite.

PHÂN TÍCH THIẾT KẾ

3.2.1 Mô hình hóa yêu cầu

Xác định các 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 lịch trình xe buýt

 Quản trị viên: Là người trực tiếp sử dụng phần mềm để cập nhật các danh mục của người sử dụng

Các trường hợp sử dụng:

 Cập nhật DS Xe buýt

 Cập nhật DM Giá vé

 Cập Nhật DM Trạm xe

 Tìm kiếm Đặc tả các trường hợp sử dụng:

 Trường hợp sử dụng: Mở hệ thống

 Tác nhân: Người sử dụng, Quản trị viên

 Mô tả: Bắt đầu phiên làm việc người sử dụng sẽ mở ứng dụng để tìm kiếm, quản trị viên mở cơ sở dữ liệu để cập nhật danh mục, danh sách

 Trường hợp sử dụng: Đóng hệ thống

 Tác nhân: Người sử dụng, Quản trị viên

 Mô tả: Kết thúc phiên làm việc, người sử dụng và quản trị viên sẽ đóng chương trình

 Trường hợp sử dụng: Cập nhật DS Xe buýt

 Tác nhân: Quản trị viên

 Mô tả: Cập nhật danh sách các xe buýt hoạt động vào hệ thống

 Trường hợp sử dụng: Cập nhật DM Tuyến

 Tác nhân: Quản trị viên

 Mô tả: Cập nhật danh sách các tuyến xe vào hệ thống

 Trường hợp sử dụng: Cập nhật DM Giá vé

 Tác nhân: Quản trị viên

 Mô tả: Cập nhật giá vé các loại vào hệ thống

 Trường hợp sử dụng: Cập nhật DM Trạm xe

 Tác nhân: Quản trị viên

 Mô tả: Cập nhật các trạm xe vào hệ thống

 Trường hợp sử dụng: Tìm kiếm

 Tác nhân: Người sử dụng

 Mô tả: Người sử dụng sẽ sử dụng chức năng này để tìm kiếm lịch trình xe buýt theo các tiêu chí tìm kiếm, có thể tìm kiếm các tuyến xe buýt thông qua tên đường lấy trong cơ sở dữ liệu SQLite của ứng dụng của chương trình hoặc là tìm kiếm các trạm xe buýt thông qua dịch vụ Google Places API

Biểu đồ trường hợp sử dụng (USE CASE)

Hình 10: Biểu đồ trường hợp sử dụng USE CASE

Hình 3.3: Use Case trường hợp cập nhật DM Tuyến

Hình 3.4: Use Case trường hợp cập nhật DS Xe buýt

Hình 3.512: Use Case trường hợp cập nhật DM Trạm xe

Hình 3.6: Use Case trường hợp Tìm kiếm

3.2.2 Mô hình hóa khái niệm

Các lớp đối tƣợng: Căn cứ vào các biện pháp khác nhau ta đã xác định được các lớp đối tượng của bài toán tìm lịch trình xe buýt như sau:

 XeBuyt (Xe buýt): Là lớp chứa thông tin về các loại xe buýt

 Tuyen (Tuyến xe): Là lớp chứa thông tin về các tuyến xe buýt

 GiaVe (Giá vé): Là lớp chứa thông tin về các loại vé và giá vé

 Tramxe (Trạm xe): Là lớp chứa thông tin về các trạm xe

Các mối quan hệ giữa các lớp đối tượng:

STT Tên lớp quan hệ Tên mối quan hệ

Biểu đồ lớp: a.Các lớp biên

FrmCapNhatDMTramxe b.Các lớp điều khiển

Hình 14: Các lớp điều khiển c.Các lớp thực thể mức phân tích

Hình 15: Các lớp thực thể mức phân tích

3.2.3 Mô hình hóa tương tác

 Biểu đồ trình tự Mở hệ thống

: NguoiSuDung : QuanTriVien : QuanTriVien : FrmKhoiDongHeThong : FrmKhoiDongHeThong : CtlKhoiDongHeThong : CtlKhoiDongHeThong

Hình 3.10: Biểu đồ trình tự Mở hệ thống

 Biểu đồ trình tự Đóng hệ thống

: NguoiSuDung : QuanTriVien : QuanTriVien : FrmDongHeThong : FrmDongHeThong : DongHeThong : DongHeThong

Hình 16: Biểu đồ trình tự Đóng hệ thống

 Biểu đồ trình tự Thêm DM Giá vé

: QuanTriVien : FrmCapNhatDMG iaVe : FrmCapNhatDMG iaVe : CtlCapNhatDMGiaVe : CtlCapNhatDMGiaVe : GIAVE : GIAVE

Hình 17: Biểu đồ trình tự Thêm DM Giá vé

 Biểu đồ trình tự Hiệu chỉnh DM Giá vé

: QuanTriVien : FrmCapNhatDMGiaVe : FrmCapNhatDMGiaVe : CtlCapNhatDMG iaVe : CtlCapNhatDMG iaVe : GIAVE : GIAVE

Hieu chinh DM Gia ve()

Hình 18.13: Biểu đồ trình tự Hiệu chỉnh DM Giá vé

 Biểu đồ trình tự Xóa DM Giá vé

: QuanTriVien : FrmCapNhatDMGiaVe : FrmCapNhatDMGiaVe : CtlCapNhatDMGiaVe : CtlCapNhatDMGiaVe : GIAVE : GIAVE

Hình 3.14: Biểu đồ trình tự Xóa DM Giá vé

 Biểu đồ trình tự Tìm kiếm bằng cơ sở dữ liệu của ứng dụng

: NguoiSuDung : FrmTimKiemQuaCSDL : FrmTimKiemQuaCSDL : CtlTimKiemQuaCSDL : CtlTimKiemQuaCSDL

Cung cap thong tin() Cung cap thong tin()

Hình 19: Biểu đồ trình tự Tìm kiếm bằng cơ sở dữ liệu của ứng dụng

 Biểu đồ trình tự Tìm kiếm bằng Google Services

Tao truy can SQL() Cung cap thong tin() Hien thi ket qua()

Hình 20: Biểu đồ trình tự Tìm kiếm bằng Google Services

 Biểu đồ cộng tác Mở hệ thống

Hình 21: Biểu đồ cộng tác Mở hệ thống

 Biểu đồ cộng tác Đóng hệ thống

Hình 3.18: Biểu đồ cộng tác Đóng hệ thống

 Biểu đồ cộng tác Thêm DM Giá vé

2: Thuc hien() 5: Thong bao ket qua()

Hình 3.19: Biểu đồ cộng tác Thêm DM Giá vé

 Biểu đồ cộng tác Hiệu chỉnh DM Giá vé

1 : Hieu chinh DM G ia ve()

2: Thuc hien cap nhat() 5: Thong bao ket qua()

Hình 3.20: Biểu đồ cộng tác Hiệu chỉnh DM Giá vé

 Biểu đồ cộng tác Xóa DM Giá vé

2: Thuc hien xoa() 5: Thong bao ket qua()

Hình 221: Biểu đồ cộng tác Xóa DM Giá vé

 Biểu đồ cộng tác Tìm kiếm bằng cơ sở dữ liệu của ứng dụng

: DUONG 3: Tao truy van SQL()

2: Thuc hien tim kiem() 6: Thong bao ket qua()

4: Cung cap thong tin() 5: Cung cap thong tin()

Hình 3.22: Biểu đồ cộng tác Tìm kiếm bằng cơ sở dữ liệu của ứng dụng

 Biểu đồ cộng tác Tìm kiếm bằng google services

CSDL Google Places 3: Tao truy can SQL()

2: Thuc hien tim kiem() 5: Hien thi ket qua()

Hình 23.23: Biểu đồ cộng tác Tìm kiếm bằng google services

3.2.4 Mô hình hóa hành vi

 Biểu đồ trạng thái Mở hệ thống

Nguoi su dung khoi dong he thong de su dung

Hình 24.24: Biểu đồ trạng thái Mở hệ thống

 Biểu đồ trạng thái Tìm kiếm

Cho thong tin tim kiem Nhap cac thong tin tim kiem

Hien thi ket qua tra ve

Hình 3.25: Biểu đồ trạng thái Tìm kiếm

 Biểu đồ hoạt động Mở hệ thống

Hình 3.26: Biểu đồ hoạt động Mở hệ thống

 Biểu đồ hoạt động Đóng hệ thống

Hình 3.27: Biểu đồ hoạt động Đóng hệ thống

 Biểu đồ hoạt động Cập nhật DM Giá vé

Cap nhat DM gia ve

Them DM gia ve Hieu chinh DM gia ve Xoa DM gia ve

Luu Thong Tin Hop le

Hình 3.2825: Biểu đồ hoạt động Cập nhật DM Giá vé

 Biểu đồ hoạt động Cập nhật DM Tuyến

Them DM tuyen Hieu Chinh DM tuyen Xoa DM tuyen

Khong hop le k iem tra thong tin

Hình 3.29: Biểu đồ hoạt động Cập nhật DM Tuyến

 Biểu đồ hoạt động Cập nhật DS Xe buýt

Cap nhat DM xe buyt

Them DM xe buyt Hieu chinh DM xe buyt Xoa DM xe buyt

Hop leKhong hop le

 Biểu đồ hoạt động Cập nhật DM Trạm xe

Cap nhat DM tram xe

Hieu chinh DM tram xe

Them DM tram xe Xoa Dm tram xe

Khong hop le Hop le

Hình 3.3127: Biểu đồ hoạt động Cập nhật DM Trạm xe

 Biểu đồ hoạt động Tìm kiếm

Nhap thong tin tim kiem

Hình 3.32: Biểu đồ hoạt động Tìm kiếm

 Thiết kế chi tiết biểu đồ lớp

Từ biểu đồ lớp mức phân tích, kết hợp với các biểu đồ trình tự, cộng tác, trạng thái và hoạt động Biều đồ lớp mức thiết kế được phát triển như sau:

Hình 3.3328: Biểu đồ lớp mức chi tiết

3.2.5 Thiết kế kiến trúc vật lý

 Phía ứng dụng được triển khai trên các thiết bị chạy hệ điều hành Android Gửi các truy vấn lấy dữ liệu đến cơ sở dữ liệu của ứng dụng

 Phía cơ sở dữ liệu được triển khai với cơ sở dữ liệu SQLite

Object chuc nang tim kiem

Object chuc nang danh muc

Hình 3.34: Biểu đồ thành phần 3.2.5.2 Biểu đồ triển khai

Hình 3.35: Biểu đồ triển khai

 Google Web Services: Máy chủ dịch vụ của Google

 Application DataBase: Cơ sở dữ liệu của ứng dụng

 Application: Thiết bị sử dụng ứng dụng tìm kiếm, triển khai trên hệ điều hành

XÂY DỰNG ỨNG DỤNG

DEMO CHƯƠNG TRÌNH

Lập trình android về mapView khá dễ dàng khi google cung cấp cho class

MapActivity để đơn giản trong việc lập trình, để hiển thị một bản đồ trên ứng dụng, chúng ta chỉ cần lấy key MapAPI rồi đưa vào ứng dụng

G ửi truy vấn với API Key tới G oogle WebServies

Kiểm tra Map API Key

Hình 4.1: Quá trình lấy dữ liệu map từ Google

Thêm MapAPI key vào layout của form: android:apiKey="AIzaSyCuozcUvXCl332ETy1XC2olwfFoN_zeyJM"

4.1.2 Sử dụng tài nguyên GPS và Internet của hệ thống

Việc sử dụng tài nguyên trong hệ thống Android được đề cập khá rõ khi lập trình, để tương tác được với các ứng dụng khác cũng như tài nguyên phần cứng, phải thêm các thẻ quyền (permission) vào file manifest của project

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

Demo thêm quyền đề sử dụng tài nguyên:

4.1.3 Đánh dấu vị trí trên MapView Để đánh dấu một vị trí nào đó bất kì ở trên map, sử dụng một class để định dạng vị trí đánh dấu được kế thừa từ class ItemizedOverlay trong thư viện android Class object khá đầy đủ các phương thức để sử dụng Class này hoạt động khi xác định được tọa độ của địa điểm cần đánh dấu (kinh độ và vĩ độ)

Bắt đầu Đưa vị trí cần đánh dấu

ItemizedO verlay Đánh dấu lên MapView Kết thúc

Hình 4.329: Quá trình đánh dấu vị trí trên MapView

Việc đưa vị trí cần đánh dấu được thực hiện bằng phương thức setLocation() trong ItemizedOverlay Sau đó điểm đánh dấu sẽ được định dạng về đồ họa như trong cấu trúc của class ItemizedOverlay rồi được vẽ trên tọa độ MapView tương ứng marker=getResources().getDrawable(R.drawable.hinh_danh_dau); myItemizedOverlay = new ItemizedOverlay(marker,this); mapView.getOverlays().add(myItemizedOverlay);

4.1.4 Truy vấn và lấy dữ liệu từ hệ thống Services của Google

Khi truy vấn vào hệ thống Google Places API kết quả mà ta nhận được đó là một file XML hoặc JSON dựa vào giá trị output trong câu truy vấn

HttpC lient HttpURL truy vấn

Hình 4.4: Quá trình Truy vấn và lấy dữ liệu từ hệ thống Services của Google

Cấu trúc URL truy vấn trong đó các thuộc tính tìm kiếm cần có đó là tọa độ nơi tìm kiếm và bán kính Trong chương trình sẽ tạo một HttpClient để thực thi URL truy vấn và các đối tượng Response, Entity để lấy dữ liệu

4.1.5 Đọc dữ liệu từ file JSON

Như đã đề cập khi trước khi truy vấn vào hệ thống Google Services và Web Services của ứng dụng kết quả mà ta nhận được đó là một file XML hoặc JSON dựa vào giá trị output trong câu truy vấn Sau khi đã có dữ liệu dưới định dạng file JSON thì tiến hành tách các dữ liệu cần thiết

Cấu trúc file JSON xác định các mảng giá trị dựa vào một cặp thẻ đóng mở “[“

“]” Vì thế để lấy dữ liệu thì khai báo một mảng JSONArray được định nghĩa sẵn và được gán dữ liệu thông qua phương thức getJSONArray()

Hình 30: Mô hình xác định mảng giá trị trong JSON

JSONArray array_atm = json.getJSONArray("từ_khóa_trước_cặp_thẻ");

Cấu trúc các thẻ dữ liệu trong mảng là cấu trúc cây vì thế để truy cập đến các thẻ con trong mảng phải sử dụng phương thức getJSONObject()

JSONObject c = array_atm.getJSONObject(“geometry”);

Cuối cùng là lấy dữ liệu thông qua phương thức getString(“tên_thẻ”)

String atm_name = c.getString("name");

GIAO DIỆN ỨNG DỤNG

 Giao diện Tab tìm kiếm tuyến xe theo tên đường

Hình 4.6: Giao diện Tab tìm kiếm tuyến xe theo tên đường

 Giao diện Tab danh sách các tuyến xe buýt

Hình 4.7: Giao diện Tab danh sách các tuyến xe buýt

 Giao diện thông tin chi tiết các tuyến xe buýt

Hình 4.8: Giao diện Tab thông tin chi tiết các tuyến xe buýt

 Giao diện Tab định vị các trạm xe buýt

Hình 4.9: Giao diện Tab định vị các tuyến xe buýt

 Giao diện Tab thông tin về ứng dụng

Hình 4.10: Giao diện Tab thông tin về ứng dụng

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Kết luận: Chương trình được thực hiện với thời gian ngắn nên chưa được thành công mỹ mãn và còn tồn tại một số khuyết điểm Chương trình đã giải quyết được vấn đề tìm kiếm lịch trình xe buýt thường ngày, việc tìm kiếm chưa thực sự được nhanh và giao diện chương trình dễ sử dụng Bên cạnh đó vần còn tồn tại một vài khuyết điểm như khả năng đánh dấu vị trí trên bản đồ còn chưa chính xác với các thiết bị phần cứng chưa đáp ứng, cơ sở dữ liệu thu thập còn chưa chính xác hoàn toàn, kết quả tìm kiếm từ dịch vụ Google Places chưa đầy đủ so với thực tế Vẽ đường chưa hoàn toàn tối ưu

Hướng phát triển: Giải quyết triệt để những yếu điểm còn tồn tại và phát triển thêm các chức năng như hướng dẫn đường 3D Lấy dữ liệu từ web service cho ứng dụng Mở rộng giải quyết những nhu cầu thường ngày như tìm kiếm trạm xăng, nhà hàng, siêu thi, khách sạn, bệnh viện…

DANH MỤC TÀI LIỆU THAM KHẢO

[1] Google INC Android Developer Docs (Online)

[2] Google INC Google Maps API Web Services (Online)

[3] Wikipedia Android(Hệ điều hành) (Online)

[4] Wikipedia Java (Ngôn ngữ lập trình) (Online)

[5] ThS Lê Tân Giáo trình giảng dạy JAVA cơ bản Trường CĐ CNTT Hữu

[6] ThS Lê Viết Trương Giáo trình phân tích, thiết kế hướng đối tượng

Trường CĐ Công nghệ thông tin Hữu nghị Việt Hàn, 8/2011

[7] Website: Developer.android.com và androidhive.info

Ngày đăng: 07/03/2024, 22:16

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w