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

Ứng dụng HĐH Android tìm kiếm điểm xe bus dựa theo thuật toán tìm kiếm theo chiều sâu

52 3,9K 21

Đ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

Định dạng
Số trang 52
Dung lượng 3,57 MB

Nội dung

Đồ án tốt nghiệp chuyên ngành công nghệ phần mềm về ứng dụng viết cho các thiết bị chạy hệ điều hành android 2.3 trở lên. Nội dung tìm kiếm điểm xe bus dựa vào thuật toán tìm kiếm theo chiều sâu

Trang 1

MỤC LỤC

MỤC LỤC 1

DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT 4

DANH MỤC HÌNH VẼ 5

TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP 7

PHẦN 1 ĐẶT VẤN ĐỀ VÀ ĐỊNH HƯỚNG GIẢI PHÁP 9

CHƯƠNG 1 ĐẶT VẤN ĐỀ 9

1.1 Nhiệm vụ của đề tài 9

1.2 Định hướng giải quyết các vấn đề trên 9

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 10

2.1 Hệ điều hành Android 10

2.1.1 Lịch sử Android 10

2.1.2 Ưu điểm của Android 11

2.1.3 Thành phần trong ứng dụng Android 12

2.1.4 Các file cần thiết trong một ứng dụng Android 13

2.1.5 Vòng đời của 1 ứng dụng Android 15

2.1.6 Android hiện nay 16

2.2 Công cụ phát triển hệ điều hành Android 17

2.3.Thuật toán tìm kiếm theo chiều sâu 21

2.3.1 Định nghĩa 21

2.3.2 Ý tưởng thuật toán 22

2.3.3 Mệnh đề 22

2.3.4 Độ phức tạp của thuật toán 23

2.4 Làm Việc với XML trong Android 24

2.4.1 XML là gì? 24

2.4.2 Dùng XML tạo giao diện cho ứng dụng Android 25

Trang 2

2.4.3 Dùng XML tạo cơ sở dữ liệu cho ứng dụng Android 27

2.4.4 Trình phân tích XML 28

2.4.4.1 SAX 28

2.4.4.2 DOM 29

PHẦN 2: CÁC KẾT QUẢ ĐẠT ĐƯỢC 31

CHƯƠNG 3 XÂY DỰNG ỨNG DỤNG 31

3.1 Phân tích thiết kế phần mềm 31

3.1.1 Đặc tả bài toán 31

3.1.2 Mục đích xây dựng phần mềm 31

3.1.3 Yêu cầu phần mềm 31

3.1.4 Thông số phần mềm 32

3.1.5 Hướng giải quyết 32

3.1.6 Biểu đồ User Case - Đặc tả User Case 32

3.1.7.Biểu đồ trình tự 36

3.1.8.Biểu đồ lớp 37

3.1.8 Biểu đồ hoạt động 41

3.2 Thiết kế giao diện phần mềm 41

3.2.1 Khởi tạo project 41

3.2.2 Thiết kế giao diện 44

3.3.Thiết kế cơ sở dữ liệu và module của ứng dụng 44

3.3.1 Thiết kế cơ sở dữ liệu 44

3.3.2 Thiết kế Module của ứng dụng 45

CHƯƠNG 4 CÀI ĐẶT VÀ TRIỂN KHAI 47

4.1 Cài đặt chương trình 47

4.2 Kiểm thử phần mềm trên điện thoại Android 48

Trang 3

DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT Các ký hiệu hình trong phân tích hệ thống UML

Tác nhân(Actor)

Mô tả đối tượng là người hay một hệ thống nào khác tương tác lên hệ thống đang xét

UseCase Mô tả các chức năng của hệ thống

ClassBoundary

Lớp thể hiện các thành phần giao diện người dùng

Class Control Mô tả các lớp đối tượng xử lý nghiệp vụ của

hệ thống

Class Entity Lớp mô tả các thực thể của hệ thống

Quan hệ kếthợp

Mô tả mối quan hệ giữa tác nhân và UseCase (một tác nhân kích hoạt một UseCase)

Biểu thị UseCase này là tổng quát còn UseCase kia là cụ thể hóa của UseCase đó

Danh mục từ viết tắt

HĐH: Hệ Điều Hành

ADT: Android Developer Tools

SDK: Software Development Kit

SAX: Streaming API for XML

XML: Extensible Markup LanguageDFS: Depth-First Search

DOM: Document Object Model

DANH MỤC HÌNH VẼ

Hình 2.1: Các file cần thiết trong một ứng dụng Android 13

Hình 2.2: Vòng đời của 1 ứng dụng Android 14

Trang 4

Hình 2.3 :Tỷ lệ sử dụng các phiên bản Android 15

Hình 2.4: Cài đặt SDK thành công 17

Hình 2.5:Android SDK Manager 17

Hình 2.6: Tạo máy ảo 18

Hình 2.7: Ví dụ thuật toán tìm kiếm theo chiều sâu 20

Hình 2.8: Xác định đỉnh kề trong DFS 22

Hình 2.9: Kết quả DFS 22

Hình 2.10: Cấu trúc View trong File Activity 24

Hình 2.11: Cấu trúc file Activity_main.xml 24

Hình 2.12: Tạo giao diện ứng dụng 25

Hình 2.13: Button trong Android 25

Hình 2.14: Hệ thống đối tượng dùng tạo giao diện 26

Hình 2.15: Ví dụ file XML cơ sở dữ liệu 26

Hình 2.16: Trình phân tích SAX 28

Hình 3.1: Biểu đồ User Case toàn hệ thống 31

Hình 3.2: Biểu đồ trình tự User Case Nhập thông tin điểm đầu, cuối 35

Hình 3.3 Biểu đồ trình tự User Case yêu cầu tư vấn 35

Hình 3.4: Biểu đồ trình tự User Case Tìm kiếm điểm xe buýt 36

Hình 3.5: Biểu đồ lớp toàn hệ thống 38

Hình 3.6: Biểu đồ lớp cho User Case User Case nhập thông tin điểm đầu, cuối 38

Hình 3.7: Biểu đồ lớp cho User Case yêu cầu tư vấn 39

Hình 3.8: Biểu đồ lớp cho User tìm kiếm điểm xe buýt 39

Hình 3.9: Biểu đồ hoạt động 40

Hình 3.10: Tạo ứng dụng mới (1) 40

Hình 3.11: Tạo ứng dụng mới (2) 41

Hình 3.12: Tạo ứng dụng mới (3) 42

Trang 5

Hình 3.14: Thiết kế giao diện chính của ứng dụng 43

Hình 4.1: Setting hệ thống để cài ứng dụng ngoài 46

Hình 4.2: Cài đặt, gỡ bỏ ứng dụng 46

Hình 4.3: Giao diện chính ứng dụng, Danh sách điểm dừng 47

Hình 4.4: Kết quả khi nhập điểm đầu, cuối,lựa chọn tư vấn 47

“tất cả các phương án” 47

Hình 4.5: Lựa chọn tư vấn “chỉ đi một tuyến để đến đó” 48

Hình 4.6: Lựa chọn tư vấn “Cách tốt nhất để tiết kiệm thời gian” 48

Hình 4.7: Thông báo khi người dùng chưa nhập hoặc nhập trùng điểm 49

Hình 4.8: Load dữ liệu từ cơ sở dữ liệu 49

TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP

Phần mềm tìm kiếm điểm xe buýt là đề tài nghiên cứu về việc sử dụng thuật toán tìm kiếm chiều sâu (Depth First Search) và tư vấn hệ chuyên gia để đưa ra được tư vấn về đường đi ngắn nhất và phù hợp nhất cho người sử dụng

Trang 6

Mục đích của đề tài:

Tìm hiểu và trình bày về hệ điều hành Android, cách để phát triển một ứngdụng Android

Tìm hiểu và trình bày về tìm kiếm đường đi ngắn nhất bằng thuật toán tìmkiếm chiều sâu (Depth First Search)

Tìm hiểu và trình bày về XML trong Android, cách dùng XML tạo cơ sở dữ liệu , phân tích XML trong ứng dụng Android

Áp dụng thuật toán tìm kiếm chiều sâu và tư vấn hệ chuyên gia và kiến thức về hệđiều hành Android để xây dựng thành một ứng dụng chạy trên hệ điều hành Android

Trang 7

PHẦN MỞ ĐẦU

Đồ án “Xây dựng phần mềm tìm kiếm điểm xe buýt” là đồ án nghiên cứu

giải quyết vấn đề tìm đường đi ngắn nhất giữa hai địa điểm trên địa bàn Hà Nội, sửdụng nền tảng hệ điều hành Android, thuật toán đường đi ngắn nhất và tư vấn hệchuyên gia

1 Nhiệm vụ của đề tài

Phân tích và xây dựng cây đồ thị đường đi từ dữ liệu tranghttp://www.hanoibus.com.vn/

Xây dựng thuật toán tìm kiếm chiều sâu phù hợp với bài toán tìm kiếm trongđề tài để tìm đường đi ngắn nhất giữa hai địa điểm

Xây dựng tư vấn hệ chuyên gia để đưa ra những tư vấn phù hợp nhất đối vớingười sử dụng

2 Bố cục đồ án tốt nghiệp

Phần 1: Đặt vấn đề và định hướng giải pháp

Nội dung phần 1 trình bày về chi tiết nhiệm vụ đề tài cần thực hiện trongkhuôn khổ đồ án tốt nghiệp, qua đó đưa ra các phương pháp giải quyết

Trình bày về cơ sở lý thuyết hệ điều hành Android, thuật toán tìm kiếm chiềusâu, XML trong Android, công cụ Eclipse

Phần 2: Các kết quả đạt được

Nội dung phần 2 trình bày về phân tích thiết kế hướng đối tượng phần mềmtìm kiếm điểm xe buýt

Phân tích dữ liệu trang http://www.hanoibus.com.vn/, xây dựng cây đồ thịđường đi

Thiết kế thuật toán tìm kiếm chiều sâu; dữ liệu tư vấn hệ chuyên gia; giao diện

và các Module phần mềm

Cài đặt và kiểm thử trên hệ điều hành Android

Đánh giá ưu, nhược điểm và khả năng ứng dụng của phần mềm

Kết luận

Nội dung phần này trình bày về kết quả đạt được của phần mềm tìm kiếmđiểm xe buýt đạt được, hướng phát triển tương lai của phần mềm

Tài liệu tham khảo

Nội dung phần này đưa ra các tài liệu tham khảo trong quá trình xây dựngphần mềm

Trang 8

PHẦN 1 ĐẶT VẤN ĐỀ VÀ ĐỊNH HƯỚNG GIẢI PHÁP

CHƯƠNG 1 ĐẶT VẤN ĐỀ

1 1 Nhiệm vụ của đề tài

Phân tích và xây dựng cây đồ thị đường đi từ dữ liệu tranghttp://www.hanoibus.com.vn/

Xây dựng thuật toán tìm kiếm chiều sâu phù hợp với bài toán tìm kiếm trongđề tài để tìm đường đi ngắn nhất giữa hai địa điểm

Xây dựng tư vấn hệ chuyên gia để đưa ra những tư vấn phù hợp nhất đối vớingười sử dụng

1.2 Định hướng giải quyết các vấn đề trên

Phân tích truyền thống ra file XML, sử dụng thư viện parse XML của java đểtiến hành phân tích và lọc dữ liệu đường đi, các tuyến buýt

Sử dụng các đối tượng trong ngôn ngữ java để xây dựng cây đồ thị đường đi

Sử dụng giáo trình “Cấu trúc dữ liệu và giải thuật” của thầy Lê Minh Hoàng

để làm tài liệu tham khảo xây dựng thuật toán tìm kiếm chiều sâu

Sử dụng tư duy logic để biến đổi cho phù hợp với bài toán tìm kiếm của đồ án

Sử dụng các câu hỏi để tư vấn, lọc dữ liệu đã phân tích theo yêu cầu câu hỏi

Trang 9

2.1 Hệ điều hành Android

2.1.1 Lịch sử Android

Tổng công ty Android (Android, Inc.) được thành lập tại Palo Alto,California vào tháng 10 năm 2003 bởi Andy Rubin (đồng sáng lập công ty Danger),Rich Miner (đồng sáng lập Tổng công ty Viễn thông Wildfire), Nick Sears (từng làPhó giám đốc T-Mobile), và Chris White (trưởng thiết kế và giao diện tại WebTV)

để phát triển, theo lời của Rubin, "các thiết bị di động thông minh hơn có thể biếtđược vị trí và sở thích của người dùng" Dù những người thành lập và nhân viên đều

là những người có tiếng tăm, Tổng công ty Android hoạt động một cách âm thầm,chỉ tiết lộ rằng họ đang làm phần mềm dành cho điện thoại di động Trong năm đó,Rubin hết kinh phí Steve Perlman, một người bạn thân của Rubin, mang cho ông10.000 USD tiền mặt nhưng từ chối tham gia vào công ty

Google mua lại Tổng công ty Android vào ngày 17 tháng 8 năm 2005, biến

nó thành một bộ phận trực thuộc Google Những nhân viên của chủ chốt của Tổngcông ty Android, gồm Rubin, Miner và White, vẫn tiếp tục ở lại công ty làm việcsau thương vụ này Vào thời điểm đó không có nhiều thông tin về Tổng công ty,nhưng nhiều người đồn đoán rằng Google dự tính tham gia thị trường điện thoại diđộng sau bước đi này Tại Google, nhóm do Rubin đứng đầu đã phát triển một nềntảng thiết bị di động phát triển trên nền nhân Linux Google quảng bá nền tảng nàycho các nhà sản xuất điện thoại và các nhà mạng với lời hứa sẽ cung cấp một hệthống uyển chuyển và có khả năng nâng cấp Google đã liên hệ với hàng loạt hãngphần cứng cũng như đối tác phần mềm, bắn tin cho các nhà mạng rằng họ sẵn sànghợp tác với các cấp độ khác nhau

Ngày 5 tháng 11 năm 2007, Liên minh thiết bị cầm tay mở (Open HandsetAlliance), một hiệp hội bao gồm nhiều công ty trong đó có Texas Instruments, Tậpđoàn Broadcom, Google, HTC, Intel, LG, Tập đoàn Marvell Technology, Motorola,Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel và T-Mobile được thànhlập với mục đích phát triển các tiêu chuẩn mở cho thiết bị di động Cùng ngày,Android cũng được ra mắt với vai trò là sản phẩm đầu tiên của Liên minh, một nềntảng thiết bị di động được xây dựng trên nhân Linux phiên bản 2.6 Chiếc điện thoạichạy Android đầu tiên được bán ra là HTC Dream, phát hành ngày 22 tháng 10 năm

Trang 10

2008.Biểu trưng của hệ điều hành Android mới là một con rôbốt màu xanh lá cây

do hãng thiết kế Irina Blok tại California vẽ

Từ năm 2008, Android đã trải qua nhiều lần cập nhật để dần dần cải tiến hệđiều hành, bổ sung các tính năng mới và sửa các lỗi trong những lần phát hànhtrước Mỗi bản nâng cấp được đặt tên lần lượt theo thứ tự bảng chữ cái, theo tên củamột món ăn tráng miệng; ví dụ như phiên bản 1.5 Cupcake (bánh bông lan nhỏ cókem) tiếp nối bằng phiên bản 1.6 Donut (bánh vòng) Phiên bản mới nhất là 4.2Jelly Bean (kẹo dẻo)

Vào năm 2010, Google ra mắt loạt thiết bị Nexus—một dòng sản phẩm baogồm điện thoại thông minh và máy tính bảng chạy hệ điều hành Android, do các đốitác phần cứng sản xuất HTC đã hợp tác với Google trong chiếc điện thoại thôngminh Nexus đầu tiên, Nexus One Kể từ đó nhiều thiết bị mới hơn đã gia nhập vàodòng sản phẩm này, như điện thoại Nexus 4 và máy tính bảng Nexus 10, lần lượt do

LG và Samsung sản xuất Google xem điện thoại và máy tính bảng Nexus là nhữngthiết bị Android chủ lực của mình, với những tính năng phần cứng và phần mềmmới nhất của Android

Lõi của Android là nhân Linux có nền tảng là mã nguồn mở bao gồm 12triệ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.75triệu dòng mã C++ Google đã công bố hầu hết các mã nguồn của Android theo bảncấp phép Apache – bản cấp phép dùng cho phần mềm nguồn mở Cùng với một khoứng dụng phong phú và cộng đồng phát triển rộng lớn của Android, Google còn đưa

ra bộ công cụ Android SDK cung cấp rất nhiều APIs cần thiết cho việc viết các ứngdụng Android bằng ngôn ngữ lập trình Java

2.1.2 Ưu điểm của Android

 Là hệ điều hành mã nguồn mở

Điều làm cho Android được chú ý nhất chính vì nó là mã nguồn mở Android đãthu hút nhiều nhà phát triển và từ tất cả các tầng lớp xã hội khi Goole phân phốimiễn phí Android và các đoạn mã có bản quyền khác cho bất cứ ai muốn tham giaphát triển phần mềm cho Google Vì thế, chỉ trong một thời gian ngắn, các lập trìnhviên cũng như nhà phát triển có thể nhanh chóng đưa ra phiên bản Android đượctùy chỉnh của riêng mình

 Kho ứng dụng phong phú

Trang 11

Với kho ứng dụng phong phú, người sử dụng có thể tùy chọn những ứng dụng đáp ứng nhu cầu sử dụng của mình

 Phần cứng đa dạng

Về phần cứng, Android hiện đang là hệ điều hành xuất hiện trên nhiều thiết bịnhất Các nhà sản xuất như Sony Ericsson, Samsung, HTC, và Motorola, LG…cungcấp cho người dùng sự đa dạng về mẫu mã sản phẩm để lựa chọn

 Phần mềm

Khi nói đến phần mềm, Android có khả năng chạy nhiều ứng dụng cùng một lúcbởi có tính năng quản lí không gian chuyển đổi - đây là một tính năng mà khôngphải thiết bị di động nào cũng hỗ trợ do hạn chế phần cứng Android cũng được càiđặt sẵn ActiveSync, cho phép bạn đồng bộ danh bạ, mail, và thông tin cá nhân khithiết bị được kết nối với máy tính một cách dễ dàng Trong khi đó, BlackBerry yêucầu phải cài đặt một số phần mềm và máy chủ

2.1.3 Thành phần trong ứng dụng Android

Một ứng dụng Android hoàn thiện bao gồm 6 thành phần:

- Activity : là nền của một ứng dụng, khi khởi động một ứng dụng Androidnào đó thì bao giờ cũng có một main Activity được gọi, hiện thị màn hình giao diệncủa ứng dụng cho phép người dùng tướng tác

- Service : thành phần chạy ẩn trong Android,service sử dụng để cập nhật dữliệu,đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người dùng thấy

- Content Provider : kho dữ liệu chia sẻ,được sử dụng để chia sẻ dữ liệu giữacác ứng dụng

- Intent : nền tảng để truyền tải các thông báo,được sử dụng để gửi các thôngbáo đi nhằm khởi tạo một Activity hay một Service để thực hiện công việc bạnmong muốn

- Broadcast Receiver : thành phần thu nhận các Intent bên ngoài gửi tới

- Notification : đưa ra các cảnh báo mà không làm cho các Activity ngừnghoạt động

Trong đó các thành phần : Activity,Service,Content Provider, BroadcastReceiver là những thành phần chính cấu thành nên ứng dụng Android và buộc phảikhai báo trong Android manifest Các tiến trình xử lý (process) trong Android được

Trang 12

quản lý theo cơ chế ưu tiên,các tiến trình xử lý có mức ưu tiên (priority) thấp sẽ bịgiải phóng mà không bị cảnh báo nhằm đảm bảo tài nguyên.

- Foreground process : là process của ứng dụng hiện thời đang được ngườidùng tương tác

- Visible process : là process của ứng dụng mà Activity đang hiện thị đối vớingười dùng

- Service process : là dịch vụ đang chạy

- Background process : là process của ứng dụng mà Activity của nó khônghiện thị với người dùng

- Empty process : process không có bất cứ một thành phần nào Activity.Theo chế độ ưu tiên thì khi cần tài nguyên, Android sẽ tự động ngừng quátrình xử lý mà đầu tiên là Empty process Activity là thành phần đóng vai trò chính

và quan trọng nhất để cấu thành một ứng dụng Android Hệ điều hành Androidquản lý Activity theo dạng stack : khi một Activity mới được khởi tạo,nó sẽ xếp đầustack và trở thành Running Activity,các Activity 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

2.1.4 Các file cần thiết trong một ứng dụng Android

AndroidManifest.xml

Trong bất kì một dự án Android nào khi tạo ra đều có một file AndroidManifest.xml, file này được dùng để định nghĩa các màn hình sửdụng, các quyền cũng như các giao diện cho ứng dụng Đồng thời nó cũngchứa thông tin về phiên bản SDK cũng như màn hình chính sẽ chạy đầu tiên.File này được tự động sinh ra khi tạo một dự án Android Trong file manifest baogiờ cũng có 3 thành phần chính đó là: application, permission và version

Application: chứa các giá trị định nghĩa cho một ứng dụng Android

như icon, tên ứng dụng, chế độ hiển thị giao diện…Ngoài ra cần phải khai báo cácActivity và Service có trong chương trình tại đây

Permission: bao gồm các thuộc tính chỉ định quyền truy xuất và sử dụng tài

nguyên của ứng dụng Khi cần sử dụng một loại tài nguyên nào đó thìtrong file manifest của ứng dụng cần phải khai báo các quyền truy xuất tương ứng

SDK version: Xác định phiên bản SDK nhỏ nhất mà ứng dụng hiện đang sử

dụng tương ứng với một phiên bản hệ điều hành Android mà ứng dụng có thểtương thích

Trang 13

Thư mục rec

Thư mục chứa tài nguyên ứng dụng Thư mục này bao gồm 5 thư mục con là: + drawable – hdpi; drawable – mdpi; drawable – ldpi

+ Layout (chứa các file xml dùng để khai báo và thiết kế giao diện cho mộtActivity hay một thành phần điều khiển con trong ứng dụng Android)

+ values (gồm các file xml chứa các giá trị chuỗi, mã màu … Giúp người lậptrình có thể dễ dàng thay đổi những giá trị này trong ứng dụng một cách nhanhchóng mà không cần phải sửa trong code của ứng dụng.)

Drawable – hdpi, drawable – mdpi, drawable – ldpi là ba thư mục dùng

để chứa các hình ảnh được sử dụng trong quá trình thiết kế giao diện ứng dụng, baogồm cả icon của ứng dụng 3 thư mục tương ứng với hình ảnh sẽ được sử dụng ở ba

độ phân giải khác nhau lần lược là: cao, trung bình, thấp Điều này giúp các nhà lậptrình có thể thiết kế giao diện ứng dụng phù hợp với nhiều độ phân giải màn hìnhtương thích với nhiều lại thiết bị

+ Libs: chứa các thư viện của ứng dụng

Thư mục src

Là vị trí chứa gói các class trong ứng dụng Các class có thể là các mộtActivity hoặc Service hoặc các lớp chức năng nào đó được viết bằng ngôn ngữ Javadựa trên API được cung cấp sẵn của Android Cần phải có ít nhất một Activity vàkhai báo là Activity chính để chương trình có thể chạy được

File R.java

File R.java là một file tự động sinh ra

ngay khi tạo ứng dụng, file này được

sử dụng để quản lý các thuộc tính được

khai báo trong file XML của ứng dụng

và các tài nguyên hình ảnh Mã nguồn

của file R.java được tự động sinh khi

có bất kì một sự kiện nào xảy xa làm

thay đổi các thuộc tính trong ứng

dụng Có thể nói file R.java hoàn toàn

không cần phải đụng chạm gì đến

trong cả quá trình xây dựng ứng dụng

Hình 2.1: Các file cần thiết trong một ứng dụng Android

Trang 14

2.1.5 Vòng đời của 1 ứng dụng Android

- Activity (Running) : Activity đang hiện thị trên màn hình (foreground)

- Paused : Activity vẫn hiện thị (visible) nhưng không thể tương tác (lostfocus)

- Stop : Activity bị thay thế hoàn toàn bởi một Activity mới sẽ tiến đến trạngthái stop

- Killed : khi hệ thống bị thiếu bộ nhớ,nó sẽ tự động giải phóng bộ nhớ bằngcách đóng các tiến trình theo thứ tự ưu tiên Các Activity ở trạng thái Paused hoặcStop cũng có thể bị đóng và khi nó hiện thị lại thì phải khởi động lại hoàn toàn vàphục hồi lại trạng thái trước đó

Hình 2.2: Vòng đời của 1 ứng dụng Android

Trang 15

2.1.6 Android hiện nay

Android được đón nhận bằng một thái độ thờ ơ khi nó ra mắt vào năm 2007.Nhưng chỉ tron một thời gian phát triển, Android đã khẳng định được thế mạnh củamình và trở thành 1 hệ điều hành được ưa chuộng nhất hiện nay

Công ty nghiên cứu thị trường Canalys đã ước tính trong quý 2 năm 2009rằng Android có 2,8% thị phần điện thoại thông minh được bán ra toàn cầu

Đến quý 4 năm 2010 con số này tăng lên 33% thị phần, trở thành nền tảngđiện thoại thông minh bán chạy hàng đầu

Đến quý 3 năm 2011 Gartner ước tính rằng hơn một nửa (52,5%) thị trườngđiện thoại thông minh thuộc về Android

Đến quý 3 năm 2012 Android đã có 75% thị phần điện thoại thông minh toàncầu theo nghiên cứu của hãng IDC

Vào tháng 7 năm 2011, Google nói rằng có 550.000 thiết bị Android mớiđược kích hoạt mỗi ngày, đỉnh điểm là 400.000 máy một ngày vào tháng 5, và cóhơn 100 triệu thiết bị đã được kích hoạt với mức tăng 4,4% mỗi tuần

Vào tháng 9 năm 2012, 500 triệu thiết bị đã được kích hoạt với 1,3 triệu lượtkích hoạt mỗi ngày

Thị phần của Android có khác nhau theo khu vực Vào tháng 7 năm 2012, thị phầnAndroid tại Mỹ là 52%, nhưng lên tới 90% tại Trung Quốc

Tỷ lệ sử dụng các phiên bản khác nhau tính đến ngày 4 tháng 3 năm 2013 Phầnlớn các thiết bị Android cho tới nay vẫn chạy hệ điều hành phiên bản cũ

2.3 Gingerbread (bánh gừng) được phát hành ngày 6 tháng 12 năm 2010, do nhiều

thiết bị cấp thấp sử dụng chúng vẫn được phát hành

Hình 2.3 :Tỷ lệ sử dụng các phiên bản Android

Trang 16

2.2 Công cụ phát triển hệ điều hành Android

Android SDK

Công cụ phát triển ứng dụng Android (Android SDK) bao gồm một bộ công

cụ phát triển toàn diện bao gồm một trình gỡ lỗi, các thư viện, thiết bị giả lập dựatrên QEMU, tài liệu, mẫu ví dụ tham khảo, và hướng dẫn Hiện tại Android SDKđược hỗ trợ các máy tính chạy hệ điều hành Linux, Mac OS X 10.5.8 hoặc mới hơn,Windows XP, Windows Vista, Windows 7 và mới hơn Hỗ trợ chính thức môitrường phát triển tích hợp (IDE) Eclipse bằng cách sử dụng Android DevelopmentTools(ADT) Plugin, bên cạnh đó còn có IntelliJ IDEA IDE (tất cả các phiên bản) hỗtrợ đầy đủ lập trình Android, và NetBeans IDE cũng hỗ trợ phát triển Android thôngqua một Plugin Ngoài ra, các nhà phát triển có thể sử dụng trình soạn thảo bất kỳ

để chỉnh sửa các tập tin Java và XML, sau đó sử dụng công cụ dòng lệnh (JavaDevelopment Kit và Apache Ant được yêu cầu) để tạo, biên dịch và gỡ lỗi các ứngdụng Android cũng như kiểm soát các thiết bị Android (ví dụ, kích hoạt khởi độnglại máy, cài đặt phần mềm từ xa)

Cải tiến của Android SDK đi đôi với sự phát triển của toàn bộ nền tảngAndroid SDK cũng hỗ trợ các phiên bản cũ hơn của nền tảng Android trong trườnghợp các nhà phát triển muốn phát triển ứng dụng cho thiết bị cũ Các thành phần củaAndroid SDK dễ dàng tải xuống vì thế các phiên bản của platform có thể tải vềphiên bản mới nhất cũng như cũ hơn phục vụ quá trình kiểm thử

Các ứng dụng Android được đóng gói thành tệp apk Và dữ liệu được lưu trữ

trong thưc mục /data/app trên hệ điều hành Android Trong tệp APK chứa tệp

tin dex(mã nguồn được dịch thành mã byte chạy trên bộ xử lý dalvik), và các tậptin tài nguyên, vv…

Cách cài đặt:

 Bước 1: Download và cài đặt Eclipse

- Vào link http://www.eclipse.org/downloads/ để download Eclipse - >Giải nén, vậy là có thể dùng được eclipse

 Bước 2: Cài đặt ADT Plugin

 Mở eclipse lên, bấm vào Help  Install new software

• form hiện lên , chọn Add…

• Mục Name, nhập tên gì cũng được, ví dụ như ADT plugin

Trang 17

• Mục Location, nhập vào link này: http://dl-ssl.google.com/android/eclipse/Sau đó bấm OK, chọn những gì cần thiết -> Next.

 Bước 3: Cài đặt Android SDK

• Tải Android SDK tại link này http://developer.android.com/sdk/index.html(chọn Window, Mac và Linux tùy vào hệ điều hành đang dùng)

• Mở Eclipse  window  preferences  Android  trong mục SDKlocation chọn Browse  đưa đường dẫn đến thư mục SDK  bấm apply

• Cài đặt thành công sẽ có icon của Android SDK Manager và Android VirtualDevice Manager trên thanh công cụ của Eclipse

Hình 2.4: Cài đặt SDK thành công

 Bước 4: Cài đặt các gói trong SDK

Eclipse  window  Android SDK and AVD manager  Availablepackages  chọn level muốn cài đặt

Các level sẽ được sắp xếp theo thứ tự của API Google sẽ update các gói mới hỗ trợ.Hiện nay phiên bản level cao nhất của API là 17 trương đương với Android 4.2.2

Hình 2.5:Android SDK Manager

Trang 18

 Bước 5: Tạo máy ảo

Click vào icon Android Virtual Device Manager trên thanh công cụ Eclipsehoặc vào Menu Window / Android Virtual Device Manager

Hộp thoại Android Virtual Device Manager sẽ hiển thị.Click chọn New để tạomột máy ảo mới Điền một số thông tin cho máy ảo cân thiết như: tên, dung lượng…

Hình 2.6: Tạo máy ảo

Theo Google thì “để sử dụng App Inventor người dùng không cần phải là

một lập trình viên” App Inventor không đòi hỏi bất kì kiến thức gì liên quan đến

lập trình Mã của phần mềm sẽ được tạo bởi App Inventor và người dùng chỉ cầnchọn xem ứng dụng của mình bao gồm những thành phần gì mà thôi Với công

cụ App Inventor, Google tạo điều kiện để mọi người có thể tự xây dựng phầnmềm ứng dụng cho thiết bị di động dùng hệ điều hành Android

App Inventor có sẵn đủ loại thẻ lệnh giúp bạn làm mọi việc với điện thoạiAndroid: thẻ lưu giữ thông tin, thẻ lặp lại thao tác nào đó nhiều lần, thẻ thực hiện

Trang 19

thao tác với điều kiện định trước Thậm chí có cả thẻ lệnh giúp bạn liên lạc với cácdịch vụ trên mạng như Twitter.

App Inventor rất dễ dùng và cũng rất mạnh mẽ Phần mềm ứng dụng của bạn

có thể lưu trữ dữ liệu do người dùng tạo ra trong một cơ sở dữ liệu Bạn có thể tạo

ra loại ứng dụng trong đó giáo viên lưu trữ nhiều câu hỏi để tự động tạo nên đề thi

Vì App Inventor cho phép truy xuất bộ định vị GPS, bạn có thể tạo ra nhữngứng dụng phụ thuộc vị trí của bạn Bạn có thể tạo ra ứng dụng giúp bạn ghi nhớ vịtrí đậu xe của mình, ứng dụng hiển thị vị trí của bạn bè trong một buổi trình diễn canhạc, hiển thị vị trí của các đồng nghiệp trong một cuộc hội thảo hoặc ứng dụnghướng dẫn đi lại trong trường học, trong cơ quan, ứng dụng hướng dẫn tham quanmột viện bảo tàng nào đó

Tuy nhiên, người dùng vẫn phải cài đặt một phần mềm Java mang tên AppInventor Extras, có nhiệm vụ điều khiển điện thoại Android (kết nối với máy tínhthông qua cổng USB).Nhờ vậy, người dùng có thể nhanh chóng chuyển ứng dụng từmáy tính cá nhân qua điện thoại Android để chạy thử.Nhóm dự án App Inventor tạiGoogle dự định bổ sung những bộ mô phỏng điện thoại Android để có thể sử dụngApp Inventor mà không cần có điện thoại Android thực sự gắn vào máy tính

- Basic4android: Là một môi trường phát triển đơn giản nhưng mạnh mẽ cho

các thiết bị Android Basic4android ngôn ngữ tương tự như ngôn ngữ Visual Basicvới sự hỗ trợ bổ sung cho các đối tượng Các ứng dụng Basic4android biên soạnđược cung cấp cho các thiết bị Android, Không giống như các IDE khácBasic4android chỉ tập trung 100% vào phát triển Android

- Android Studio, môi trường lập trình phát triển ứng dụng mới vừa được giới

thiệu tại Google I/O 2013 Dựa trên “IntelliJ IDEA Community Edition”, công cụnày hoạt động giống WYSIWYG, cho phép lập trình viên tạo ứng dụng, dễ dàngthực hiện các thay đổi và xem trước trong thời gian thực, đồng thời cũng có khảnăng tăng tốc sản phẩm, thiết kế giao diện đẹp hơn trước Đặc biệt là tiếng Việt

cũng được hỗ trợ trong Android Studio Android Studio hỗ trợ một loạt các giả lập

để xem trước ứng dụng, vì vậy ngay cả khi bạn không có thiết bị thử nghiệm, bạnvẫn có thể chắc chắn rằng mọi thứ đều hoạt động trơn tru Bên cạnh đó, loạt công

cự như lời khuyên tối ưu hóa, đồ thị doanh số bán hàng, và số liệu lấy từ phân tích

sẽ giúp các nhà phát triển quản lý ứng dụng đang bán của mình và tìm ra hướng đi

Trang 20

cụ thể với từng thiết bị Android lập trình viên có thể theo dõi tốt hơn việc tích hợpquảng cáo vào app nhờ tính năng Referral Tracking, theo dõi xem nguồn cài đặt ứngdụng đến từ nơi nào/thiết bị nào Những biểu đồ mới thì giúp đơn giản hóa việcphân tích doanh thu của app (Revenue Graph).

Một trong số những tính năng mới của môi trường phát triển này đó là nó hỗ trợtốt hơn việc bố cục ứng dụng cho nhiều thiết bị khác nhau, đảm bảo rằng app viết ra

có thể tương thích với màn hình của cả smartphone lẫn tablet Những thay đổi trong

mã lập trình sẽ được hiển thị theo thời gian thực trên công cụ mô phỏng đi kèm.Google cũng bổ sung thêm khả năng kéo thả các thành phần đồ họa để quá trình xâydựng ứng dụng trở nên dễ dàng và nhanh chóng hơn Android Studio còn cho phépxem lại app ở nhiều ngôn ngữ khác nhau trong cùng một giao diện để lập trình viên

có thể chỉnh sửa những lỗi còn tồn tại Đây chỉ là một trong số những tính năng củaAndroid Studio và Google sẽ công bố thêm trong thời gian tới

2.3.Thuật toán tìm kiếm theo chiều sâu

Khi giải quyết nhiều bài toán lý thuyết đồ thị, ta luôn phải duyệt qua tất cả cácđỉnh của đồ thị đó Cho nên, cần có thuật toán duyệt toàn bộ các đỉnh của đồ thịnày Gọi chung là thuật toán duyệt đồ thị Trong đó có thuật toán duyệt theo chiềusâu và duyệt theo chiều rộng

2.3.1 Định nghĩa

Tìm kiếm ưu tiên chiều sâu hay tìm kiếm theo chiều sâu (tiếng Anh:

Depth-first search - DFS) là một thuật toán duyệt hoặc tìm kiếm trên một cây hoặc một đồ thị.

Thuật toán khởi đầu tại gốc (hoặc chọn một đỉnh nào đó coi như gốc) và phát triển

xa nhất có thể theo mỗi nhánh

Hình 2.7: Ví dụ thuật toán tìm kiếm theo chiều sâu

Trang 21

Tìm kiếm ưu tiên chiều sâu bắt đầu thăm đỉnh A, đi theo cạnh trái, tiếp tụctìm kiếm xong ở cây con trái mới chuyển sang tìm kiếm ở cây con phải Thứ tựthăm viếng các đỉnh là: A, B, D, F, E, C, G.

Quá trình viếng thăm các đỉnh diễn ra như sau: Sau khi thăm đỉnh A, vì B chưađược thăm nên theo cạnh AB ta thăm B, tiếp tục theo cạnh BD tới viếng thăm D Từ Dkhông thể tiếp tục đi xa hơn, ta quay lại B Từ B, theo BF đến thăm F, từ F đến thăm E

Từ E vì A đã viếng thăm nên ta quay lại F, rồi quay lại B Tại B vì tất cả các khả năng từ

B đã xem xét nên ta quay lại A Từ A, quá trình tiếp tục với các đỉnh C và G

2.3.2 Ý tưởng thuật toán

1 DFS trên đồ thị vô hướng cũng giống như khám phá mê cung với một cuộn chỉ và một thùng sơn đỏ để đánh dấu, tránh bị lạc Trong đó mỗi đỉnh s trong

đồ thị tượng trưng cho một cửa trong mê cung

2 Ta bắt đầu từ đỉnh s, buộc đầu cuộn chỉ vào s và đánh đấu đỉnh này "đãthăm" Sau đó ta đánh dấu s là đỉnh hiện hành u

3 Bây giờ, nếu ta đi theo cạnh (u,v) bất kỳ.

4 Nếu cạnh (u,v) dẫn chúng ta đến đỉnh "đã thăm" v, ta quay trở về u.

5 Nếu đỉnh v là đỉnh mới, ta di chuyển đến v và lăn cuộn chỉ theo Đánh dấu v là "đã thăm" Đặt v thành đỉnh hiện hành và lặp lại các bước.

6 Cuối cùng, ta có thể đi đến một đỉnh mà tại đó tất cả các cạnh kề với nó đều

dẫn chúng ta đến các đỉnh "đã thăm" Khi đó, ta sẽ quay lui bằng cách cuộn

ngược cuộn chỉ và quay lại cho đến khi trở lại một đỉnh kề với một cạnh cònchưa được khám phá Lại tiếp tục quy trình khám phá như trên

7 Khi chúng ta trở về s và không còn cạnh nào kề với nó chưa bị khám phá là lúc DFS dừng.

2.3.3 Mệnh đề

Gọi G là một đồ thị vô hướng, trên đó ta sẽ thực hiện thao tác DFS với đỉnh bắt đầu là s thì:

1 Phép duyệt sẽ thăm tất cả các đỉnh cùng thành phần liên thông với s.

2 Các cạnh có nhãn "đã thăm" sẽ tạo ra một cây tối đại của thành phần liênthông chứa s

Chứng minh :

1 Khẳng định 1, là hiển nhiên vì DFS duyệt qua tất cả các đỉnh kề với đỉnh

hiện hành(Có thể chứng minh hòa chỉnh hơn bằng phản chứng)

Trang 22

2 Khẳng định 2, đúng do ta chỉ đánh dấu các cạnh đi đến một đỉnh mới nên không thể tạo ra chu trình Như vậy DFS tạo ra một cây Hơn nữa, DFS thăm

tất cả các đỉnh thuộc thành phần liên thông nên cây này là cây tối đại

2.3.4 Độ phức tạp của thuật toán

1 DFS được gọi đúng 1 lần ứng với mỗi đỉnh.

2 Mỗi cạnh được xem xét đúng 2 lần, mỗi lần từ một đỉnh kề với nó.

3 Với n s đỉnh và m s cạnh thuộc thành phần liên thông chứa s, một phép DFS bắt đầu tại s sẽ chạy với thời gian O(n s + m s ) nếu:

o Đồ thị được biểu diễn bằng cấu trúc dữ liệu dạng danh sách kề

o Đặt nhãn cho một đỉnh là "đã thăm" và kiểm tra xem một đỉnh "đã thăm chưa tốn chi phí O(degree).

o Bằng cách đặt nhãn cho các đỉnh là "đã thăm", ta có thể xem xét một

cách hệ thống các cạnh kề với đỉnh hiện hành nên ta sẽ không xem xétmột cạnh quá 1 lần

Xác định đỉnh kề trong DFS

o Kết quả của DFS phụ thuộc vào cách ta chọn đỉnh kế tiếp.

Hình 2.8: Xác định đỉnh kề trong DFS

o Nếu ta bắt đầu tại A và thử cạnh nối đến F, sau đó đến B, rồi đến E, C, cuối cùng là G ta được:

Hình 2.9: Kết quả DFS

Trang 23

o Nếu cũng bắt đầu từ A nhưng đi theo trình tự, tập các cạnh đã thăm, backedge và các điểm đệ quy sẽ khác trước Thứ tự (A-G-C-E- B-F) 2.3.5 Thuật toán

2.4 Làm Việc với XML trong Android

2.4.1 XML là gì?

- XML (viết tắt từ tiếng Anh eXtensible Markup Language, "Ngôn ngữ Đánh dấu

Mở rộng") là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để tạo ra cácngôn ngữ đánh dấu khác

- XML cung cấp một phương tiện dùng văn bản (text) để mô tả thông tin và áp dụng

một cấu trúc kiểu cây cho thông tin đó Tại mức căn bản, mọi thông tin đều thể hiện

dưới dạng text, chen giữa là các thẻ đánh dấu (markup) với nhiệm vụ ký hiệu sự phân chia thông tin thành một cấu trúc có thứ bậc của các dữ liệu ký tự, các phần

tử dùng để chứa dữ liệu, và các thuộc tính của các phần tử đó.

- XML tương tự như HTML, nhưng các <thẻ phần từ> là do người dùng tự địnhnghĩa

- XML được thiết kế đơn giản, dễ hiểu và dễ gửi và nhận trong môi trường Internet

- Rất nhiều công ty nổi tiếng trên thế giới sử dụng chuẩn XML này để lưu trữ dữliệu nội bộ như: Microsoft Office, OpenOffice.org, và iWork của Apple

Cú pháp XML cơ bản cho một phần tử:

<tên thuộc_tính= "giá trị">nội dung</tên thuộc_tính >

public void ThuatToanTK_ChieuSau(int u) {

VET[u] = false;

for (int i = 1; i <= SoDinh; i++) {

if ((VET[i]) && (DUONGDI[u][i])) {

}

Trang 24

2.4.2 Dùng XML tạo giao diện cho ứng dụng Android

Giao diện người dùng đồ họa cho một ứng dụng Android được xây dựng bởi một hệthống các đối tượng View và ViewGroup Đối tượng View bao gồm các giao diện người dùng như Button hoặc TextField … đối tượng ViewGroup dùng để định nghĩa layout cho các view con của nó sắp xếp ra sao: sắp xếp theo kiểu lưới hay theo chiều dọc …

Mỗi activity sẽ chứa các View theo dạng cấu trúc cây, nghĩa là một Layout gốc chứa các view/layout con bên trong hoặc chỉ có 1 view duy nhất

Hình 2.10: Cấu trúc View trong File Activity

Khi tạo mới một ứng dụng Android, các file về giao diện của ứng dụng sẽ đượcchứa trong thư mục res/layout/ của ứng dụng Thông thường khi mới khởi tạo, filegiao diện mặc định của ứng dụng có tên: activity_main.xml File này có cấu trúc nhưsau:

Trang 25

Để tạo một file xml về giao diện mới cho ứng dụng , tiến hành theo các bước sauB1: Chọn File >>New>>Android XML File

B2: Cửa sổ New Androif XML File hiện lên

Chọn kiểu Resource là layout Điền tên cho layout trong File Chọn loại layout trong Root Element

Hình 2.12: Tạo giao diện ứng dụng

Nhấn Next để cài đặt một số thuộc tính cho file layout

Nhấn Finish để tạo file layout

Trong Android, để xây dựng được giao diện, ADT cung cấp cho người dùngrất nhiều đối tượng như: Button, textview,edittext,… Người dùng có thể tùy chỉnhmột số thuộc tính của đối tượng để tạo được một giao diện hợp lý nhất Dưới đây lànhững thuộc tính cơ bản của một Button

Hình 2.13: Button trong Android

Trang 26

Hình 2.14: Hệ thống đối tượng dùng tạo giao diện

2.4.3 Dùng XML tạo cơ sở dữ liệu cho ứng dụng Android

Để tạo cơ sở dữ liệu cho ứng dụng Android, có thể dùng plugin SQLite,đơn giản hơn có thể dùng file định dạng XML Cấu trúc của file cơ sở dữ liệu này

sử dụng cấu trúc của những file XML khác Đó là bao gồm các thẻ (do người dùng

tự định nghĩa

<tên thuộc_tính= "giá trị">nội dung</tên thuộc_tính >

Ví dụ:

Ngày đăng: 02/01/2014, 09:18

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w