Từ viết tắt Mô tả JSON Ký hiệu đối tượng JavaScript JavaScript Object Notation XML Một ngôn ngữ đánh dấu mở rộng Extensible Markup Language API Giao diện lập trình ứng dụng Application
Trang 2Em xin chân thành cảm ơn các thầy cô trong khoa tin học, trường Đại học Sư Phạm Đà Nẵng đã truyền đạt những kiến thức quý báu cho em trong những năm học vừa qua và nhất là đã tạo điều kiện thuận lợi cho em học tập, thực hiện đề tài tốt nghiệp này
Đặc biệt, em xin chân thành cảm ơn TS Nguyễn Trần Quốc Vinh đã trực tiếp, tận tình giúp đỡ và hướng dẫn em trong suốt thời gian thực hiện đề tài
Và để có được kết quả như ngày hôm nay, em rất biết ơn gia đình đã động viên, khích lệ, tạo mọi điều kiện thuận lợi nhất về vật chất lẫn tinh thần trong suốt quá trình học tập cũng như quá trình thực hiện đề tài tốt nghiệp này
Mặc dù, đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Em rất mong nhận được sự thông cảm, góp ý và tận tình chỉ bảo của quý thầy cô và các bạn
Một lần nữa xin chân thành cám ơn!
Trang 3Em xin cam đoan:
1 Những nội dung trong khó luận này là do em thực hiện dưới sự hướng dẫn trực tiếp của TS Nguyễn Trần Quốc Vinh
2 Mọi tham khảo dùng trong khóa luận đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá,
em xin chịu hoàn toàn trách nhiệm
Sinh viên
Võ Lê Anh Thư
Trang 4CHƯƠNG 1 1
TỔNG QUAN ĐỀ TÀI VÀ CƠ SỞ LÝ THUYẾT 1
1.1 Bối cảnh đề tài 1
1.1.1 Mục đích của đề tài 2
1.1.2 Phương pháp nghiên cứu 2
1.1.3 Công cụ xây dựng 2
1.2 Bố cục khóa luận 2
1.3 Cơ sở lý thuyết 3
1.3.1 Tìm hiểu nền tảng Android 3
1.3.2 GPS và vấn đề định vị tọa độ 5
1.3.3 Google Map API 6
1.3.4 NodeJS và Socket.io 7
1.3.5 Khả năng ứng dụng thực tiễn 8
CHƯƠNG 2 9
PHÂN TÍCH YÊU CẦU VÀ ĐẶC TẢ CHỨC NĂNG CỦA CHƯƠNG TRÌNH 9
2.1 Yêu cầu của hệ thống 9
2.1.1 Yêu cầu chức năng 9
2.1.2 Yêu cầu về phần cứng (tối thiểu) 9
2.1.3 Yêu cầu về phần mềm 9
2.2 Đặc tả chức năng của chương trình (Use-case) 10
2.2.1 Use-case tổng quát 10
2.2.2 Mô tả Actor 10
2.2.3 Mô tả use-case 11
2.3 Đặc tả yêu cầu cụ thể 12
2.3.1 Chức năng quản lý các công việc liên quan đến GPS 12
2.3.2 Chức năng quản lý danh sách các yêu cầu 14
2.3.3 Chức năng quản lý các kết nối mạng Internet của người dùng 15
2.3.4 Chức năng quản lý các tin nhắn nhắc nhở từ hệ thống của các ứng dụng 16
2.3.5 Chức năng quản lý các thông báo từ hệ thống của các ứng dụng hay người dùng 17
Trang 52.4 Phân tích và thiết kế chức năng 20
2.4.1 Quản lý chức năng liên quan đến GPS 20
2.4.2 Quản lý danh sách các yêu cầu gửi lên máy chủ của các ứng dụng 25
2.4.3 Quản lý các thông báo từ máy chủ của các ứng dụng hay người dùng 28
2.4.4 Quản lý các kết nối mạng Internet của người dùng 30
2.4.5 Quản lý các tin nhắn nhắc nhở từ máy chủ của các ứng dụng 32
2.4.6 Hỗ trợ xây dựng phòng chat 35
2.4.7 Quản lý tài khoản 38
2.5 Dự kiến kết quả đạt được 39
CHƯƠNG 3 42
TRIỂN KHAI CHƯƠNG TRÌNH 42
3.1 Cách sử dụng thư viện trong Android 42
3.2 Triển khai chương trình 44
TÀI LIỆU THAM KHẢO 50
Trang 6Hình 1 – Sơ đồ use-case tổng quát 10
Hình 2 - Use-case quản lý chức năng liên quan đến GPS 12
Hình 3 - Use-case quản lý danh sách các yêu cầu gửi lên máy chủ của các ứng dụng 14 Hình 4 - Use-case quản lý các kết nối mạng Internet của người dùng 15
Hình 5 - Use-case quản lý các tin nhắn nhắc nhở từ máy chủ của các ứng dụng 16
Hình 6 – Use case quản lý các thông báo từ hệ thống của các ứng dụng hay người dùng 17
Hình 7 - Use-case quản lý tài khoản 18
Hình 8 - Use-case hỗ trợ xây dựng phòng chat 19
Hình 9 – Biểu đồ lớp quản lý chức năng liên quan đến GPS 20
Hình 10 – Biểu đồ lớp quản lý danh sách các yêu cầu gửi lên máy chủ của các ứng dụng 25
Hình 11 – Biểu đồ lớp quản lý thông báo từ máy chủ của các ứng dụng hay người dùng 28
Hình 12 – Biểu đồ lớp quản lý các kết nối mạng Internet của người dùng 30
Hình 13 – Biểu đồ lớp quản lý các tin nhắn nhắc nhở từ máy chủ của các ứng dụng 32
Hình 14 – Biểu đồ lớp quản lý tài khoản 38
Hình 15 – Cấu trúc thư viện 42
Hình 16 – Tạo gói jar cho thư viện 43
Hình 17 – Hiển thị vị trí của người dùng 44
Hình 18 – Vẽ đường đi giữa hai vị trí 45
Hình 19 – Hiển thị các vị trí gần nhất so với vị trí người dùng hiện tại 45
Hình 20 – Hiển thị các vị trí gần nhất so với một địa điểm 46
Hình 21 – Nhắc nhở bằng đèn Flash hay đèn nhấp nháy 46
Hình 22 – Nhắc nhở bằng cách thiết lập chế độ rung 47
Hình 23 – Giao diện đăng nhập để chat 47
Hình 24 – Giao diện tạo phòng chat 48
Trang 7Bảng 1 - Mô tả Actor 10 Bảng 2 - Mô tả use-case 11 Bảng 3 - Danh sách các chức năng 41
Trang 8Từ viết tắt Mô tả
JSON Ký hiệu đối tượng JavaScript (JavaScript Object Notation)
XML Một ngôn ngữ đánh dấu mở rộng (Extensible Markup Language ) API Giao diện lập trình ứng dụng (Application Programming Interface) GPS Hệ thống định vị toàn cầu xác định vị trí dựa trên các vệ tinh nhân
tạo (Global Positioning System) SDK Bộ công cụ phát triển phần mềm trên Android (Software
Development Kit) ADT Một plugin cho eclipse giúp mở rộng khả năng tương thích của
eclipse với các ứng dụng Android (Android Development Tools)
Trang 9CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI VÀ CƠ SỞ LÝ THUYẾT
1.1 Bối cảnh đề tài
Trong cuộc sống, nhu cầu thông tin liên lạc là hết sức cần thiết Vô số phương pháp liên lạc đã ra đời nhằm phục vụ nhu cầu thư tín, điện thoại bàn đến thư điện tử, điện thoại di động, kết nối Wi-Fi, chat Web, Camera, Trong đó, điện thoại di động nổi bật lên như một phương tiện liên lạc hữu ích nhất, tiện lợi nhất, đặc biệt đối với những người sống và làm việc trong các đô thị Nhờ chức năng đàm thoại trực tiếp mọi lúc mọi nơi, mà điện thoại di động ngày càng được sử dụng rộng rãi
Hiện nay trên thế giới, thế giới điện thoại di động phát triển không ngừng bởi các nhà sản xuất lâu đời có tên tuổi như Samsung, Nokia, Motorola, Giờ đây, Google một hãng nổi tiếng nhất về Internet, tiếp tục tham vọng xâm chiếm thị trường di động bằng việc tung ra gói phần mềm cho điện thoại di động Android Gói phần mềm này sẽ tương thích với gần như tất cả các mẫu điện thoại trên thị trường
Điện thoại di động không chỉ là thiết bị đàm thoại thông thường mà đang dần trở thành một chiếc điện thoại thông minh Một trong những tiền đề thúc đẩy sự chuyển biến này của điện thoại di động chính là nhu cầu của người dùng Các bước tiến vượt bậc về công nghệ giúp bộ nhớ của điện thoại di động ngày càng lớn, tốc độ xử lý nhanh hơn, người ta tích hợp vào đó máy ảnh, máy quay video, radio, thậm chí cả tivi
và nhiều tính năng khác Năm 2007, Google đã giới thiệu Android và bộ công cụ phát triển phần mềm mới nhất (GPhone), do liên minh Open Handset Alliance mà Google đứng đầu Google cho biết, Android cho phép điện thoại nối mạng đơn giản hơn máy tính, ngoài ra, sẽ có hàng triệu phần mềm, ứng dụng khác được tạo ra, với chiếc điện thoại này, dù bạn đang dùng dòng điện thoại nào có tích hợp Android, bạn có thể vào mạng Google tra cứu cập nhật thông tin hay thư giãn với những thông tin mới nhất trên thế giới Nhưng điều đó chưa đủ, người dùng vẫn mong muốn có thêm nhiều phần mềm ứng dụng hơn nữa, chính vì vậy ngày nay trên thế giới đang hình thành ngành công nghiệp phần mềm ứng dụng cho điện thoại di động, một ngành công nghiệp được
dự báo sẽ đem lại nguồn thu lớn
Từ những thực tế và lý do trên, em xây dựng một thư viện trên nền tảng Android nhằm hỗ trợ nhiều chức năng cho các ứng dụng Android Thư viện sẽ hỗ trợ các chức năng quản lý tài khoản, quản lý danh sách yêu cầu, quản lý các kết nối mạng, xác định
Trang 10được vị trí của người dùng trên bản đồ, thông báo hay nhắc nhở người dùng, hỗ trợ việc xây dựng phòng chat cho người dùng Tùy vào sự cho phép của mỗi ứng dụng đối với người dùng mà họ có quyền sử dụng khác nhau
1.1.1 Mục đích của đề tài
Xây dựng được một thư viện mở rộng, linh động và hỗ trợ được nhiều chức năng cho các ứng dụng Android như quản lý các chức năng liên quan đến GPS, ngoài ra có các chức năng quản lý tài khoản, quản lý danh sách yêu cầu, quản lý các kết nối mạng, thông báo hay nhắc nhở người dùng, hỗ trợ việc xây dựng phòng chat cho người dùng
1.1.2 Phương pháp nghiên cứu
Thu thập và nghiên cứu các tài liệu có liên quan đến đề tài
Nghiên cứu nền tảng Android
Nghiên cứu GPS
Tìm hiểu và sử dụng Google Map APIv2
Nghiên cứu cách gửi và nhận thông tin từ máy chủ
Nghiên cứu NodeJS và Socket.io
Tìm hiểu và sử dụng Genymotion để chạy máy ảo trên Android
Phân tích các yêu cầu của hệ thống
Thiết kế, cài đặt và kiểm thử
Chương I: Tổng quan đề tài và cơ sở lý thuyết: chương này trình bày các vấn đề cơ
bản về Android, NodeJS, Socket.io, GPS và Google Map
Chương II: Phân tích thiết kế hệ thống: chương này trình bày về phân tích và thiết
kế xây dựng ứng dụng
Chương III: Triển khai chương trình: chương này trình bày về kết quả demo của
chương trình Hướng dẫn sử dụng và một số kết quả chạy thử nghiệm
Trang 111.3 Cơ sở lý thuyết
1.3.1 Tìm hiểu nền tảng Android
Nền tảng Android xây dựng các ứng dụng dựa vào các tính chất như: khung ứng dụng, máy ảo Dalvik, trình duyệt tích hợp, đồ họa, cơ sở dữ liệu Sqlite, môi trường truyền thông, môi trường phát triển đầy đủ
Ngoài ra, còn hỗ trợ các ứng dụng tích hợp các công nghệ mới hiện nay như hệ thống truyền thông di động toàn cầu Bluetooth, 3G, WiFi, Camera và GPS (các công nghệ này khi dùng còn phụ thuộc vào thiết bị)
Bên trong Android bao gồm một nhân Linux, tiếp đến là các thư viện, chúng là lớp nằm trên nhân, trên nữa là các framework và cuối cùng là những lớp ứng dụng Lớp thư viện chính là nơi để thực hiện các đoạn mã cho các thực thể như bộ xử lý đa phương tiện dùng xem/ghi lại âm thanh và hình ảnh, nhân của trình duyệt Web, tiến trình biên dịch kiểu chữ và bộ máy cơ sở dữ liệu SQLite
Các ứng dụng chạy ở lớp trên cùng của hệ điều hành với một bộ các nhân ứng dụng bao gồm thư điện tử, lịch làm việc, trình duyệt web Khi nhà phát triển viết một ứng dụng dành cho Android, ta thực hiện các đoạn mã trong môi trường Java “Sau đó, các đoạn mã này 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” [Trang web: http://www.ibm.com/developerworks]
Android còn chứa một tập các thư viện C/C++ được dùng bởi các thành phần khác nhau của hệ thống Android Các đặc tính này được nhận ra bởi các nhà phát triển qua các mẫu ứng dụng Android Một số thư viện chính được liệt kê dưới đây:
Thư viện hệ thống C: có nguồn gốc thực thi từ thư viện hệ thống chuẩn C (libc), được điều chỉnh cho phù hợp đối với các thiết bị nhúng vào Linux
Quản lý bề mặt (Surface Manager): quản lý việc truy cập cách hiển thị hệ thống
con và việc ghép liền nét các tầng đồ họa 2D và 3D từ nhiều ứng dụng
Các thư viện môi trường truyền thông: dựa trên OpenCORE của PacketVideo, các thư viện này cung cấp việc phát và ghi lại của các định dạng tiếng và hình thông dụng, cũng khá hay như các tập tin hình ảnh tĩnh, chứa MPEG4, MP3, JPG, PNG
Trang 12 LibWebCore: một bộ duyệt web hiện đại cung cấp nguồn cho cả hai trình duyệt, trình duyệt web của Android và một khung nhìn web có thể được nhúng vào
SGL: phần dưới của công cụ đồ họa 2D
Các thư viện 3D: một sự thực thi dựa trên các giao diện ứng dụng OpenGL ES 1.0, thư viện này dùng cả phần cứng 3D khá mạnh cũng như phần mềm tạo vạch 3D tùy chọn ở mức cao
Có 4 khối trong việc xây dựng nên một ứng dụng Android:
Activity
Intent Receiver
Service
Content Provider
Không phải mọi ứng dụng đều cần có 4 khối trên, nhưng các ứng dụng sẽ được tạo
ra từ một vài kết hợp từ những khối trên Đôi lúc người lập trình cần quyết định những thành phần cần cho ứng dụng của mình và liệt kê chúng trong một file gọi là AndroidManifest.xml Đây là một file XML cho phép khai báo các thành phần trong ứng dụng, những trường hợp thực thi của ứng dụng và các yêu cầu cần thiết
Trong hầu hết các trường hợp, mỗi ứng dụng Android chạy trên chính tiến trình Linux Tiến trình này được tạo ra khi ứng dụng chạy và vẫn sẽ còn đang hoạt động cho đến khi nó không cần thiết nữa, khi đó hệ thống cần cải tạo bộ nhớ cho các ứng dụng khác
Một điểm đặc trưng chủ yếu của Android là khoảng thời gian tồn tại của quá trình không được điều khiển ngay lập tức bởi ứng dụng mà chính nó tạo ra.Vì thế, vòng đời được xác định bởi hệ thống thông qua sự kết hợp các phần của ứng dụng từ hệ thống đang chạy, từ những vấn đề quan trọng đối với người dùng và từ tất cả bộ nhớ có sẵn
để dùng trong hệ thống Điều quan trọng đối với những nhà phát triển ứng dụng là hiểu các thành phần ứng dụng khác nhau như thế nào (trong sự riêng biệt của Activity, Service vàIntentReceiver), có ảnh hưởng thế nào đến vòng đời của quá trình ứng dụng Khi dùng không phù hợp các thành phần, kết quả có thể chính là hệ thống đang phá hủy các quá trình ứng dụng trong khi các tiến trình này đang làm những công việc quan trọng
Trang 13Để xác định xem quá trình nào bị phá hủy khi bộ nhớ thấp, Android đặt chúng vào
trong “hệ thống cấp bậc quan trọng” dựa trên các thành phần đang chạy và trạng thái
của các thành phần Đây là trình tự của tầm quan trọng này:
Forceground process: đang chạy một ứng dụng Activity ở trên đầu màn hình
mà người sử dụng đang tương tác với nó (khi đó phương thức onResume() đã được gọi) hay là một IntentReceiver hiện tại đang chạy (phương thức onReceiveIntent()
đang thực thi)
Visible process: là quá trình chứa một Activityhiển thị trên màn hình của
người sử dụng nhưng không nổi bật lên (phương thức onPause() đã được gọi) Nếu
một quá trình đã coi là vô cùng quan trọng và sẽ không bị phá hủy trừ khi công việc
đang làm là yêu cầu giữ cho tất cả các quá trình forceground chạy
Service process: giữ một Service vừa mới bắt đầu với phương thức
startService() Dẫu cho các quá trình không lập tức thấy được từ người sử dụng, chúng
thực hiện những điều mà người dùng quan tâm (như là nền mp3 lặp lại hay nền hệ thống mạng dữ liệu được upload hoặc được download), nên hệ thống sẽ luôn giữ cho
các quá trình này chạy trừ khi nó không đủ bộ nhớ để giữ lại tất cả các quá trình
forceground và visible
Background process: chứa một Activity tức mà hiện tại là không trực quan
với người sử dụng (phương thức onStop() đã được gọi) Các tiến trình này thực thi
vòng đời hoạt động một cách chính xác, hệ thống có thể phá hủy như các quá trình bất
cứ lúc nào để phục hồi bộ nhớ cho một trong 3 loại quá trình trước đó
Empty process: không chứa bất kỳ thành phần hoạt động ứng dụng nào Lý do
để giữ lại một quá trình lân cận như là một cache nhằm cải thiện thời gian khởi động là thời gian kế tiếp mà một thành phần của ứng dụng cần thiết có thể thực thi Như là, hệ thống sẽ thường phá hủy các tiến trình trong một tầng lớp để tạo nên sự cân bằng
1.3.2 GPS và vấn đề định vị tọa độ
“Hệ thống định vị toàn cầu (Global Positioning System - GPS) là hệ thống xác định
vị trí dựa trên vị trí của các vệ tinh nhân tạo, do Bộ Quốc Phòng Hoa Kỳ thiết kế, xây dựng, vận hành và quản lý Trong cùng một thời điểm, ở một vị trí trên mặt đất nếu xác định được khoảng cách đến ba vệ tinh (tối thiểu) thì sẽ tính được tọa độ của vị trí đó." [Trang web: http://vi.wikipedia.org/wiki/]
Trang 14Bằng cách sử dụng GPS, ta có thể xác định vị trí của một người đang di chuyển hay của một địa điểm trên toàn cầu một cách nhanh chóng nhất Điều đó góp phần hết sức
to lớn cho việc mang công nghệ đến cuộc sống gần hơn nữa
Trong quá trình nghiên cứu về GPS, em đã nhận thấy tùy thuộc vào chất lượng tín hiệu hay kết nối GPS của từng Smartphone mà có độ chính xác khác nhau Giá trị độ chính xác lớn hơn có thể làm khoảng cách giữa hai vị trí lớn hơn cần thiết còn nếu nhỏ hơn thì nhiều vị trí trên bản đồ sẽ không được hiển thị Độ chính xác mặc định trong GPS là 30 mét và trong điều kiện tối ưu thì sai số vị trí có thể là: +- 10 mét Vì vậy, đối với việc hiển thị vị trí trên ản đồ so với thực tế thì có độc lệch nhất định
1.3.3 Google Map API
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 truy cập trực tiếp đến máy chủ của Google Map để tải dữ liệu và hiển thị 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 Google Map còn cung cấp thông tin chi tiết về vị trí trên bản đồ và cho phép người dùng tương tác với bản đồ
Google Map Android API v2 đã cung cấp các cải tiến rõ rệt thông qua thư viện Google Play services Thư viện đã cung cấp lớp MapFragment và lớp MapView để hiển thị các thành phần của Map
Ngoài ra một đặc tính quan trọng của Google Map là ngoài việc cho phép người dùng tra cứu, xem thông tin trên bản đồ nó còn cho phép mọi người có thể nhúng bản
đồ lên một trang web bất kỳ của mình chỉ bằng cách tạo một tài khoản trong dịch vụ Google hoàn toàn miễn phí
Bên cạnh đó Google cũng cung cấp một thư viện các API bằng Javascript cho phép người khác sau khi nhúng bản đồ Google Map lên trang web của mình có thể khai thác
và thực hiện các công việc phát triển liên quan Nếu phải kể đến sản phẩm liên quan thì không thể bỏ qua Google Earth, một ứng dụng độc lập dành cho Microsoft Windows, Mac OS X và Linux cho phép xem các tính năng mở rộng khác
Trang 151.3.4 NodeJS và Socket.io
a) NodeJS
NodeJS là một hệ thống phần mềm được thiết kế để viết các ứng dụng Internet có khả năng mở rộng, đặc biệt là máy chủ web NodeJS cho phép các nhà phát triển ứng dụng sử dụng Javascript để lập trình cho cả phía máy chủ hay máy khách, làm JavaScript trờ thành ngôn ngữ có thể làm những công việc bên máy chủ
“Một điểm đặc biệt của NodeJS là có thể giữ cả trăm ngàn kết nối cùng một lúc Đây là khả năng cực kỳ phù hợp với những ứng dụng web cần tính năng thời gian thực hiện đại, tương thích với điện thoại thông minh và máy tính bảng.” [Trang web:
http://www.tinhte.vn/threads/tim-hieu-nodejs-ly-do-chon-nodejs.2095222/]
NodeJS có chương trình npm để quản lý thư viện nên dễ cài đặt và tạo ra nhiều thư viện hơn
Hệ thống Modules Mỗi file tương ứng một module, sử dụng bằng cách gọi method require với tham số
là tên module Mặc định các biến trong một module được gán phạm vi là private, nếu muốn module khác dùng được thì phải dùng đối tượng exports
Module Events Đây là một module quan trọng trong Node.js do kiến trúc event-driven Ví dụ khi server nhận request, một event sẽ được tạo ra và event listener tương ứng sẽ được gọi, một method fs.readStream phát ra một sự kiện khi một file được mở Tất cả các đối tượng phát ra sự kiện (event) đều là một thể hiện (instances) của events.EventEmitter
Sư kiện error là một sự kiện đặc biệt trong Node Nếu không có listeners nào được gắn vào thì mặc định sẽ in ra stack trace và thoát chương trình
Một số phương thức:
emitter.addListener(event, listener) và emitter.on(event, listener):
Thêm một listener vào cuối mảng chứa các listeners cho một event cụ thể
Trang 16Đây là một giao diện được triển khai bằng một số đối tượng trong Node Ví dụ một yêu cầu tới một HTTP server là một stream Stream có thể là readable, writable hoặc
cả hai Mọi stream là đối tượng của lớp EventEmitter
b) Socket.io
Socket.io được dùng để cho các ứng dụng thời gian thực có thể có trong mọi trình duyệt và thiết bị di động, làm giảm sự khác biệt giữa các cơ chế vận chuyển khác nhau
Socket.io sử dụng Node HTTP server, Express 3 web framework
Bên cạnh các phương thức như “connect”,”message”,”disconnect”, Socket.io cho phép bạn “emit” các sự kiện
1.3.5 Khả năng ứng dụng thực tiễn
Như đã nói ở trên, hiện nay, khả năng ứng dụng của Android hiện đang phát triển rất mạnh mẽ Android phá bỏ rào cản để xây dựng các ứng dụng mới và sáng tạo nên việc xây dựng một thư viện hữu ích có thể hỗ trợ nhiều ứng dụng cùng một lúc giúp
mở rộng khả năng phát triển và sự phong phú của Android
Trang 17CHƯƠNG 2 PHÂN TÍCH YÊU CẦU VÀ ĐẶC TẢ CHỨC NĂNG CỦA
CHƯƠNG TRÌNH 2.1 Yêu cầu của hệ thống
2.1.1 Yêu cầu chức năng
Thư viện được viết trên nền tảng Android giúp xây dựng code cho các ứng dụng,
mở rộng các chức năng Ở đây, thư viện hỗ trợ chức năng chính là quản lý chức năng liên quan đến GPS Ngoài ra còn có các chức năng: quản lý danh sách các yêu cầu gửi lên máy chủ của các ứng dụng, quản lý các kết nối mạng Internet của người dùng, quản lý các tin nhắn nhắc nhở từ máy chủ của các ứng dụng, quản lý tài khoản, quản lý các thông báo từ máy chủ của các ứng dụng hay người dùng, hỗ trợ xây dựng phòng chat
2.1.2 Yêu cầu về phần cứng (tối thiểu)
Hệ điều hành: Android 2.2 hoặc trở về sau
Trang 182.2 Đặc tả chức năng của chương trình (Use-case)
Trang 193 Quản lý các tin nhắn
nhắc nhở
Người dùng có thể bật chế độ nhắc nhở việc gì đó
đã được hẹn giờ trước Khi thông báo xuất hiện sẽ
đi kèm âm thanh, đèn flash và chế độ rung
6 Quản lý tài khoản Người dùng có thể tạo tài khoản cho bản thân,
đọc, cập nhật, xóa, xác nhận tài khoản
Trang 202.3 Đặc tả yêu cầu cụ thể
2.3.1 Chức năng quản lý các công việc liên quan đến GPS
Hình 2 - Use-case quản lý chức năng liên quan đến GPS
Trang 21Đây là chức năng giúp người dùng có thể quản lý tất cả công việc liên quan đến GPS như lấy vị trí của người dùng hay địa điểm mà họ muốn thấy, hiển thị tất cả người dùng có khoảng cách ngắn nhất so với một điểm nhất định, vẽ đường đi giữa hai
vị trí mà người dùng chọn
Chức năng hiển thị vị trí của người dùng
Bằng cách sử dụng GPS và cho phép Google Map truy cập chức năng này, Google Map sẽ hiển thị vị trí của người dùng bao gồm thông tin về tên, vị trí hiện tại và nó sẽ được cập nhật vị trí mới liên tục nếu người đó di chuyển
Chức năng hiển thị vị trí của những địa điểm
GPS sẽ giúp người dùng xác định vị trí chính xác của những địa điểm mà người dùng muốn thấy hay tìm đường đến bằng cách hiển thị địa điểm trên bản đồ sau khi người dùng nhập tên
Chức năng hiển thị vị trí của những người dùng gần nhất
Chức năng này cho phép người dùng thấy được vị trí của những người dùng gần nhất so với vị trí của bản thân hay so với vị trí của một địa điểm nào đó Nó còn cho phép người dùng chọn phạm vi hiển thị Vị trí của những người dùng gần nhất sẽ hiển thị trên bản đồ trong bán kính đã được chọn Những người nằm ngoài sẽ bị ẩn khỏi bản đồ
Ngoài ra, chức năng này còn có thể hỗ trợ hiển thị danh sách người dùng trong một nhóm nhất định, dựa vào tọa độ của từng người đã được lưu trong cơ sở dữ liệu
Chức năng hiển thị đường đi ngắn nhất giữa hai vị trí
Chức năng này cho phép hiển thị đường đi giữa hai vị trí đã được chọn Nó có thể vẽ đường đi cho người đi bộ hay cho người lái xe ô tô bằng màu sắc khác nhau giúp cho việc phân biệt loại đường đi
Ngoài ra, chức năng này còn hiển thị khoảng cách và thời gian mà một người có thể đến địa điểm mình mong muốn nếu đi theo con đường đã hiển thị trên bản
đồ
Trang 222.3.2 Chức năng quản lý danh sách các yêu cầu
Hình 3 - Use-case quản lý danh sách các yêu cầu gửi lên máy chủ của các ứng
dụng
Chức năng này giúp quản lý danh sách các yêu cầu từ máy chủ được gửi đến người dùng ứng dụng hay giúp người dùng gửi các yêu cầu lên máy chủ của các ứng dụng bằng tệp tin XML hay JSON Đối với mỗi trường hợp lại có cách xử lý khác nhau
Trang 232.3.3 Chức năng quản lý các kết nối mạng Internet của người dùng
Hình 4 - Use-case quản lý các kết nối mạng Internet của người dùng
Chức năng giúp kiểm tra trạng thái của các loại mạng, các loại mạng được người dùng sử dụng và tự động kết nối hay ngắt kết nối mạng Internet của người dùng
Trang 242.3.4 Chức năng quản lý các tin nhắn nhắc nhở từ hệ thống của các ứng dụng
Hình 5 - Use-case quản lý các tin nhắn nhắc nhở từ máy chủ của các ứng dụng
Chức năng này giúp người dùng nhắc nhở một sự kiện sẽ diễn ra trong tương lai với thời gian xác định Người dùng có thể thiết lập chế độ lặp lại hoặc để chế độ mặc định kèm theo việc thiết lập âm thanh, độ rung, đèn flash và gửi tin nhắn
Trang 252.3.5 Chức năng quản lý các thông báo từ hệ thống của các ứng dụng hay người
Trang 262.3.6 Chức năng quản lý tài khoản
Hình 7 - Use-case quản lý tài khoản
Chức năng này giúp quản lý tất cả tài khoản của người dùng khi dùng ứng dụng bằng cách tác động vào cơ sở dữ liệu của máy chủ của các ứng dụng
Trang 272.3.7 Chức năng hỗ trợ xây dựng phòng chat
Hình 8 - Use-case hỗ trợ xây dựng phòng chat
Chức năng này hỗ trợ chat giữa nhiều người dùng khác nhau để trao đổi thông tin
Trang 282.4 Phân tích và thiết kế chức năng
2.4.1 Quản lý chức năng liên quan đến GPS
Hình 9 – Biểu đồ lớp quản lý chức năng liên quan đến GPS
Trang 29 Lớp NearestUser
MapHandler handling Đây là đối tượng MapHandler được sử dụng thông qua lớp
cho các phương thức khác nhau double mLongitude Đây là một thuộc tính được sử dụng thông qua lớp cho các
phương thức khác nhau double mLatitude Đây là một thuộc tính được sử dụng thông qua lớp cho các
phương thức khác nhau GoogleMap map Đây là đối tượng GoogleMap được sử dụng thông qua lớp
cho các phương thức khác nhau LocationClient
radiusKilometer
Đây là một thuộc tính được sủ dụng thông qua lớp cho các phương thức khác nhau