Bối cảnh đề tài
Trong cuộc sống hiện đại, nhu cầu thông tin liên lạc rất quan trọng, dẫn đến sự phát triển của nhiều phương pháp như thư tín, điện thoại bàn, thư điện tử, điện thoại di động, kết nối Wi-Fi, chat Web và Camera Trong số đó, điện thoại di động nổi bật với tính tiện lợi và hữu ích, đặc biệt cho những người sống và làm việc tại các đô thị Nhờ vào khả năng đàm thoại trực tiếp mọi lúc mọi nơi, điện thoại di động ngày càng trở nên phổ biến và được ưa chuộng.
Hiện nay, thị trường điện thoại di động đang phát triển mạnh mẽ với sự góp mặt của các nhà sản xuất lớn như Samsung, Nokia và Motorola Google, một tên tuổi nổi bật trong lĩnh vực Internet, đã tham gia vào thị trường này bằng cách ra mắt gói phần mềm Android, tương thích với hầu hết các mẫu điện thoại hiện có Điện thoại di động không chỉ dừng lại ở vai trò thiết bị đàm thoại mà đã trở thành smartphone với nhiều tính năng vượt trội Sự phát triển này được thúc đẩy bởi nhu cầu ngày càng cao của người dùng và những tiến bộ công nghệ, giúp điện thoại có bộ nhớ lớn hơn, tốc độ xử lý nhanh hơn, cùng với các tính năng như máy ảnh, video, radio và TV Ra mắt vào năm 2007, Android và bộ công cụ phát triển GPhone của Google, thông qua Open Handset Alliance, đã mở ra khả năng kết nối mạng dễ dàng hơn so với máy tính Người dùng có thể truy cập thông tin và giải trí qua hàng triệu ứng dụng được phát triển cho Android Tuy nhiên, nhu cầu về ứng dụng vẫn đang gia tăng, dẫn đến sự hình thành ngành công nghiệp phần mềm ứng dụng cho điện thoại di động, dự báo sẽ mang lại nguồn thu lớn trong tương lai.
Dựa trên những thực tế và lý do đã nêu, tôi đã phát triển một thư viện trên nền tảng Android nhằm cung cấp nhiều chức năng hữu ích cho các ứng dụng Thư viện này hỗ trợ quản lý tài khoản, danh sách yêu cầu, kết nối mạng, xác định vị trí người dùng trên bản đồ, cũng như thông báo và nhắc nhở người dùng Ngoài ra, nó còn hỗ trợ xây dựng phòng chat cho người dùng, với quyền truy cập khác nhau tùy thuộc vào sự cho phép của từng ứng dụng.
1.1.1 Mục đích của đề tài
Xây dựng một thư viện linh hoạt cho ứng dụng Android giúp quản lý GPS, tài khoản, danh sách yêu cầu và kết nối mạng Thư viện này còn cung cấp chức năng thông báo, nhắc nhở người dùng và hỗ trợ tạo phòng chat, nâng cao trải nghiệm người dùng.
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
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ử
Bố cục khóa luận
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.
Cơ sở lý thuyết
1.3.1 Tìm hiểu nền tảng Android
Nền tảng Android phát triển các ứng dụng dựa trên nhiều tính năng quan trọng, bao gồm 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 và môi trường phát triển toàn diện.
Ngoài ra, bài viết còn đề cập đến việc hỗ trợ các ứng dụng tích hợp công nghệ hiện đại như Bluetooth, 3G, WiFi, Camera và GPS, tuy nhiên, hiệu quả sử dụng của các công nghệ này còn phụ thuộc vào thiết bị.
Android được xây dựng trên nền tảng nhân Linux, bao gồm các thư viện, framework và lớp ứng dụng Các thư viện đóng vai trò quan trọng trong việc thực hiện mã cho các chức năng như xử lý đa phương tiện, trình duyệt web, biên dịch kiểu chữ và cơ sở dữ liệu SQLite.
Các ứng dụng hoạt động trên lớp trên cùng của hệ điều hành, bao gồm các nhân ứng dụng như thư điện tử, lịch làm việc và trình duyệt web Khi phát triển ứng dụng cho Android, lập trình viên viết mã trong môi trường Java, sau đó mã này được biên dịch thành bytecode Java Để chạy ứng dụng trên Android, lập trình viên cần sử dụng công cụ dx, chuyển đổi bytecode thành 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 bao gồm một bộ thư viện C/C++ được sử dụng bởi các thành phần khác nhau trong hệ thống Những đặc tính này được các nhà phát triển nhận diện thông qua các mẫu ứng dụng Android Dưới đây là danh sách một số thư viện chính.
Thư viện hệ thống C là phiên bản điều chỉnh từ thư viện chuẩn C (libc), được tối ưu hóa cho các thiết bị nhúng chạy trên hệ điều hành Linux.
Quản lý bề mặt (Surface Manager) chịu trách nhiệm điều phối việc truy cập và hiển thị các hệ thống con, đồng thời thực hiện việc ghép nối các tầng đồ họa 2D và 3D từ nhiều ứng dụng khác nhau.
Các thư viện môi trường truyền thông dựa trên OpenCORE của PacketVideo cung cấp khả năng phát và ghi lại các định dạng âm thanh và hình ảnh phổ biến, bao gồm cả các tập tin hình ảnh tĩnh như MPEG4, MP3, JPG và PNG.
LibWebCore là một bộ duyệt web hiện đại, cung cấp nền tảng cho cả trình duyệt web của Android và một khung nhìn web có khả năng nhúng.
SGL: phần dưới của công cụ đồ họa 2D
Các thư viện 3D là một giải pháp dựa trên các giao diện ứng dụng OpenGL ES 1.0, cho phép sử dụng cả phần cứng 3D mạnh mẽ và 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:
Không phải tất cả các ứng dụng đều cần đầy đủ bốn khối, nhưng chúng thường được tạo ra từ sự kết hợp của một vài khối Lập trình viên cần xác định các thành phần cần thiết cho ứng dụng và liệt kê chúng trong file AndroidManifest.xml File này là một file XML giúp khai báo các thành phần của ứng dụng, các trường hợp thực thi và các yêu cầu cần thiết.
Hầu hết các ứng dụng Android hoạt động trên một tiến trình Linux riêng biệt, được khởi tạo khi ứng dụng được mở Tiến trình này duy trì hoạt động cho đến khi không còn cần thiết, lúc đó hệ thống sẽ giải phóng bộ nhớ để phục vụ cho các ứng dụng khác.
Một đặc điểm nổi bật của Android là quá trình tồn tại không được điều khiển ngay lập tức bởi ứng dụng mà nó tạo ra Vòng đời của ứng dụng đượ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 đang chạy, các vấn đề quan trọng với người dùng và bộ nhớ có sẵn Điều này khiến cho các nhà phát triển cần hiểu rõ các thành phần động như Activity, Service và IntentReceiver, cũng như ảnh hưởng của chúng đến vòng đời của quá trình Việc sử dụng không đúng các thành phần có thể dẫn đến việc hệ thống phá hủy các quá trình ứng dụng đang thực hiện nhiệm vụ quan trọng Để xác định quá trình nào bị phá hủy khi bộ nhớ thấp, Android phân loại chúng theo “hệ thống cấp bậc quan trọng” dựa trên các thành phần và trạng thái của chúng.
The foreground process refers to the active activity on the screen that the user is currently interacting with, which triggers the onResume() method Alternatively, it can also involve an IntentReceiver that is actively running, executing the onReceiveIntent() method.
Quá trình visible là quá trình hiển thị trên màn hình của người dùng nhưng không được chú ý đến, khi phương thức onPause() được gọi Nếu một quá trình được coi là rất quan trọng, nó sẽ không bị phá hủy trừ khi có yêu cầu giữ cho tất cả các quá trình foreground hoạt động.
Yêu cầu của hệ thống
Thư viện Android này được thiết kế để hỗ trợ phát triển ứng dụng bằng cách mở rộng các chức năng, đặc biệt là quản lý GPS Nó cung cấp các tính năng quan trọng như quản lý danh sách yêu cầu gửi lên máy chủ, kết nối Internet của người dùng, tin nhắn nhắc nhở từ máy chủ, quản lý tài khoản và thông báo từ máy chủ Ngoài ra, thư viện còn hỗ trợ xây dựng phòng chat, giúp tối ưu hóa trải nghiệm người dùng trong các ứng dụng.
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
Bộ nhớ trong (RAM): 512 MB
Định dạng vị trí GPS
2.1.3 Yêu cầu về phần mềm
Eclipse đă được cài SDK và ADT
Đặc tả chức năng của chương trình (Use-case)
Hình 1 – Sơ đồ use-case tổng quát
System Các ứng dụng được xây dựng trên nền tảng Android
STT Use-Case Mô tả
1 Quản lý chức năng liên quan đến GPS
Người dùng có khả năng xác định vị trí của chính mình hoặc của người khác, đồng thời cũng có thể tìm kiếm vị trí của các địa điểm mong muốn như cửa hàng, nhà hàng, và nhiều địa điểm khác.
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
Người dùng gửi yêu cầu lên máy chủ của các ứng dụng và chờ để nhận sự phản hồi từ máy chủ của các ứng dụng
3 Quản lý các tin nhắn nhắc nhở
Người dùng có thể kích hoạt chế độ nhắc nhở cho các sự kiện đã được hẹn giờ trước Khi đến thời gian, thông báo sẽ hiển thị kèm theo âm thanh, đèn flash và chế độ rung để thu hút sự chú ý.
Quản lý các kết nối mạng Internet của người dung
Người dùng có thể đặt chế độ tự động bật 3G, Wifi hay GPS nếu kiểm tra thấy không có mạng hoặc tự động tắt chúng nếu không thích
Quản lý các thông báo từ máy chủ của các ứng dụng hay người dung
Người dùng có thể gửi thông báo lên máy chủ của các ứng dụng và máy chủ sẽ gửi trực tiếp đến những người dùng khác
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
7 Hỗ trợ xây dựng phòng chat
Người dùng có thể nói chuyện với nhiều người cùng một lúc
Bảng 2 - Mô tả use-case
Đặ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
Chức năng quản lý liên quan đến GPS cho phép người dùng dễ dàng theo dõi vị trí của mình và các địa điểm mong muốn Nó hiển thị danh sách người dùng gần nhất với một điểm cụ thể và hỗ trợ vẽ đường đi giữa hai vị trí mà người dùng lựa 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 Maps truy cập, người dùng sẽ thấy vị trí của mình hiển thị trên bản đồ, bao gồm tên và vị trí hiện tại Thông tin này sẽ được cập nhật liên tục khi người dùng di chuyển.
Chức năng hiển thị vị trí của những địa điểm
GPS cho phép người dùng xác định vị trí chính xác của các địa điểm mong muốn bằng cách hiển thị chúng trên bản đồ sau khi nhập tên địa điểm.
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 xác định vị trí những người gần nhất so với bản thân hoặc một địa điểm cụ thể Người dùng có thể tùy chọn phạm vi hiển thị, và vị trí của những người gần nhất sẽ được hiển thị trên bản đồ trong bán kính đã chọn, trong khi những người nằm ngoài phạm vi này sẽ bị ẩn.
Chức năng này hỗ trợ hiển thị danh sách người dùng trong một nhóm cụ thể, dựa trên tọa độ đã được lưu trữ 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 hiển thị đường đi giữa hai vị trí đã chọn, cho phép vẽ đường đi cho cả người đi bộ và người lái xe ô tô Mỗi loại đường đi được phân biệt bằng màu sắc khác nhau, giúp người dùng dễ dàng nhận diện.
Chức năng này cho phép người dùng xem khoảng cách và thời gian cần thiết để đến địa điểm mong muốn, dựa trên lộ trình được hiển thị trên bản đồ.
2.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 quản lý danh sách yêu cầu từ máy chủ đến người dùng ứng dụng và cho phép người dùng gửi yêu cầu lên máy chủ thông qua tệp tin XML hoặc JSON, với từng trường hợp được xử lý theo cách riêng.
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
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 này cho phép người dùng kiểm tra trạng thái các loại mạng mà họ đang sử dụng, đồng thời tự động kết nối hoặc ngắt kết nối Internet khi cần thiết.
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
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 cho phép người dùng thiết lập nhắc nhở cho các sự kiện trong tương lai với thời gian cụ thể Người dùng có thể chọn chế độ lặp lại hoặc giữ chế độ mặc định để dễ dàng quản lý các sự kiện quan trọng.
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
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
Chức năng này giúp gửi thông báo từ máy chủ của các ứng dụng hay người dùng đến người dùng khác trong thời gian ngắn nhất
2.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 cho phép người dùng quản lý tất cả tài khoản trong ứng dụng một cách hiệu quả thông qua việc tương tác với cơ sở dữ liệu trên máy chủ của các ứng dụng.
2.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.
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
Thuộc tính Mô tả thuộc tính
MapHandler là đối tượng được sử dụng để xử lý bản đồ thông qua lớp, cho phép thực hiện các phương thức khác nhau Thuộc tính mLongitude đại diện cho kinh độ và được sử dụng trong nhiều phương thức của lớp Tương tự, thuộc tính mLatitude đại diện cho vĩ độ và cũng được áp dụng trong các phương thức khác nhau của lớp.
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 mLocationClient Đây là đối tượng LocationClient được sử dụng thông qua lớp cho các phương thức khác nhau
ArrayList markerPoints Đây là đối tượng ArrayList được sử dụng thông qua lớp cho các phương thức khác nhau
LocationRequest mLocationRequest Đây là đối tượng LocationRequest được sử dụng thông qua lớp cho các phương thức khác nhau
ArrayList listPoint Đây là đối tượng ArrayList được sử dụng thông qua lớp cho các phương thức khác nhau
Activity activity Đây là đối tượng Activity được sử dụng thông qua lớp cho các phương thức khác nhau
Double 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
Phương thức DrawNearestUsers(ArrayList listPoint,LocationClient mLocationClient, Activity activity,ArrayList markerPoints,GoogleMap map,LocationRequest mLocationRequest,SupportMapFragment fm,double mLatitude,double mLongitude,double radiusKilometer)
Bằng cách cho phép lập trình viên nhập dữ liệu về mảng tọa độ và phạm vi hiển thị, chúng ta có thể xác định vị trí của những người dùng gần nhất so với một vị trí cố định và hiển thị chúng trên Google Map.
Phương thức onLocationChanged(Location location)
Phương thức sử dụng GPS cho phép cập nhật vị trí hiện tại của người dùng một cách thường xuyên, ngay cả khi người dùng đang di chuyển Vị trí mới sẽ được tự động cập nhật, đảm bảo thông tin luôn chính xác và kịp thời.
Mô tả phương thức Sử dụng GPS để lấy vị trí hiện tại của người sử dụng và vẽ lên bản đồ
Thuộc tính Mô tả thuộc tính
MapHandler là một đối tượng được sử dụng thông qua lớp để xử lý các phương thức khác nhau GoogleMap cũng là một đối tượng, được sử dụng thông qua lớp, phục vụ cho nhiều phương thức khác nhau.
Phương thức findShortestWay(LatLng origin, LatLng dest)
Bằng cách cho phép người lập trình nhập kinh độ và vĩ độ của điểm bắt đầu và điểm kết thúc, chúng ta có thể dễ dàng vẽ đường đi giữa hai điểm trên Google Map.
Phương thức List parse()
Bằng cách tải tệp tin JSON từ Google Map, chúng ta có thể phân tích dữ liệu JSON để trích xuất một chuỗi các điểm từ điểm bắt đầu đến điểm kết thúc Sau khi có chuỗi điểm này, chúng ta có thể sử dụng nó để vẽ đường đi trên bản đồ.
Phương thức ListdecodePoly(String encoded)
Mô tả phương thức Bằng cách lấy dữ liệu đã được phân tích từ tệp tin JSON tải từ Google Map, ta giải mã dữ liệu
Phương thức servicesConnected(Activity activity)
Mô tả phương thức Kiểm tra Google Play Service có được cài đặt hay chưa và phiên bản của nó có thích hợp hay không
Phương thức drawMarker(LatLng point,ArrayList markerPoints,GoogleMap map , BitmapDescriptor color)
Bằng cách cho phép người lập trình nhập dữ liệu về tọa độ và thông tin cần thiết, chúng ta có thể vẽ điểm trên bản đồ một cách chính xác.
Phương thức getDistance(LatLng firstPoint, LatLng secondPoint)
Bằng cách nhập tọa độ của hai điểm bất kỳ, người dùng có thể tính toán khoảng cách giữa chúng từ tệp tin JSON tải về từ Google Map và hiển thị kết quả trên bản đồ.
Phương thức getLocationOfNecessaryPlace(Activity activity,String nameOfPlace)
Mô tả phương thức Bằng cách nhập vào tên của địa điểm muốn biết vị trí, ta có thể vẽ được địa điểm đó trên Google Map
Phương thức doInBackground(String url)
Mô tả phương thức Tải dữ liệu bằng thread
Phương thức onPostExecute(String result)
Mô tả phương thức Sử dụng thread có UI sau đó thực hiện trong phương thức doInBackground()
Phương thức List doInBackground()
Mô tả phương thức Phân tích dữ liệu từ thread không có giao diện
Phương thức onPostExecute(List result)
Mô tả phương thức Thực hiện trong thread có UI sau đó thì phân tích ra quá trình
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
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
Thuộc tính Mô tả thuộc tính
URL và xml là các thuộc tính được sử dụng thông qua lớp cho các phương thức khác nhau trong httpClient.
DefaultHttpClient là một đối tượng được sử dụng để thực hiện các phương thức HTTP khác nhau HttpPost là một đối tượng thuộc lớp HttpPost, cho phép gửi dữ liệu qua phương thức POST HttpResponse là đối tượng trả về kết quả sau khi thực hiện các yêu cầu HTTP.
HttpResponse là đối tượng được sử dụng thông qua lớp cho các phương thức khác nhau, trong khi HttpEntity cũng là một đối tượng tương tự phục vụ cho các phương thức khác.
Document Đây là một đối tượng của Document được sử dụng thông qua lớp cho các phương thức khác nhau
Phương thức getXMLfromURL(String URL)
Mô tả phương thức Bằng cách nhập vào đường dẫn đến máy chủ có lưu dữ liệu mà người dùng cần
Mô tả postXMLtoURL(String URL, String filePath, String xml)
Mô tả phương thức Đưa nội dung của tệp tin XML lên máy chủ theo đường dẫn
Phương thức getDomDocument(String URL)
Mô tả phương thức Lấy phẩn tử DOM từ XML
Phương thức getValue(Element item, String str)
Mô tả phương thức Lấy giá trị của từng phần tử trong NodeList
Phương thức getFileContent(File file)
Mô tả phương thức Lấy nội dung từ tệp XML trong đường dẫn được truyền
Thuộc tính InputStream là một đối tượng được sử dụng thông qua lớp cho các phương thức khác nhau JSONObject là một thuộc tính quan trọng, cũng được sử dụng qua lớp cho các phương thức khác nhau Cuối cùng, thuộc tính json, dạng chuỗi, cũng được sử dụng thông qua lớp cho các phương thức khác nhau.
Phương thức makeHttpRequest(String url, String method,
Mô tả phương thức Lấy tệp JSON từ máy chủ bằng cách truyền vào phương thức, đường dẫn hay params
Method objectJSON(InputStream is,JSONObject jObj)
Method Description Lấy đối tượng JSON từ đường dẫn
Phương thức stringJSON(InputStream is,JSONObject jObj)
Mô tả phương thức Lấy đối tượng JSON từ đường dẫn
Phương thức displayImage(Context context, String url, int loader,ImageView imageView)
Mô tả phương thức Tải ảnh từ đường dẫn của máy chủ
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
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
Trong bài viết này, chúng ta sẽ khám phá các thuộc tính quan trọng trong lớp thông báo Thuộc tính "title" (String) được sử dụng để mô tả tiêu đề của thông báo, trong khi "info" (String) mô tả nội dung của thông báo Thuộc tính "eventTime" (long) thể hiện thời gian diễn ra sự kiện, và "startTime" (long) thể hiện thời gian hiển thị thông báo Để xác định vị trí người dùng, chúng ta có "latitude" (double) và "longitude" (double) Thuộc tính "method" (Boolean) chỉ định phương thức tương tác với server, với giá trị true cho phương thức POST và false cho phương thức GET Cuối cùng, "url" (String) cung cấp đường dẫn đến server.
NotificationContent Đây là một thuộc tính được sử dụng thông qua lớp cho các phương thức để thể hiện thông tin muốn được thông báo
Phương thức setNotification(context, nNotificationContext)
Mô tả phương thức Thiết lập thông báo từ đối tượng NotificationContent bao gồm thời gian, nội dung và tiêu đề của thông báo, biểu tượng
Phương thức getListNotification(String url,boolean method)
Mô tả phương thức Lấy danh sách NotificationContent từ server
2.4.4 Quản lý các kết nối mạng Internet của người dùng
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
Mô tả phương thức Trả về giá trị true nếu có mạng và ngược lại
Phương thức setMobileDataEnabledMethod(Context context, boolean check)
Mô tả phương thức Giúp thiết bị bật hay tắt 3G một cách tự động
Phương thức turnOnOffWifi(Context context, WifiManager wifimanager, boolean check)
Mô tả phương thức Giúp thiết bị bật hay tắt WiFi một cách tự động
Phương thức turnOnOffGPS(Context context, boolean check)
Mô tả phương thức Giúp thiết bị bật hay tắt GPS một cách tự động
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
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
Phương thức sendNotification(Context context, String number, String message)
Mô tả phương thức Gửi thông báo bằng tin nhắn SMS(Giống như gửi tin nhắn
SMS giả), ta có thể thiết lập thời gian, nội dung cho thông báo
Phương thức setSound(Uri uri, Activity activity)
Mô tả phương thức Phát nhạc chuông từ đường dẫn
Phương thức setVibrate(Context context)
Mô tả phương thức Thiết lập chế độ rung mặc định
Phương thức toggleFlashLight(Camera mCamera, Parameters mParams, boolean on)
Mô tả phương thức Điều chỉnh trạng thái của đèn flash
Phương thức turnOn(Camera mCamera, Parameters mParams, boolean on)
Mô tả phương thức Bật chế độ đèn flash
Phương thức turnOff(Camera mCamera, Parameters mParams, boolean on)
Mô tả phương thức Tắt chế độ đèn flash
Thuộc tính Mô tả thuộc tính
NotificationCount: int Đây là thuộc tính được sử dụng thông qua lớp cho các phương thức để lưu ID cho mỗi thông báo hiển thị alarmManager:
AlarmManager Đây là một đối tượng của AlarmManager được sử dụng thông qua lớp cho các phương thức
Phương thức checkTime(String timeRemind)
Mô tả phương thức Check time that user choose is right or wrong
Phương thức setAlarm(Context context, String title, String content, int actionID)
Phương thức Tạo đối tượng SimpleDateFormat được sử dụng để xác nhận định dạng của dữ liệu ngày nhập vào và ngày trả về Phương thức này cũng trả về đối tượng PendingIntent, giúp thiết lập báo thức một cách hiệu quả.
Phương thức remindDefaultAlarm(Context context, String title, String content, long when)
Mô tả phương thức Thiết lập báo thức để gửi thông báo đúng giờ
Phương thức setTime(String day)
Mô tả phương thức Lấy giá trị thời gian từ chuỗi ngày được nhập vào để trả về kiểu long
Phương thức setTime(Context context, int mDay, int mMonth, int mYear,int mHour, int mMinute)
Mô tả phương thức Trả về giá trị thời gian với kiểu long
Phương thức setFormatTime(String day)
Mô tả phương thức Trả về giá trị thời gian với kiểu long
Phương thức setFormatTime(String day)
Mô tả phương thức Trả về giá trị thời gian với kiểu long
Phương thức repeatExactAlarm(Context context, String title, String content, long when, int repeatMinute)
Mô tả phương thức Thiết lập báo thức để gửi thông báo lặp lại nhiều lần cho đến khi người dùng hủy nó
Phương thức repeatInexactAlarm(Context context, String title, String content, long when, int repeatMinute)
Mô tả phương thức Thiết lập báo thức để gửi thông báo lặp lại nhiều lần với độ
2.4.6 Hỗ trợ xây dựng phòng chat
Thuộc tính Mô tả thuộc tính
NotificationCount: int Đây là thuộc tính được sử dụng thông qua lớp cho các phương thức để mô tả ID cho mỗi thông báo alarmManager:
AlarmManager Đây là đối tương của AlarmManager được sử dụng thông qua lớp cho các phương thức để thiết lập báo thức
Phương thức connectServer(String ursl, String username, String appID)
Mô tả phương thức Kết nối đến máy chủ của thư viện
Phương thức sendMessage(String data)
Mô tả phương thức Gửi tin nhắn tới những người dùng khác bằng cách sử dụng máy chủ riêng của thư viện
Phương thức createRoom(String data)
Mô tả phương thức Tạo phòng chat trên máy chủ
Phương thức leaveRoom(String data)
Mô tả phương thức Rời khỏi phòng chat trên máy chủ
Phương thức removeRoom(String data)
Mô tả phương thức Xóa phòng khỏi máy chủ
Mô tả phương thức Ngắt kết nối với máy chủ
Phương thức sendMessageWhisper(String data)
Mô tả phương thức Gửi tin nhắn whisper cho những người dùng khác
Phương thức joinRoom(String data)
Mô tả phương thức Tham gia phòng trên máy chủ
Phương thức onMessage(String data)
Mô tả phương thức Gửi hay nhận tin nhắn cho những người dùng khác
Phương thức onMessageWhisper(String data)
Mô tả phương thức Gửi hay nhận whisper tin nhắn cho người dùng khác
Mô tả phương thức Gửi whisper tin nhắn cho người dúng khác
Phương thức hasUserOnline(String data)
Mô tả phương thức Kiêm tra trạng thái của những người dùng đang online trên hệ thống
Phương thức getRoomID(String data)
Mô tả phương thức Lấy ID của phòng chat muốn tham gia từ máy chủ
Phương thức errorMessage(String data)
Mô tả phương thức Hiển thị tất cả lỗi khi người dùng kết nối tới máy chủ
Mô tả phương thức Gửi whisper tin nhắn cho người dùng khác
Phương thức hasUserOnline(String data)
Mô tả phương thức Kiêm tra trạng thái của những người dùng đang online trên hệ thống
Phương thức socket.on('Client connect to server', function(Key, userName)
Mô tả phương thức Kết nối với máy chủ
Phương thức hasUserOffline(String data)
Mô tả phương thức Kiểm tra trạng thái của những người dùng offline trên hệ thống
Phương thức getRoomID(String data)
Mô tả phương thức Lấy ID của phòng chat muốn tham gia từ máy chủ
Phương thức socket.on("Message client to server",function(data))
Mô tả phương thức Kết nối người dùng với máy chủ
Phương thức socket.on('disconnect' ,function(data)
Mô tả phương thức Ngắt kết nối với máy chủ
Hình 14 – Biểu đồ lớp quản lý tài khoản
Phương thức createAccount(String Url,String id,String name,String password,String TAG_SUCCESS,JSONParser jsonParse)
Mô tả phương thức Cho phép tạo thêm tài khoản mới trong cơ sở dữ liệu với giá trị bao gồm name, id, password
Phương thức readAccount(String Url,String id,String
TAG_ID,JSONParser jsonParse,String TAG_SUCCESS, String TAG_USER,String TAG_NAME,String
TAG_PASS,String str1,String str2)
Mô tả phương thức Get information of a row in database with values such as name, password by id was input
Phương thức deleteAccount(String Url,String id,String
TAG_ID,JSONParser jsonParse,String TAG_SUCCESS)
Mô tả phương thức Cho phép xóa bỏ thông tin của tài khoản trong cơ sở dữ liệu của hệ thống
Phương thức editAccount(String Url,String id,String name,String pass,String TAG_ID,String TAG_NAME,String TAG_PASSWORD, JSONParser jsonParse,String TAG_SUCCESS)
Mô tả phương thức Cho phép chỉnh sửa thông tin của tài khoản nhất định với thông tin về name và password
Dự kiến kết quả đạt được
Xây dựng một thư viện giúp người dùng dễ dàng truyền và nhận dữ liệu từ các máy chủ khác nhau của ứng dụng trên smartphone.
Xây dựng thư viện nhằm hỗ trợ bốn ứng dụng chính: quản lý tour, quản lý lớp học, quản lý cuộc họp và cung cấp thông tin về sự cố Các ứng dụng này sẽ được tích hợp với các chức năng đa dạng để nâng cao hiệu quả quản lý và đáp ứng nhu cầu người dùng.
Quản lý các chức năng liên quan đến GPS
STT Chức năng Ghi chú
1 Tìm vị trí của người dung
2 Tìm vị trí của nhiều địa điểm mà người dùng muốn biết
3 Tìm vị trí của những người dùng gần nhất
4 Tìm đường đi giữa hai điểm
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
STT Chức năng Ghi chú
1 Các yêu cầu bằng tệp tin XML
2 Các yêu cầu bằng tệp tin JSON
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
STT Chức năng Ghi chú
1 Thông báo về thời gian
2 Thông báo về vị trí
3 Thông báo về thiên tai
Quản lý các kết nối mạng Internet của người dùng
STT Chức năng Ghi chú
Quản lý các tin nhắn nhắc nhở từ máy chủ của các ứng dụng
STT Chức năng Ghi chú
1 Nhắc nhở bằng cách thiết lập âm thanh
2 Nhắc nhở bằng cách thiết lập độ rung
3 Nhắc nhở bằng cách thiết lập đèn flash
4 Nhắc nhở bằng cách hiển thị thông báo trên thanh trạng thái của Smartphone
STT Chức năng Ghi chú
2 Chỉnh sửa thông tin của tài khoản
3 Xóa thông tin của một tài khoản
4 Xem thông tin của tài khoản
5 Xác nhận thông tin của tài khoản
6 Phân quyền cho tài khoản
Hỗ trợ xây dựng phòng chat
STT Chức năng Ghi chú
6 Gửi tin nhắn bí mật
7 Lấy danh sách những người dùng online
8 Lấy tên của người dùng offine
9 Lấy tên của người dùng online
10 Lấy những tin nhắn lỗi
Xây dựng ứng dụng trên Android cho người dùng sử dụng với các chức năng trong bảng sau:
STT Chức năng Ghi chú
1 Quản lý các chức năng liên quan đến bản đồ
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
3 Quản lý các kết nối mạng Internet của người dung
4 Quản lý các tin nhắn nhắc nhở từ máy chủ của các ứng dụng
6 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
7 Hỗ trợ xây dựng phòng chat
Bảng 2 – Danh sách các chức năng
Triển khai chương trình
Người dùng có thể sử dụng Google Map để xác định vị trí của bản thân hoặc tìm đường đến địa điểm mong muốn.
Hình 17 – Hiển thị vị trí của người dùng
Người dùng có thể sử dụng chức năng tìm đường trong thư viện, cho phép họ lựa chọn giữa đường bộ và đường xe chạy Chương trình sẽ tự động vẽ lộ trình giữa hai điểm đã chọn.
Hình 18 – Vẽ đường đi giữa hai vị trí
Người dùng có thể theo dõi vị trí của những người dùng khác trong ứng dụng thông qua nhiều loại bản đồ khác nhau Tùy thuộc vào quyền truy cập đã được cấp cho từng người dùng, thông tin hiển thị trên bản đồ sẽ khác nhau.
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
Hình 20 – Hiển thị các vị trí gần nhất so với một địa điểm
Người dùng có thể thiết lập chức năng Reminder để nhận thông báo theo thời gian mong muốn, với các tùy chọn nhắc nhở đa dạng như đèn flash, độ rung, âm thanh hoặc gửi tin nhắn.
Hình 21 – Nhắc nhở bằng đèn Flash hay đèn nhấp nháy
Để sử dụng chức năng hỗ trợ xây dựng phòng chat, người dùng cần cung cấp một ID chung nhằm tham gia vào các cuộc trò chuyện và thảo luận.
Hình 23 – Giao diện đăng nhập để chat
Hình 24 – Giao diện tạo phòng chat
KẾT LUẬN a Đánh giá kết quả
Sử dụng nền tảng Android, người dùng có thể tận dụng thư viện hỗ trợ lập trình, từ đó giúp việc xây dựng mã code trong các ứng dụng trở nên hệ thống và hiệu quả hơn.
Ứng dụng đã được phát triển thành công nhờ vào việc sử dụng các công nghệ tiên tiến như XML, JSON, GPS, GOOGLE MAP API, NODEJS và SOCKET.IO, mang lại nhiều ưu điểm nổi bật.
Các chức năng được xây dựng dễ sử dụng, hỗ trợ linh hoạt cho người lập trình
Các chức năng cơ bản đã hoàn thiện
Chưa mở rộng các chức năng b Hướng phát triển
Phiên bản đầu tiên của ứng dụng đã hoàn thiện với các chức năng cơ bản cần thiết Nếu có cơ hội tiếp tục phát triển, tôi có những ý tưởng mở rộng cho ứng dụng này.
Thêm một số chức năng liên quan đến GPS
Xây dựng trên Window Phone