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

Tìm hiểu về hệ điều hành android web services và viết ứng dụng minh họa

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

Định dạng
Số trang 180
Dung lượng 4,15 MB

Nội dung

Vì vậy, một chiếc điện thoại di động tốt không chỉ là một chiếc điện thoại có cấu hình tốt, mà còn phải được chạy trên một hệ điều hành tốt, hệ điều hành ấy ngoài việc hoạt động ổn định

Trang 1

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Ngày Tháng Năm

Giáo Viên Hướng Dẫn (Ký, ghi rõ họ và tên)

Trang 2

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ii

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

Ngày Tháng Năm

Giáo Viên Phản Biện

(Ký, ghi rõ họ và tên)

Trang 3

LỜI CẢM ƠN

Chúng em xin chân thành cám ơn khoa Công nghệ thông tin, Bộ môn Công nghệ phần mềm, trường Đại học Sư Phạm Kỹ Thuật Tp.HCM đã tạo điều kiện thuận lợi cho chúng em thực hiện đề tài này

Chúng em cũng xin được gửi lời cảm ơn chân thành nhất đến thầy Nguyễn Minh Đạo, người đã tận tình chỉ bảo và hướng dẫn em thực hiện đề tài này

Bên cạnh đó, chúng em xin gửi lời cảm ơn đến các thầy cô giáo, những người đã giảng dạy, tạo điều kiện cho em tích lũy được những kiến thức quý báu trong những năm học qua

Chúng em xin gửi lời biết ơn sâu sắc đến cha mẹ, gia đình, bạn bè, những người đã luôn bên cạnh, chăm sóc, ủng hộ, động viên chúng em trong suốt thời gian học tập và nghiên cứu

Dù đã cố gắng hoàn thành đề tài khóa luận đúng yêu cầu, nhưng do thời gian hạn hẹp

và khả năng còn hạn chế nên chắc chắn sẽ có những thiếu sót không tránh khỏi Chúng

em mọng nhận được sự thông cảm và tận tình chỉ bảo của các thầy cô và các bạn

TP Hồ Chí Minh, ngày 26 tháng 06 năm 2015

Nhóm sinh viên thực hiện

Chung Nhật Trường Phạm Xuân Lộc

Trang 4

MỤC LỤC iv

MỤC LỤC NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN i

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ii

LỜI CẢM ƠN iii

MỤC LỤC iv

DANH MỤC HÌNH ẢNH viii

DANH MỤC BẢNG BIỂU xi

CÁC KÝ HIỆU VÀ VIẾT TẮT xiv

GIỚI THIỆU ĐỀ TÀI xv

PHẦN A MỞ ĐẦU 0

LỜI GIỚI THIỆU 1

1 Tính cấp thiết của đề tài 1

2 Ý nghĩa khoa học thực tiễn 2

3 Mục đích nghiên cứu 2

4 Đối tượng và phạm vi nghiên cứu 3

PHẦN B NỘI DUNG 4

Chương 1 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH MOBILE ANDROID 5

1.1 Lịch sử hệ điều hành mobile Android 5

1.2 Máy ảo Dalvik 10

1.3 Kiến trúc của Android 10

1.3.1 Tầng ứng dụng 11

1.3.2 Tầng Application Framework 11

1.3.3 Library và Android Runtime 12

1.3.4 Linnux Kernel 13

1.4 Ứng dụng Android 14

1.4.1 Các thành phần của ứng dụng Android 14

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

1.4.3 Chu kỳ của một Activity 15

1.4.4 Intent 19

Trang 5

1.4.5 Content Provider và Uri 21

1.4.6 Background Service 23

1.5 Android Emulator 25

1.6 Các thành phần giao diện trong Android 26

1.6.1 View 26

1.6.2 ViewGroup 27

1.7 SQLITE 31

Chương 2 GOOGLE APIs 33

2.1 Google Maps API 33

2.1.1 Giới thiệu 33

2.1.2 Sử dụng Google Maps API trên Android 34

2.2 JavaScript Object Notation (JSON) 41

2.2.1 JSON là gì? 42

2.2.2 Cấu trúc của JSON 42

2.3 Google Places Autocomplete API 47

2.3.1 Giới thiệu 47

2.3.2 Sử dụng 47

2.3.3 Request 47

2.3.4 Response 49

2.4 Google Places API 50

2.4.1 Giới thiệu 50

2.4.2 Sử dụng 50

2.4.3 Place Searches 51

2.4.4 Place Details 53

2.5 Google Directions API 55

2.5.1 Giới thiệu 55

2.5.2 Direction Request 56

2.5.3 Direction Response 57

Chương 3 RESTFUL WEB SERVICES 64

3.1 Định nghĩa REST 64

Trang 6

MỤC LỤC vi

3.2 Kiến trúc dịch vụ web RESTful 65

3.2.1 Tài nguyên 65

3.2.2 Bộ định danh tài nguyên đồng bộ - URI 66

3.2.3 Đồng bộ giao diện thông qua yêu cầu HTTP 66

Chương 4 HỆ CHUYÊN GIA 73

4.1 Giới thiệu hệ chuyên gia 73

4.2 Biểu diễn tri thức bởi các luật sản xuất 74

4.2 Phương pháp lập luận không chắc chắn dựa trên hệ số chắc chắn Stanford 76

Chương 5 CHƯƠNG TRÌNH MINH HỌA 80

5.1 Khảo sát hiện trạng 80

5.2 QuickPlaces RESTful Web Services 83

5.2.1 Giới thiệu 83

5.2.2 Tài nguyên 83

5.2.3 Dịch vụ 84

5.2.4 Thiết kế dữ liệu 95

5.3 Xây dựng hệ chuyên gia chuẩn đoán bệnh 100

5.3.1 Xây dựng cơ sở tri thức cho hệ chuyên gia 100

5.3.2 Mô tả xây dựng hệ chuyên gia 103

5.4 Ứng dụng tìm kiếm và chia sẻ địa điểm trên Android – MyShare 105

5.4.1 Giới thiệu 105

5.4.2 Sơ đồ Use Case 106

5.4.3 Sơ đồ lớp 119

5.4.4 Thiết kế dữ liệu 122

5.4.5 Thiết kế giao diện 123

5.4.6 Test Case 148

5.4.7 Cấu hình cài đặt 155

PHẦN C KẾT LUẬN 156

Kết quả đạt được 157

Hướng phát triển 159

PHẦN D PHỤ LỤC 161

Trang 7

TÀI LIỆU THAM KHẢO 162

Trang 8

MỤC LỤC HÌNH ẢNH viii

DANH MỤC HÌNH ẢNH

Hình 1 1 Giao diện màn hình khóa (android 4.4) 5

Hình 1 2 Giao diện màn hình chính (Android 4.4) 6

Hình 1 3 Các phiên bản hệ điều hành Android 7

Hình 1 4 Kiến trúc hệ điều hành Android 11

Hình 1 5 Chu kỳ sống của ứng dụng Android 15

Hình 1 6 Activity stack 16

Hình 1 7 Chu kỳ sống của Activity 17

Hình 1 8 Intent 20

Hình 1 9 Các Action được dựng sẵn 21

Hình 1 10 Chu trình sống của một Service 25

Hình 1 11 Emulator 26

Hình 1 12 Các thành phần giao diện 27

Hình 1 13 Bố trí các widget sử dụng LinearLayout 28

Hình 1 14 FrameLayout 28

Hình 1 15 RelativeLayout 29

Hình 1 16 TableLayout 30

Hình 1 17 ListView 31

Hình 1.18 Activity tương tác với DBAdapter 32

Hình 2 1 Cài đặt Google APIs trên Eclipse 34

Hình 2 2 Cài đặt gói Google Play services trên eclipse 35

Hình 2 3 Import thư viện google-play-service-lib vào workspace 36

Hình 2 4 Cài đặt google APIs và google-play-services-lib vào project 37

Hình 2 5 Lấy mã SHA1 fingerprint 38

Hình 2 6 Kích hoạt các gói hỗ trợ 39

Hình 2 7 Tạo Browser Key 39

Hình 2 8 Đăng ký Android Key 40

Hình 2 9 Object trong JSON 43

Hình 2 10 Array trong JSON 43

Hình 2 11 Value trong JSON 44

Hình 2 12 String trong JSON 45

Trang 9

Hình 2 13 Number trong JSON 46

Hình 2 14 Bản đồ minh họa Google Direction 58

Hình 2 15 Hiển thị dữ liệu JSON dạng cây của Google Direction API 59

Hình 3 1 Lược đồ tuần tự của một yêu cầu GET 69

Hình 3 2 Lược đồ tuần tự của một yêu cầu POST 70

Hình 3 3 Lược đồ tuần tự của một yêu cầu PUT 71

Hình 3 4 Lược đồ tuần tự của một yêu cầu DELETE 72

Hình 4 1 Hoạt động của hệ chuyên gia 73

Hình 4.2 : Minh họa tính kết hợp CF 79

Hình 5 1 Mạng xã hội foursquare 80

Hình 5.2 Sơ đồ dữ liệu Web Services 96

Hình 5.3 Kiến trúc của hệ chuyên gia cần xây dựng 100

Hình 5 4 Sơ đồ dữ liệu hệ chuyên gia 102

Hình 5.5 Prototype tin nhắn hiển thị kết quả chẩn đoán 104

Hình 5 6 Sơ đồ Use-case ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 107

Hình 5 7 Sơ đồ Use-case chia sẻ địa điểm với thành viên trong nhóm online 107

Hình 5 8 Sơ đồ Use-case quản lý tài khoản 108

Hình 5 9 Sơ đồ Use-case Quản lý thông báo 108

Hình 5 10 Sơ đồ Use-case ứng dụng tìm kiếm địa điểm 109

Hình 5 11 Sơ đồ Use-case hỏi ý kiến hệ chuyên gia 110

Hình 5 12 Sơ đồ lớp phần liên lạc với Server 119

Hình 5 13 Sơ đồ lớp các danh sách 120

Hình 5 14 Sơ đồ lớp phần truy xuất Database 121

Hình 5 15 Thiết kế dữ liệu - Sơ đồ Logic 122

Hình 5 16 Giao diện chính 123

Hình 5 17 Giao diện tìm kiếm địa điểm 125

Hình 5 18 Giao diện quản lý từ khóa tìm kiếm 126

Hình 5 19 Giao diện tìm và thay đổi vị trí hiện tại 127

Hình 5 20 Giao diện kết quả tìm kiếm 128

Hình 5 21 Chi tiết địa điểm 129

Hình 5 22 Giao diện bản đồ kết quả tìm kiếm 130

Hình 5 23 Giao diện dẫn đường 132

Trang 10

MỤC LỤC HÌNH ẢNH x

Hình 5 24 Giao diện tùy chỉnh tìm kiếm 133

Hình 5 25 Giao diện đăng ký 134

Hình 5 26 Giao diện đăng nhập 135

Hình 5 27 Thông tin cá nhân 136

Hình 5 28 Chỉnh sửa thông tin cá nhân 137

Hình 5 29 Chia sẻ địa điểm 139

Hình 5 30 Danh sách các địa điểm được chia sẻ 140

Hình 5 31 Giao diện bình luận 141

Hình 5 32 Những người thích một địa điểm 142

Hình 5 33 Bản đồ các địa điểm được chia sẻ 143

Hình 5 34 Danh sách bạn bè 144

Hình 5.35 Màn hình chọn triệu chứng lâm sàng 145

Hình 5.36 Màn hình kết luận thông qua triệu chứng lâm sang và liên lạc với chuyên gia 146

Hình 5.37 Màn hình hướng dẫn sơ cứu tạm thời 147

Trang 11

DANH MỤC BẢNG BIỂU

Bảng 1 1 Các thuộc tính của đối tượng Intent 20

Bảng 2 1 Các kiểu dữ liệu trong JSON 46

Bảng 2 2 Response của Place Search 52

Bảng 2 3 Response của Place Details 54

Bảng 2 4 Các tham số trong Google Directions API request 56

Bảng 2 5 Các thuộc tính trong root của Directions Response 60

Bảng 2 6 Các thuộc tính trong routes của Directions Response 60

Bảng 2 7 Các thuộc tính trong legs của Directions Response 61

Bảng 2 8 Các thuộc tính trong steps của Directions Response 62

Bảng 3 1 Các hành động CRUD và phương thức HTTP tương ứng 67

Bảng 5 1 Các tham số trong request của dịch vụ Đăng ký 84

Bảng 5 2 Các tham số trong request của dịch vụ Đăng nhập 85

Bảng 5 3 Các tham số trong request của dịch vụ Đăng xuất 85

Bảng 5 4 Các tham số trong request của dịch vụ Lấy thông tin cá nhân 86

Bảng 5 5 Các tham số trong request của dịch vụ cập nhật thông tin cá nhân 86

Bảng 5 6 Các tham số trong request của dịch vụ Like 87

Bảng 5 7 Các tham số trong request của dịch vụ Unlike 87

Bảng 5 8 Các tham số trong request của dịch vụ lấy danh sách bạn bè 88

Bảng 5 9 Các tham số trong request của dịch vụ Feeds 88

Bảng 5 10 Các tham số trong request của dịch vụ Thông tin địa điểm 89

Bảng 5 11 Các tham số trong request của dịch vụ chia sẻ địa điểm 89

Bảng 5 12 Các tham số trong request của dịch vụ xóa địa điểm 90

Bảng 5 13 Các tham số trong request của dịch vụ Danh sách người thích 90

Bảng 5 14 Các tham số trong request của dịch vụ lấy danh sách bình luận 91

Bảng 5 15 Các tham số trong request của dịch vụ Bình luận 91

Bảng 5 16 Các tham số trong request của dịch vụ xóa bình luận 92

Bảng 5 17 Các tham số trong request của dịch vụ nhận thông báo 92

Bảng 5 18 Các tham số trong request của dịch vụ cập nhật thông báo 93

Bảng 5 19 Các tham số trong request của dịch vụ kết bạn 93

Bảng 5 20 Các tham số trong request của dịch vụ trả lời yêu cầu kết bạn 94

Trang 12

MỤC LỤC BẢNG xii

Bảng 5 21 Các tham số trong request của dịch vụ Unfriend 94

Bảng 5.22 Các tham số trong request của dịch vụ lấy thông tin chuyên gia 95

Bảng 5.23 Các tham số trong request của dịch vụ gửi bài cho chuyên gia 95

Bảng 5 24 Bảng User 96

Bảng 5 25 Bảng Place 97

Bảng 5 26 Bảng Comment 98

Bảng 5 27 Bảng Likes 98

Bảng 5 28 Bảng Notification 98

Bảng 5 29 Bảng Friends 99

Bảng 5 30 Bảng Photo 99

Bảng 5.31 Các tri thức về bệnh học 100

Bảng 5 32 Bảng Cases 102

Bảng 5 33 Bảng Rules 102

Bảng 5 34 Bảng Diseases 103

Bảng 5 35 Bảng Conclutions 103

Bảng 5 36 Danh sách các chức năng của ứng dụng MyShare 110

Bảng 5 37 Bảng Catalog 122

Bảng 5 38 Các thành phần trên giao diện chính 123

Bảng 5 39 Các thành phần trên giao diện tìm kiếm địa điểm 125

Bảng 5 40 Các thành phần trên giao diện quản lý từ khóa tìm kiếm 126

Bảng 5 41 Các thành phần trên giao diện thay đổi vị trí hiện tại 127

Bảng 5 42 Các thành phần trên giao diện kết quả tìm kiếm 128

Bảng 5 43 Các thành phần trên giao diện chi tiết địa điểm 129

Bảng 5 44 Các thành phần trên giao diện trên bản đồ 129

Bảng 5 45 Các thành phần của giao diện dẫn đường 133

Bảng 5 46 Các thành phần của giao diện tùy chỉnh tìm kiếm 133

Bảng 5 47 Các thành phần của giao diện đăng ký 134

Bảng 5 48 Các thành phần của giao diện đăng nhập 135

Bảng 5.49 Các thành phần của giao diện Thông tin cá nhân 136

Bảng 5 50 Các thành phần của giao diện chỉnh sửa thông tin cá nhân 138

Bảng 5.51 Các thành phần của giao diện chia sẻ địa điểm 139

Bảng 5.52 Các thành phần của giao diện Feeds 140

Trang 13

Bảng 5.53 Các thành phần của giao diện bình luận 141

Bảng 5.54 Các thành phần của giao diện những người đã thích 142

Bảng 5.55 Các thành phần của giao diện bản đồ địa điểm chia sẻ 143

Bảng 5.56 Các thành phần của giao diện chọn triệu chứng lâm sàng 145

Bảng 5.57 Các thành phần của giao diện chọn triệu chứng lâm sàng 146

Bảng 5.58 Các thành phần của giao diện hướng dẫn sơ cứu tạm thời 147

Trang 14

CÁC KÝ HIỆU VÀ VIẾT TẮT xiv

CÁC KÝ HIỆU VÀ VIẾT TẮT

Ký hiệu, viết tắt và

Soft-keyboard Bàn phím ảo trong điện thoại

SD Card Bộ nhớ ngoài hay thẻ nhớ của điện thoại

Android Emulator Thiết bị giả lập điện thoại Android để chạy các ứng dụng

URI

Uniform Resource Identifier Trong Android là đường dẫn chỉ đến các dữ liệu trong hệ thống Android

API Application Programming Interface

KML

Một định dạng file dùng để biểu diễn dữ liệu dạng địa lý cho một trình hiển thị bản đồ trái đất (như Google Earth, Google Maps, Google Maps cho mobile)

LatLng

Lat (latitude) và Lng (longitude) - vĩ độ và kinh độ của một điểm trên bản đồ, được định nghĩa thành một kiểu dữ liệu trong phần cài đặt của nhóm nghiên cứu

Request Yêu cầu được gửi đến máy chủ (dịch vụ web)

Response Kết quả trả về của máy chủ

Parameter Tham số, cụ thể trong tài liệu là các tham số trong Request

Trang 15

GIỚI THIỆU ĐỀ TÀI

Khoa học công nghệ hiện nay ngày càng phát triển không ngừng, máy móc ngày càng thông minh và trở nên thân thiết hơn với con người Tiêu biểu nhất là chiếc điện thoại

di động, không dừng lại ở chức năng chủ yếu của nó là nghe và gọi điện, chiếc điện thoại di động hiện nay ngày càng hiện đại và thông minh hơn, giúp ích nhiều hơn cho cuộc sống, cho công việc của con người Để làm được những điều này, ngoài việc được trang bị những phần cứng tinh vi nhất, những chiếc điện thoại di động cần phải được cài đặt những phần mềm, ứng dụng thông minh và hiệu quả nhất mới có thể phục vụ tốt nhất cho nhu cầu của con người Vì vậy, một chiếc điện thoại di động tốt không chỉ là một chiếc điện thoại có cấu hình tốt, mà còn phải được chạy trên một hệ điều hành tốt, hệ điều hành ấy ngoài việc hoạt động ổn định trên cấu hình phần cứng còn phải cung cấp cho các nhà phát triển một giao diện lập trình hiệu quả và thuận lợi nhất, nhằm giúp phát triển những ứng dụng ngày càng thiết thực và gần gũi hơn với con người

Một số hệ điều hành hiện nay như: Windows Phone, iOS… Windows Phone của Microsoft mới phát triển chưa có được cộng đồng đồng đảo, iOS của Apple thì hoàn toàn đóng với người dùng và việc có được môi trường lập trình và phân phối ứng dụng lại mất nhiều chi phí, và lại chỉ có thể chạy trên phần cứng của Apple Chính vì thế, hệ điều hành mobile Android do hãng Google phát triển là một hề điều hành mã nguồn mở trên nền tản Linux, lấy Java làm ngôn ngữ lập trình ứng dụng chủ yếu, tuy

là hệ điều hành còn non trẻ nhưng đã thể hiện một lợi thế mà các hệ điều hành khác không thể nào sánh được Một hệ điều hành có thể tùy biến dễ dàng, chạy được trên rất nhiều nền tản phần cứng, đặc biệt lại cung cấp một bộ công cụ lập trình hoàn toàn miễn phí là Android SDK thì việc phát triển và chiếm lĩnh thị trường là điều hoàn toàn dễ dàng và hiện nay cũng đã trở thành hiện thực

Đối với xã hội như ở nước Việt Nam ta, cuộc sống cũng ngày càng phát triển kéo theo nhu cầu giao thông, đi lại, du lịch của người dân ngày càng cao, đòi hỏi phải xác định rõ ràng thông tin những điểm đến, đường đi sao cho thật hợp lý nhằm tiết kiệm

Trang 16

GIỚI THIỆU ĐỀ TÀI xvi

thời gian và giảm chi phí di chuyển Thêm vào đó tính chia sẻ cộng đồng thông qua môi trường internet hiện nay đang dần trở nên phổ biến, vì thế nếu được chia sẻ cho bạn bè những nơi hấp dẫn mình đã đến là một điều đang được nhiều người mong chờ Chiếc điện thoại di động 10 năm trước đối với người dân Việt Nam có thể là một điều

xa xỉ, nhưng hiện nay nó đã trở nên quá gần gũi với hầu hết mọi người, và còn hơn thế đó còn là những chiếc điện thoại hiện đại và thông minh nhất Vì vậy, chiếc điện thoại di động hoàn toàn có thể giải quyết được những vấn đề xã hội nêu trên, điều còn lại là cần có một ứng dụng thông minh để làm được điều đó

Hiểu được các vấn đề cấp thiết đó, nhóm nghiên cứu quyết định chọn đề tài “Tìm hiểu hệ điều hành android, web services và viết ứng dụng” Với ứng dụng minh họa nhóm em thực hiện là “Xây dựng mạng xã hội chia sẻ địa điểm cho android”,

đề tài được giải quyết chủ yếu dựa vào dịch vụ Google Maps, Google Places API, công nghệ RESTful Web Services và các thiết bị sử dụng hệ điều hành Android Kết hợp vào đó là Hệ chuyên gia, giúp mô phỏng, chuẩn đoán đưa ra gợi ý giúp cho người

sử dụng Google Maps là dịch vụ đã phổ biến trên thế giới cũng như ở Việt Nam RESTful Web Services là một công nghệ cung cấp những dịch vụ web nhanh chóng

và hiệu quả nhất Android cũng là hệ điều hành mã nguồn mở của Google và đang chiếm lĩnh thị trường di động, có thể cài đặt trên nhiều thiết bị, có các giao diện lập trình tích hợp với dịch vụ Google Maps Việc kết hợp Google Maps, RESTful Web Services, hệ chuyên gia và hệ điều hành Android hứa hẹn sẽ đem lại một sản phẩm hoàn hảo nhất cho người dùng trong việc tìm kiếm và chia sẻ địa điểm

Nội dung đề tài gồm có 5 chương:

 Chương 1: Tổng quan về hệ điều hành mobile Android

 Chương 2: Google APIs

 Chương 3: RESTful Web Services

 Chương 4: Hệ chuyên gia

 Chương 5: Chương trình minh họa

Trang 17

PHẦN A MỞ ĐẦU

Trang 18

Phần Mở Đầu 1

LỜI GIỚI THIỆU

1 Tính cấp thiết của đề tài

Ngày nay, khi khoa học công nghệ ngày càng phát triển, máy móc cũng ngày càng trở nên gần gũi với con người hơn Đặc biệt là chiếc điện thoại di động dường như là vật dụng không thể thiếu đối với mỗi người Không ngừng ở chức năng đơn giản là làm phương tiện liên lạc, chiếc điện thoại di động hiện nay còn là những chiếc điện thoại thông minh, hiện đại và tinh vi, làm được rất nhiều việc khác phục vụ cho nhu cầu công việc cũng như giải trí của con người Để cho một chiếc điện thoại di động

càng thông minh hơn, thì cái quyết định sự thông minh đó chính là hệ điều hành Hệ

điều hành quyết định toàn bộ thành phần giao diện và quản lý tất cả các hoạt động, các ứng dụng chạy trên điện thoại Và đến nay, các hệ điều hành di động ra đời như: Windows Phone, iOS, … đã làm nên rất nhiều điều kỳ diệu trên một chiếc điện thoại

di động Tuy nhiên, trên thị trường hiện nay, hệ điều hành được cài đặt trên số điện thoại di động nhiều nhất không phải là một trong những hệ điều hành trên, mà đó là một cái tên khác – hệ điều hành Android

Tại sao hệ điều hành này lại chiếm được thị phần cao đến như vậy – hơn 80% ? Nó

có những điểm gì hay và đặc biệt hơn? Nó hỗ trợ các nhà phát triển phần mềm đến mức nào?

Bên cạnh đó, mạng xã hội hiện nay đang là một hình thức được rất nhiều người sử dụng trên Internet Tuy nhiên, một mạng xã hội địa điểm chuyên biệt về vấn đề tìm kiếm và chia sẻ các địa điểm giữa những người sử dụng Internet, xét riêng ở Việt Nam tuy đã có nhưng chưa thực sự hiệu quả, thu hút nhiều người sử dụng

Không những thế, thế giới ngày càng phát triển mạnh mẽ với các hoạt động vô cùng

đa dạng và phức tạp đòi hỏi khả năng giải quyết vấn đề ở mức trí tuệ nhân tạo ngày càng cao

Trang 19

Lĩnh vực trí tuệ nhân tạo nói chung và hệ chuyên gia nói riêng góp phần tạo ra các hệ thống có khả năng trí tuệ của con người, có được tri thức tiên tiến của hệ chuyên gia

để giải quyết các vấn đề phức tạp trong đời sống

2 Ý nghĩa khoa học thực tiễn

Khóa luận nghiên cứu và thực hiện các vấn đề sau:

 Xây dựng cái nhìn tổng quan về hệ điều hành mobile Android, về lịch sử hình thành và phát triển, ưu thế so với các hệ điều hành khác cũng như thị trường hiện nay của Android

 Tìm hiểu kiến trúc của hệ điều hành Android, các thành phần của một ứng dụng Android và cách xây dựng một ứng dụng trên Android

 Xây dựng cái nhìn tổng quan về RESTful Web Services, cách xây dựng một RESTful Web Services để cung cấp các dịch vụ dựa theo kiểu dữ liệu trao đổi là JSON

 Tìm hiểu các dịch vụ về địa điểm và bản đồ do Google cung cấp, cách thức sử dụng các dịch vụ đó

 Xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android theo mô hình mạng xã hội địa điểm

 Tìm hiểu các phương pháp biểu diễn tri thức, các kĩ thuật suy diễn thường dùng trong hệ chuyên gia Cuối cùng xây dựng một chương trình hệ chuyên gia chuẩn đoán bệnh

3 Mục đích nghiên cứu

Mục đích nghiên cứu khóa luận là:

Tạo một tài liệu tham khảo về android và đồng thởi viết một ứng dụng trên hệ điều hành này

Trang 20

Phần Mở Đầu 3

4 Đối tượng và phạm vi nghiên cứu

Do thời gian hạn hẹp và khả năng của nhóm nghiên cứu còn có hạn, cho nên khóa luận chỉ tập trung nghiên cứu sâu một số lĩnh vực sau:

 Hệ điều hành Android dành cho mobile, không nghiên cứu Android trên tablet

và các thiết bị khác

 Các dịch vụ của Google: Google Maps API, Google Places API, Google Directions API

 RESTful Web Services với kiểu dữ liệu trao đổi là JSON

 Hệ chuyên gia với các phương pháp suy diễn

Trang 21

PHẦN B NỘI DUNG

Trang 22

Tổng quan về hệ điều hành mobile Android 5

Chương 1 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH

MOBILE ANDROID

1.1 Lịch sử hệ điều hành mobile Android

Android là một hệ điều hành dành cho thiết bị di động như smartphone, tablet hay netbook được phát triển từ nhân Linux, mang nhiều đặc tính đặc trưng của một hệ điều hành di động nhưng vẫn mang các tính chất chung của các hệ điều hành Là một

hệ điều hành hiện đại, tuy ra đời muộn nhưng lại được phát triển từ Linux và các phần mềm mã nguồn mở, rút kinh nghiệm từ những hệ điều hành đi trước, được tích hợp nhiều công nghệ tiên tiến và đặc biệt là được phát triển từ một “ông trùm công nghệ” tầm cỡ thế giới là Google nên android đã sớm tìm được chỗ đứng của mình Android

là hệ điều hành mã nguồn mở với 12 triệu dòng mã bao gồm 3 triệu dòng mã XML, 2.8 triệu dòng mã C, 2.1 triệu dòng Java và 1.75 triệu dòng C++

Hình 1 1 Giao diện màn hình khóa (android 4.4)

Trang 23

Hình 1 2 Giao diện màn hình chính (Android 4.4)

Không giống như Windows Phone và IOS, tuy cả hai đều cung cấp một môi trường phát triển ứng dụng phong phú và dễ tiếp cận nhưng luôn có sự ưu tiên cho các ứng dụng mặc định có sẵn của hệ điều hành (native application) Với Android, mọi ứng dụng đều được viết trên cùng một tập API, thế nên không có sự phân biệt ứng dụng mặc dịnh và các ứng dụng bên thứ ba Người dùng hoàn toàn có thể thay thế mọi ứng dụng mặc định bằng ứng dụng yêu thích của mình, thậm chí cả màn hình cuộc gọi, hay màn hình home đều có thể sửa đổi

Ban đầu nền tảng này được phát triển bởi Android Inc (sau đó được Google mua lại)

và gần đây nó trở thành một trong những phần mềm đứng đầu của liên minh OHA (Open Handset Alliance – với khoảng 78 thành viên bao gồm cả nhà sản xuất, nhà phát triển ứng dụng… cho thiết bị di dộng mà dẫn đầu là Google)

Android được phát triển nhằm cạnh tranh với các hệ điều hành di động khác như iOS

Trang 24

Tổng quan về hệ điều hành mobile Android 7

WebOS (Palm),… Tính đến thời điểm này, Android đã trở thành nền tảng di động tăng trưởng nhanh nhất thế giới

 Các phiên bản hệ điều hành Android:

Từ lúc ra mắt phiên bản đầu tiên cho tới nay, Android đã có rất nhiều bản nâng cấp

Đa số đều tập trung vào việc vá lỗi và thêm những tính năng mới

Hình 1 3 Các phiên bản hệ điều hành Android

Android những thế hệ đầu tiên 1.0 (9/2008) và 1.1 (2/2009) chưa có tên gọi chính thức Từ thế hệ tiếp theo, mỗi bản nâng cấp đều được đặt với những mã tên riêng dựa

Trang 25

theo các món ăn hấp dẫn theo thứ tự bảng chữ cái từ “C-D-E-F-G-H-I” Hiện tại các phiên bản chính của Android bao gồm:

 1.5 (Cupcake): Ra mắt tháng 4/2009: Phiên bản này có một số tính năng đáng chú ý như: khả năng ghi lại và xem video thông qua chế độ máy ghi hình, tải video lên YouTube và ảnh lên Picasa trực tiếp từ điện thoại, tích hợp bàn phím

ảo với khả năng đoán trước văn bản, tự động kết nối với một thiết bị Bluetooth trong một khoảng cách nhất định, các widget và thư mục mới có thể cài đặt linh động trên màn hình chủ

 1.6 (Donut): Ra mắt tháng 9/2009 Phiên bản này giúp Nâng cao trải nghiệm trên kho ứng dụng Android Market, tích hợp giao diện tùy biến cho phép người dùng xóa nhiều ảnh cùng lúc, nâng cấp Voice Search, nâng cấp khả năng tìm kiếm bookmarks, history, contacts và web trên màn hình chủ, bước đầu hỗ trợ màn hình độ phân giải WVGA

 2.0/2.1 (Eclair): Ra mắt tháng 10/2009 Phiên bản này có sự cải thiện rõ rệt trong giao diện người dùng, tối ưu hóa tốc độ phần cứng, hỗ trợ nhiều kích cỡ và độ phân giải màn hình hơn, thay đổi giao diện duyệt web và hỗ trợ chuẩn HTML5, Exchange ActiveSync 2.5, nâng cấp Google Maps 3.1.2, camera zoom kĩ thuật

số tích hợp đèn flash, nâng cấp bàn phím ảo và kết nối Bluetooth 2.1

 2.2 (Froyo): Ra mắt tháng 5/2010: Phiên bản này chú trọng nâng cấp tốc độ xử

lí, giới thiệu engine Chrome V8 JavaScript, hỗ trợ Adobe Flash10.1, thêm tính năng tạo điểm truy cập Wi-Fi Một tính năng đáng chú ý khác hỗ trợ chuyển đổi nhanh chóng giữa các ngôn ngữ và từ điển trên bàn phím đồng thời cho phép cài đặt và cập nhật ứng dụng ở các thiết bị mở rộng bộ nhớ Một trong những smartphone đầu tiên chạy phiên bản Android 2.2 Froyo là LG Optimus One

 2.3 (Gingerbread): Ra mắt tháng 12/2010: Phiên bản này đã nâng cấp đáng kể giao diện người dùng, cải thiện bàn phím ảo, thêm tính năng copy/paste, hỗ trợ công nghệ giao tiếp tầm sóng ngắn NFC, hỗ trợ chuẩn video WebM và nâng cao tính năng copy–paste Cùng với phiên bản Gingerbread, Google cũng ra mắt điện thoại đầu tiên của hãng sử dụng nền tảng này là Google Nexus S

Trang 26

Tổng quan về hệ điều hành mobile Android 9

 3.0 (Honeycomb): Ra mắt tháng 2/2011: Đây là phiên bản hệ điều hành dành riêng cho máy tính bảng tablet với giao diện mới tối ưu hóa cho tablet, từ các thao tác đều phụ thuộc màn hình cảm ứng (như lướt web, duyệt mail ) Honeycomb hỗ trợ bộ xử lí đa nhân và xử lý đồ họa đồng thời hỗ trợ nhiều màn hình home khác nhau, cho phép người dùng dễ dàng tùy biến giao diện nếu muốn

 4.0 (Ice-cream sandwich): Ra mắt tháng 10/2011, là sự kết hợp giữa Gingerbread và Honeycomb và sẽ chạy trên tất cả các thiết bị như điện thoại, máy tính bảng, máy tính xách tay,… [2]

 4.1 (Jelly bean): Ra mắt tháng 6/2012 đây là bản phát hành Android mượt mà, nhanh và đáp ứng cao hơn Cung cấp thêm các chức năng như google now, tìm kiếm bằng giọng nói, thông báo mở rộng, gợi ý từ khi gõ phím, nhận dạng giọng nói ngoại tuyến, kiểm tra chuyển động khi mở khóa bằng khuôn mặt và cung cấp thêm một số tính năng cho nhà phát triển như cập nhật phần mềm thông minh, mã hóa bảo mật các ứng dụng trả tiền

 4.4 (Kitkat) : Ra mắt tháng 11/2013, phiên bản này cung cấp thành phần có tên

"Project Svelte", với chức năng chính là tinh chỉnh để tối ưu việc sử dụng bộ nhớ RAM trên Android, các thiết bị Android tầm thấp sẽ được hưởng lợi từ sự tối ưu này Android 4.4 KitKat hỗ trợ các cảm biến chuyển động tốt hơn so với những phiên bản trước đó Ở phiên bản này google cung cấp ba chế độ định vị

để lựa chọn phù hợp với nhu cầu sử dụng, hiện lại thanh trạng thái ở chế độ Immersive, có thể Tắt hiệu ứng để tăng tốc độ, trình chọn tập tin mới, tích hợp gallery vào Google+, quay video màn hình và chức năng Process Stats dành cho lập trình viên

 5.0 (Lollipop): Ra mắt tháng 11/2014 phiên bản này được đánh giá có những thay đổi rõ rệt và đáng kể trong lịch sử android Trước tiên là thiết kế “Material” mới giúp các phản hồi nhẹ nhàng nhưng vẫn rõ ràng Ở phiên bản này android được hỗ trợ trên mọi màn hình từ điện thoại, tablet, laptop đến TV, ô tô, đồng

hồ, đồ gia dụng Ngoài ra còn có các tính năng khác như thiết kế báo nhắc hoàn

Trang 27

toàn mới, áp dụng điện toán 64 bit, cải thiện thời lượng pin, mở khóa dựa trên bối cảnh và cải thiện tìm kiếm dựa trên bối cảnh

1.2 Máy ảo Dalvik

Dalvik là máy ảo giúp các ứng dụng java chạy được trên các thiết bị động Android

Nó chạy các ứng dụng đã được chuyển đổi thành một file thực thi Dalvik (dex) Định dạng phù hợp cho các hệ thống mà thường bị hạn chế về bộ nhớ và tốc độ xử lý Dalvik đã được thiết kế và viết bởi Dan Bornstein, người đã đặt tên cho nó sau khi đến thăm một ngôi làng đánh cá nhỏ có tên là Dalvík ở đảo Eyjafjörður, nơi mà một

số tổ tiên của ông sinh sống

Từ góc nhìn của một nhà phát triển, Dalvik trông giống như máy ảo Java (Java Virtual Machine) nhưng thực tế thì hoàn toàn khác Khi nhà phát triển viết một ứng dụng dành cho Android, đoạn mã sẽ được thực hiện trong môi trường Java Sau đó, nó sẽ được biên dịch sang các bytecode của Java, tuy nhiên để thực thi được ứng dụng này trên Android thì nhà phát triển phải thực thi một công cụ có tên là dx Đây là công cụ dùng để chuyển đổi bytecode sang một dạng gọi là dex bytecode "Dex" là từ viết tắt của "Dalvik executable" đóng vai trò như cơ chế ảo thực thi các ứng dụng Android [3]

1.3 Kiến trúc của Android

Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành Android Mỗi một phần sẽ được đặc tả một cách chi tiết dưới đây

Trang 28

Tổng quan về hệ điều hành mobile Android 11

Hình 1 4 Kiến trúc hệ điều hành Android

1.3.1 Tầng ứng dụng

Là các ứng dụng hoàn chỉnh được người sử dụng trực tiếp sử dụng Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản như: contacts, browser, camera, phone,… Tất cả các ứng dụng chạy trên hệ điều hành Android đều được viết bằng Java

1.3.2 Tầng Application Framework

Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo Nhà phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập, các dịch vụ

Trang 29

chạy nền, thiết lập hệ thống báo động, thêm các thông báo để các thanh trạng thái, và nhiều, nhiều hơn nữa

Nhà phát triển có thể truy cập vào các API cùng một khuôn khổ được sử dụng bởi các ứng dụng lõi Các kiến trúc ứng dụng được thiết kế để đơn giản hóa việc sử dụng lại các thành phần; bất kỳ ứng dụng có thể xuất bản khả năng của mình và ứng dụng nào khác sau đó có thể sử dụng những khả năng (có thể hạn chế bảo mật được thực thi bởi khuôn khổ) Cơ chế này cho phép các thành phần tương tự sẽ được thay thế bởi người sử dụng

 Một “Resource Manager” cung cấp truy xuất tới các tài nguyên không phải là

mã nguồn, chẳng hạn như: localized strings, graphics, layout files

 Một “Notifycation Manager” cho phép tất cả các ứng dụng hiển thị các thông báo (alert) trong thanh trạng thái (status bar)

Activity Manager được dùng để quản lý chu trình sống của ứng dụng và điều hướng các activity

1.3.3 Library và Android Runtime

 Library:

Android bao gồm một tập hợp các thư viên C/C++ được sử dụng bởi nhiều thành phần khác nhau trong hệ thống Android Điều này được thể hiện thông qua nền tảng ứng dụng Android Một số các thư viện cơ bản được liệt kê dưới đây:

Trang 30

Tổng quan về hệ điều hành mobile Android 13

 System C library: hệ thống thư viện chuẩn C (libc), được điều chỉnh để nhúng vào các thiết bị dựa trên Linux

 Media Libraries: các thư viện hỗ trợ phát âm và ghi âm của nhiều định dạng audio và video thông dụng, cũng như các tập tin ảnh tĩnh, bao gồm MPEG4, H.264, MP3, AAC, AMR, JPG và PNG…

 Surface Manager – quản lý việc truy xuất vào hệ thống hiển thị

 LibWebCore – trình duyệt web của Android

 SGL – công cụ đồ họa 2D

 3D libraries – thư viện dùng để tạo ra các đồ họa 3D dựa vào chuẩn OpenGLES 1.0 API

 FreeType - hỗ trợ xử lý bitmap và font vector

 SQLite – mô hình cơ sở dữ liệu gọn nhẹ, dùng để lưu trữ dữ liệu của ứng dụng

 Android Runtime:

Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có thể hoạt động Phần này có 2 bộ phận tương tự như mô hình chạy Java trên máy tính thường Thứ nhất là các thư viện lõi (Core Library), chứa các lớp như Java IO, Collections, File Access Thứ hai là một máy ảo Java (Dalvik Virtual Machine) Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệ điều hành Android không được chạy bằng JRE của Sun (JVM) mà là chạy bằng máy ảo Dalvik do Google phát triển

1.3.4 Linnux Kernel

Android dựa trên Linux phiên bản 2.6 cung cấp cho hệ thống các dịch vụ cốt lõi như bảo mật (security), quản lý bộ nhớ (memory management), quản lý tiến trình (process management), giao tiếp với phần cứng (driver model), Kernel Linux hoạt động như một lớp trừu tượng hóa giữa phần cứng và phần còn lại của phần mềm

Trang 31

2) Services

Thành phần chạy ẩn trong Android Service sử dụng để thực hiện những công việc

mà không cần hiển thị xuyên suốt cho người dùng thấy như hẹn giờ, theo dõi các cập nhật của ứng dụng, đưa ra các cảnh báo (Notification)

đó

5) Broadcast Receiver

Thành phần thu nhận các Intent bên ngoài gửi tới Ví dụ: bạn viết 1 chương trình thay thế cho phần gọi điện mặc định của Android, khi đó bạn cần 1 Broadcast Receiver để nhận biết các Intent là các cuộc gọi tới

6) Notification

Đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt động Đây là một kỹ thuật được ưa chuộng để tạo một chú ý người dùng từ bên trong một Service

Trang 32

Tổng quan về hệ điều hành mobile Android 15

đang nhận cuộc gọi, chúng sẽ gửi đến họ một tín hiệu bằng đèn, tạo một âm thanh

hoặc hiển thị một biểu tượng nào đó

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

Một sự khác thường và là đặc tính cơ bản của Android là thời gian sống của tiến trình ứng dụng không được điều khiển trực tiếp bởi chính nó Thay vào đó, nó được xác định bởi hệ thống qua sự kết hợp của việc theo dõi:

 Những phần của ứng dụng mà hệ thống biết là đang chạy

 Độ ưu tiên của các thành phần ứng dụng

 Ứng dụng chiếm lĩnh bao nhiêu vùng nhớ của hệ thống

Một tiến trình của một ứng dụng Android được tao ra và còn chạy cho đến khi người

sử dụng hủy hoàn toàn hay khi hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ để cung cấp cho các ứng dụng khác có độ ưu tiên cao hơn

Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ lúc bắt đầu khởi tạo và đến thời điểm kết thúc Giữa đó, đôi lúc chúng có thể là active hoặc inactive, hoặc là trong trường hợp activie nó có thể visible hoặc invisible

Hình 1 5 Chu kỳ sống của ứng dụng Android

1.4.3 Chu kỳ của một Activity

Bên trong hệ thống các activity được quản lý như một stack Khi một Activity mới được khởi động, nó được đặt ở đỉnh của stack và trở thành activity đang chạy Activity

Trang 33

trước sẽ ở bên dưới activity mới và sẽ không được thấy trong suốt quá trình activity mới tồn tại

Nếu người dùng nhấn nút Back thì activity kết tiếp của stack sẽ di duyển lên và trở thành active Activity

Hình 1 6 Activity stack

 Các trạng thái trong chu kỳ sống của một Activity:

Trang 34

Tổng quan về hệ điều hành mobile Android 17

Hình 1 7 Chu kỳ sống của Activity

Một Activity có 3 chu kỳ chính sau:

 Active hoặc running: khi Activity đang được chạy và hiển thị trên màn hình,

Activity này tập trung vào những thao tác của người dùng trên ứng dụng

 Paused: Activity đang được tạm dừng, tuy bị khi mất focus do có một Activity

khác với màn hình không che hết Activity bị tạm dừng nằm ở trên, vì thế người dùng vẫn có thể trông thấy nó Một Activity tạm dừng là còn sống nhưng có thể

bị kết thúc bởi hệ thống trong trường hợp thiếu vùng nhớ

Trang 35

 Stopped: nếu nó hoàn toàn bao phủ bởi Activity khác Nó vẫn còn các trạng thái

và thông tin thành viên trong nó Người dùng không thấy nó và thường bị loại bỏ trong trường hợp hệ thống cần vùng nhớ cho tác vụ khác [5]

 Các phương thức trong chu kỳ sống của một Activity:

Phương thức: onCreate()

- Được gọi khi activity lần đầu tiên được tạo

- Ở đây bạn làm tất cả các cài đặt tĩnh tạo các view, kết nối dữ liệu đến list và v.v…

- Phương thức này gửi qua một đối tượng Bundle chứa đựng từ trạng thái trược

- Được gọi trước khi một activity visible với người dùng

- Theo sau bởi onResume() nếu activity đến trạng thái foreground hoặc onStop()

nế nó trở nên ẩn

Phương thức: onResume()

- Được gọi trước khi activity bắt đầu tương tác với người dùng

- Tại thời điểm này activity ở trên dỉnh của stack activity

- Luôn theo sau bởi onPause()

Phương thức: onPause()

Trang 36

Tổng quan về hệ điều hành mobile Android 19

- Được gọi khi hệ thống đang resuming activity khác

- Phương thức này là điển hình việc giữ lại không đổi dữ liệu

- Nó nên được diễn ra một cách nhanh chóng bởi vì activity kế tiếp sẽ không được resumed ngay cho đến khi nó trở lại

- Theo sau bởi onResume nếu activity trở về từ ở trước, hoặc bởi onStop nếu nó

trở nên visible với người dùng

- Trạng thái của activity có thể bị giết bởi hệ thống

Phương thức: onStop()

- Được gọi khi activity không thuộc tầm nhìn của người dùng

- Nó có thể diễn ra bởi vì nó đang bị hủy, hoặc bởi vì activity khác vữa được resumed và bao phủ nó

- Được theo sau bởi onRestart() nếu activity đang đở lại để tương tác với người dùng, hoặc onDestroy() nếu activity đang bỏ

- Trạng thái của activity có thể bị giết bởi hệ thống

Phương thức: onDestroy()

- Được gọi trước khi activity bị hủy

- Đó là lần gọi cuối cùng mà activity này được nhận

- Nó được gọi khác bởi vì activity đang hoàn thành, hoặc bởi vì hệ thống tạm thởi

bị hủy diệt để tiết kiệm vùng nhớ

- Bạn có thể phân biệt giữa 2 kịch bản với phương isFinshing()

1.4.4 Intent

 Khái niện Intent:

Intent là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một Activity

Nó là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiều Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc khác nhau

Trang 37

Intent chính là người đưa thư, giúp các Activity có thể triệu gọi cũng như truyền các

dữ liệu cần thiết tới một Activity khác Điều này cũng giống như việc di chuyển qua lại giữa các Forms trong lập trình Windows Form

Hình 1 8 Intent

Intent về cơ bản là một cấu trúc dữ liệu, được mô tả trong lớp android.content.Intent

 Các thuộc tính của một đối tượng Intent:

Bảng 1 1 Các thuộc tính của đối tượng Intent

Tên thuộc tính Chức năng

action

Tên (string) của action mà Intent sẽ yêu cầu thực hiện

Action có thể do Android định nghĩa sẵn (built-in standard action) hoặc do người lập trình tự định nghĩa

data Dữ liệu mà Activity được gọi sẽ xử lý

catelogy Thông tin về nhóm của action

type Định dạng kiểu dữ liệu (chuẩn MIME), thường được tự

động xác định

component

Chỉ định cụ thể lớp sẽ thực thi Activity Khi được xác định, các thuộc tính khác trở thành không bắt buộc (optional)

extras

Chứa tất cả các cặp (key, value) do ứng dụng thêm vào để truyền qua Intent (theo cấu trúc Bundle)

Trang 38

Tổng quan về hệ điều hành mobile Android 21

Các Action được định nghĩa sẵn:

Dưới đây là những hằng String đã được định nghĩa sẵn trong lớp Intent Đi kèm với

nó là các Activity hay Application được xây dựng sẵn sẽ được triệu gọi mỗi khi Intent tương ứng được gửi (tất nhiên khi được cung cấp đúng data)

Ví dụ: Gọi tới một số điện thoại:

Intent dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:123456")); startActivity(dialIntent);

Hình 1 9 Các Action được dựng sẵn

1.4.5 Content Provider và Uri

Trong hệ thống Android tất cả các tài nguyên như Contact, SMS,… đều được lưu trữ vào CSDL SQLite của hệ thống Cũng như các CSDL khác, CSDL mà hệ thống Android sử dụng để lưu trữ thông tin cũng cho phép chúng ta truy vấn dữ liệu như một CSDL thông thường Tuy nhiên, trong hệ thống đó chúng ta không cần phải thao

Trang 39

tác bằng lệnh SQL nhiều để truy xuất dữ liệu mà thay vào đó Android đã được trang

bị một API cho phép người lập trình có thể dễ dàng truy xuất dữ liệu Đó gọi là ContentProvider ContentProvider cung cấp cho chúng ta một đối tượng con trỏ giúp chúng ta có thể dễ dàng lấy được bất cứ dữ liệu lưu trữ nào chỉ cần cung cấp một đường dẫn đúng đến dữ liệu đó Đường dẫn này còn được gọi là Uri

Tạo một Uri:

Uri uri = Uri.parse(“content://com.android.contacts/contacts”);

Cấu trúc gồm có 4 phần chính như sau:

 Phần A: Đây là tiền tố chỉ ra dữ liệu được điều khiển bởi Content Provider và

nó không bao giờ thay đổi

 Phần B: Phần này chỉ đến nơi lưu trữ dữ liệu Cũng giống như cấu trúc của một số điện thoại thì cái này có thể hình dung nó như là mã quốc gia hoặc cũng

có thể coi nó như là tên của CSDL

 Phần C: phần này chỉ ra loại dữ liệu Chẳng hạn như, dữ liệu contact, dữ liệu SMS, … Phần này có thể coi nó như là tên của một table

 Phần D: phần này chỉ đến đúng vị trí của dữ liệu, có thể coi phần này như là

ID của row trong table hoặc một dữ liệu nào đó dùng để truy vấn

Ví dụ: Uri chỉ đến contact thứ 0 trong CSDL là: content://contacts/people/0

Để có thể thực hiện truy vấn đến vùng dữ liệu được chỉ ra bởi một Uri ta cần có 2 đối tượng con trỏ được cung cấp bởi Activity đó là: Cursor và ContentResolver

Trang 40

Tổng quan về hệ điều hành mobile Android 23

Để lấy được 2 đối tượng này thì trong Activity sử dụng hàm

getContentResolver(); - trả về đối tượng ContentResolver

getContentResolver().query(Uri uri); - trả về đối tượng Cursor

Một Service có thể được sử dụng theo 2 cách:

 Nó có thể được bắt đầu và được cho phép hoạt động cho đến khi một người nào đó dừng nó lại hoặc nó tự ngắt Ở chế độ này, nó được bắt đầu bằng cách gọi Context.startService() và dừng bằng lệnh Context.stopService() Nó có thể

tự ngắt bằng lệnh Service.stopSelf() hoặc Service.stopSelfResult() Chỉ cần một lệnh stopService() để ngừng Service lại cho dù lệnh startService() được gọi ra bao nhiêu lần

 Service có thể được vận hành bằng việc sử dụng một Interface mà nó định nghĩa Người dùng thiết lập một đường truyền tới đối tượng Service và sử dụng đường kết nối đó để thâm nhập vào Service Kết nối này được thiết lập bằng cách gọi lệnh Context.bindService() và được đóng lại bằng cách gọi lệnh Context.unbindService() Nhiều người dùng có thể kết nối tới cùng một Service Nếu Service vẫn chưa được khởi chạy, lệnh bindService() có thể tùy

ý khởi chạy nó

Hai chế độ này không tách biệt hoàn toàn, có thể kết nối với một Service mà nó đã được bắt đầu với lệnh startService() Ví dụ, một Service nghe nhạc ở chế độ nền có thể được bắt đầu bằng cách gọi lệnh startService() cùng với một đối tượng Intent mà

Ngày đăng: 10/05/2016, 22:44

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. Mạng xã hội địa điểm: “cuộc đua” mới, http://www.ictnews.vn, truy cập ngày 15/03/2015 Sách, tạp chí
Tiêu đề: cuộc đua
[4]. Trần Hữu Phước, Tìm hiểu và xây dựng ứng dụng Phone Book Safe Manager trên Android , 2010 Sách, tạp chí
Tiêu đề: Tìm hiểu và xây dựng ứng dụng Phone Book Safe Manager trên Android
[9]. Places Jose Sandoval, RESTful Java Web Services, Packt, 2009 Sách, tạp chí
Tiêu đề: RESTful Java Web Services
[11]. Đoàn Hữu Nghĩa, Đặng Thanh Thảo. Tìm hiểu lập trình Objective-C Và IOS. Xây dựng ứng dụng minh họa Sách, tạp chí
Tiêu đề: Tìm hiểu lập trình Objective-C Và IOS
[2]. Ứng dụng di động kết hợp mạng xã hội và địa điểm sẽ hot trong năm 2013, http://thebusiness.vn/ , truy cập ngày 15/03/2015 Link
[7]. The Google Places API, http://code.google.com/apis/maps/documentation/places/, truy cập ngày 20/06/2015 Link
[8]. The Google Directions API, http://code.google.com/intl/vi/apis/maps/documentation/directions/, truy cập ngày 30/05/2015 Link

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w