Những năm gần đây, mạng xã hội và dịch vụ hướng địa điểm (Location Based Services) là những xu hướng phát triển mạnh mẽ trong ngành công nghệ thông tin và truyền thông. Sự kết hợp của hai xu hướng này tạo nên mạng địa xã hội (Geo – social network), mạng xã hội được dự đoán là mạng xã hội phát triển trong tương lai gần. Ứng dụng client trên điện thoại thông minh (smartphone) là ưu tiên hàng đầu của các nhà phát triển mạng xã hội loại này. Trong số những nền tảng di động hiện nay, Android được đánh giá cao ở tính mở, tính ổn định, kho ứng dụng miễn phí phong phú và số lượng người sử dụng tăng nhanh. Dưới sự hướng dẫn của thầy tiến sĩ Nguyễn Khanh Văn, đồ án dự định phát triển ứng dụng client trên Android cho mạng địa xã hội Foloyu. Một trong những khó khăn khi xây dựng và phát triển ứng dụng trên nền Android là thiết kế giao diện tương tác người dùng và định vị người dùng. Giao diện của ứng dụng trên client Android có những đặc thù riêng, đòi hỏi người phát triển phải tùy biến những chức năng mà server cung cấp sao cho vừa đủ thông tin cho người dùng, vừa đảm bảo tính đơn giản, thuận tiện, dễ sử dụng. Hơn nữa, hiện nay các dịch vụ định vị sử dụng GPS và CellID đang cho thấy nhiều bất cập như độ chính xác, tiêu tốn pin, thời gian đáp ứng chậm. Chính vì vậy, khi tham gia phát triển dự án Foloyu, em đã chọn phát triển một giải pháp định vị cho riêng Foloyu sử dụng sóng wifi để giải quyết những khó khăn mà GPS và CellID chưa làm được. Đồ án sẽ tập trung vào các công nghệ lập trình trên nền Android và ứng dụng những hiểu biết này vào việc thiết kế, tùy chọn những chức năng phù hợp cho client Android của mạng địa xã hội Foloyu. Một phần quan trọng khác của đồ án là các mô hình, thuật toán định vị dựa trên sóng wifi. Từ đó, đồ án xây dựng một giải pháp thực tiễn cho định vị trong mạng địa xã hội Foloyu. Từ khóa: Geo social network, Cell ID, wifi signal based localization, Location based services.
Trang 1VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
Sinh viên thực hiện : Vũ Văn Minh
Lớp CNPM – K51
Giáo viên hướng dẫn: TS Nguyễn Khanh Văn
HÀ NỘI 5-2011
Trang 2PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1 Thông tin về sinh viên
Họ và tên sinh viên: Vũ Văn Minh
Đồ án tốt nghiệp được thực hiện tại: Bộ môn Công nghệ phần mềm, Viện CNTT &Truyền thông – Đại học Bách Khoa Hà Nội
Thời gian làm ĐATN: Từ ngày 21/02 /2011 đến 27 / 05 /2011
2 Mục đích nội dung của ĐATN
Tìm hiểu, nghiên cứu các vấn đề lý thuyết về định vị và ứng dụng mạng địa xã hộitrên điện thoại Android Phân tích, đánh giá hiệu quả của các thuật toán định vị qua đó lựachọn một giải pháp hiệu quả để cài đặt trên một mạng địa xã hội cụ thể Tìm hiểu lập trìnhcho điện thoại di động Android qua đó cài đặt ứng dụng client cho mạng địa xã hội
3 Các nhiệm vụ cụ thể của ĐATN
wifi signal based
MAC
phù hợp
(HCI) trên điện thoại di động Android
4 Lời cam đoan của sinh viên:
Tôi – Vũ Văn Minh - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới
sự hướng dẫn của TS Nguyễn Khanh Văn
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất
Hà Nội, ngày … tháng … năm 2011
Giáo viên hướng dẫn
TS Nguyễn Khanh Văn
Trang 3TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Những năm gần đây, mạng xã hội và dịch vụ hướng địa điểm (LocationBased Services) là những xu hướng phát triển mạnh mẽ trong ngành công nghệthông tin và truyền thông Sự kết hợp của hai xu hướng này tạo nên mạng địa xã hội(Geo – social network), mạng xã hội được dự đoán là mạng xã hội phát triển trongtương lai gần Ứng dụng client trên điện thoại thông minh (smartphone) là ưu tiênhàng đầu của các nhà phát triển mạng xã hội loại này Trong số những nền tảng diđộng hiện nay, Android được đánh giá cao ở tính mở, tính ổn định, kho ứng dụngmiễn phí phong phú và số lượng người sử dụng tăng nhanh Dưới sự hướng dẫn củathầy tiến sĩ Nguyễn Khanh Văn, đồ án dự định phát triển ứng dụng client trênAndroid cho mạng địa xã hội Foloyu
Một trong những khó khăn khi xây dựng và phát triển ứng dụng trên nềnAndroid là thiết kế giao diện tương tác người dùng và định vị người dùng Giaodiện của ứng dụng trên client Android có những đặc thù riêng, đòi hỏi người pháttriển phải tùy biến những chức năng mà server cung cấp sao cho vừa đủ thông tincho người dùng, vừa đảm bảo tính đơn giản, thuận tiện, dễ sử dụng Hơn nữa, hiệnnay các dịch vụ định vị sử dụng GPS và CellID đang cho thấy nhiều bất cập như độchính xác, tiêu tốn pin, thời gian đáp ứng chậm Chính vì vậy, khi tham gia pháttriển dự án Foloyu, em đã chọn phát triển một giải pháp định vị cho riêng Foloyu sửdụng sóng wifi để giải quyết những khó khăn mà GPS và CellID chưa làm được
Đồ án sẽ tập trung vào các công nghệ lập trình trên nền Android và ứng dụngnhững hiểu biết này vào việc thiết kế, tùy chọn những chức năng phù hợp cho clientAndroid của mạng địa xã hội Foloyu Một phần quan trọng khác của đồ án là các
mô hình, thuật toán định vị dựa trên sóng wifi Từ đó, đồ án xây dựng một giải phápthực tiễn cho định vị trong mạng địa xã hội Foloyu
Từ khóa: Geo social network, Cell ID, wifi signal based localization, Location based services.
Trang 4ABSTRACT OF THESIS
For the last years, social network sites and location based services have stronglydeveloped in fields of information technology and multi media The combination ofthese two trend leads to geo social network Application on client smartphone elsewill attract most attention from social developers Therefore, within this thesis, Imention development of social network mapping on Android platform – the mobileplatform with dramatic development for the last 2 years
During application establishment and development on Android platform, one of themost difficulties is user interface and localization User interface of application onClient Android has typical features; requiring developers to customize functionssupplied by server, in order to provide users enough information, at the same timeensure simplicity, convenience and easiness Moreover, current localizationtechnique based on GPS and CellID is revealing problems such as exactitude,batteries consumption, and low process As a result, participating into Foloyuproject, I develop a location solution for Foloyu using wireless to solve problems ofGPS and CellID
In my thesis, I demonstrate programming technology on Android platform andapply it into design, customize suitable fuctions for Android of Foloyu socialnetwork mapping; at the same time, I also describe model, location algorithmsbased on wireless for Android
Keyword: Geo social network, Cell ID, wifi signal based localization, Location based services.
Trang 5LỜI CẢM ƠN
Trước tiên em xin gửi lời cảm ơn chân thành sâu sắc đến các thầy cô giáo trong trường đại học Bách Khoa Hà nội nói chung và các thầy cô giáo trong viện công nghệ thông tin và truyền thông, bộ môn công nghệ phần mềm nói riêng đã tận tình giảng dạy, truyền đạt cho em những kiến thức, kinh nghiệm quý báu trong suốt thời gian qua
Đặc biệt em xin gửi lời cảm ơn đến thầy TS Nguyễn Khanh Văn, thầy
đã tận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt gần 1 năm chuẩn bị và làm đồ án tốt nghiệp Trong thời gian làm việc với thầy,
em không những tiếp thu thêm nhiều kiến thức bổ ích mà còn học hỏi được
nhiều kinh nghiệm thực tiễn khi tham gia dự án Foloyu, đây là những điều rất
cần thiết cho em trong quá trình học tập và công tác sau này
Em xin gửi lời cảm ơn tới thầy Trịnh Tuấn Đạt và các bạn trong nhóm
làm dự án Foloyu đã giúp đỡ em rất nhiều trong suốt thời gian vừa qua.
Và cuối cùng xin gửi lời cảm ơn tới gia đình, bạn bè đã động viên, giúp
đỡ trong suốt năm năm học đại học
Hà Nội, ngày 27 tháng 5 năm 2011
Sinh viên : Vũ Văn Minh
Đặc biệt em xin gửi lời cảm ơn đến thầy TS Nguyễn Khanh Văn, thầy
đã tận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt gần 1 năm chuẩn bị và làm đồ án tốt nghiệp Trong thời gian làm việc với thầy,
em không những tiếp thu thêm nhiều kiến thức bổ ích mà còn học hỏi được
nhiều kinh nghiệm thực tiễn khi tham gia dự án Foloyu, đây là những điều rất
cần thiết cho em trong quá trình học tập và công tác sau này
Em xin gửi lời cảm ơn tới thầy Trịnh Tuấn Đạt và các bạn trong nhóm
làm dự án Foloyu đã giúp đỡ em rất nhiều trong suốt thời gian vừa qua.
Và cuối cùng xin gửi lời cảm ơn tới gia đình, bạn bè đã động viên, giúp
đỡ trong suốt năm năm học đại học
Hà Nội, ngày 27 tháng 5 năm 2011
Trang 6MỤC LỤC
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP 3
ABSTRACT OF THESIS 4
LỜI CẢM ƠN 5
MỤC LỤC 6
DANH MỤC CÁC HÌNH VẼ 9
DANH MỤC CÁC BẢNG 11
DANH MỤC TỪ VIẾT TẮT VÀ THUẬT NGỮ 13
PHẦN MỞ ĐẦU 14
PHẦN I: GIỚI THIỆU VẤN ĐỀ VÀ ĐỊNH HƯỚNG GIẢI PHÁP 16
CHƯƠNG 1: BÀI TOÁN MẠNG ĐỊA XÃ HỘI 16
1.1 Mạng xã hội là gì? 17
1.1.1 Khái niệm mạng xã hội 17
1.1.2 Nguyên nhân thành công của mạng xã hội 17
1.1.3 Một số khái niệm trong mạng xã hội 18
1.2 Mạng địa xã hội (geo – social network) 18
1.3 Mạng địa xã hội Foloyu 19
1.3.1 Mục tiêu của hệ thống 19
1.3.2 Yêu cầu hệ thống 21
1.3.3 Mô hình triển khai hệ thống FOLOYU 21
CHƯƠNG 2: NHIỆM VỤ ĐỒ ÁN VÀ ĐỊNH HƯỚNG GIẢI PHÁP 23
2.1 Ứng dụng trên Android của mạng địa xã hội Foloyu 23
2.2 Module định vị cho mạng địa xã hội 24
2.3 Cơ sở lý thuyết về định vị và công nghệ lập trình Android 25
2.3.1 Công nghệ lập trình trên Android 25
2.3.2 Công nghệ định vị 27
2.4 Kết chương 32
PHẦN II: XÂY DỰNG ỨNG DỤNG ANDROID CHO FOLOYU VÀ TRIỂN KHAI MODULE ĐỊNH VỊ 33
Trang 73.1 Phân tích yêu cầu 34
3.1.1 Yêu cầu chức năng 34
3.1.2 Yêu cầu giao diện và sử dụng 34
3.1.3 Yêu cầu về hiệu năng 34
3.1.4 Phân tích use case 35
3.1.5 Biểu đồ hoạt động 40
3.1.6 Biểu đồ tuần tự 41
3.1.7 Biểu đồ trạng thái 41
3.2 Thiết kế chương trình 42
3.2.1 Mô hình chung 42
3.2.2 Thiết kế thành phần giao tiếp với server 43
3.2.3 Thành phần parse XML 46
3.2.4 Thiết kế giao diện ứng dụng 48
3.3 Application flow 54
3.4 Cài đặt và triển khai ứng dụng 56
3.4.1 Cài đặt 56
3.4.2 Đánh giá và định hướng phát triển 57
CHƯƠNG 4: GIẢI PHÁP THỰC TIỄN CHO ĐỊNH VỊ TRONG MẠNG ĐỊA XÃ HỘI FOLOYU 58
4.1 Định vị trên thiết bị chạy hệ điều hành Android 58
4.2 Mô hình định vị bằng sóng wifi cho Foloyu 61
4.2.1 Mô hình chung và giao thức client-server 61
4.2.2 Thiết kế cơ sở dữ liệu sampling 63
4.2.3 Thiết kế thuật toán matching 63
4.3 Chương trình lấy mẫu WifiScanner 67
4.3.1 Thiết kế chương trình 67
4.3.2 Chương trình client WifiScanner 68
4.4 Server nhận dữ liệu sampling 71
4.5 Cài đặt và triển khai ứng dụng lấy mẫu 72
4.6 Đánh giá kết quả đạt được và khả năng mở rộng 73
Trang 8KẾT LUẬN 74
TÀI LIỆU THAM KHẢO 76
PHỤ LỤC A: CÁC ĐẶC TẢ USE CASE 77
PHỤ LỤC B: HỆ ĐIỀU HÀNH ANDROID 93
Trang 9DANH MỤC CÁC HÌNH VẼ
Hình 1-1: Mô hình hệ thống Foloyu 22
Hình 2-1: Kiến trúc hệ điều hành Android 26
Hình 2-2: Định vị bằng GPS 28
Hình 2-3: Phân bố các Cell trong mạng di động GSM 29
Hình 2-4: Định vị bằng Cell ID 30
Hình 2-5: Mô hình định vị bằng Cell ID 31
Hình 2-6: Định vị bằng sóng wifi 32
Hình 3-1: Use case tổng quát 35
Hình 3-2: Use case Profile 36
Hình 3-3: Use case Location 37
Hình 3-4: Use case localization 38
Hình 3-5: Use case view location 39
Hình 3-6: Biểu đồ hoạt động 40
Hình 3-7: Biểu đồ tuần tự 41
Hình 3-8: Biểu đồ trạng thái 41
Hình 3-9: Các thành phần và cơ chế giao tiếp của ứng dụng client Android 42
Hình 3-10: Mô hình lập trình kết nối Internet trong Android 44
Hình 3-11: Sơ đồ lớp thành phần Parse XML 47
Hình 3-12: Mô hình lập trình giao diện trong Android 49
Hình 3-13: Thư mục định nghĩa giao diện của ứng dụng 50
Hình 3-14: Form Login 50
Hình 3-15: Form Đăng Ký 51
Hình 3-16: Tìm kiếm bạn bè 52
Hình 3-17: Các địa điểm nổi bật 52
Hình 3-18:Thông tin địa điểm 52
Hình 3-19: Form checkin 52
Hình 3-20: thông tin user 53
Trang 10Hình 3-22: Chỉ đường trên Gmaps 53
Hình 3-23: tìm kiếm địa điểm 53
Hình 3-24: Kết quả tìm kiếm 54
Hình 3-25: Các hot category 54
Hình 3-26: Foloyu’s Application Flow 55
Hình 4-1: Mô hình định vị trên Android 59
Hình 4-2: Mô hình định vị bằng wifi signal 61
Hình 4-3: Cơ sở dữ liệu sampling 63
Hình 4-4: Client side matching Algorithm 64
Hình 4-5: Mô hình lấy mẫu dữ liệu 68
Hình 4-6: Wifi Scan Receiver 70
Hình 4-7: DB trên Android Client 71
Hình 4-8: Màn hình nhập dữ liệu 71
Hình 4-9: Mô hình triển khai server sampling 72
Hình 4-10: Hình ản demo của ứng dụng lấy mẫu 73
Hình 0-1: Use case Manag Account 77
Hình 0-2: Use case manage Privacy Setting 80
Hình 0-3: Use case manage private infor 82
Hình 0-4: Use case Manage Friend 83
Hình 0-5: Use case view location 87
Hình 0-6: Use case social network function of a location 91
Trang 11DANH MỤC CÁC BẢNG
Bảng 4-1: Giao diện dữ liệu client – server của module định vị 62
Bảng 4-2: Dữ liệu lấy mẫu 66
Bảng 4-3: Shared Preference trong ứng dụng lấy mẫu 69
Bảng 0-1: Đặc tả use case quản lý người dùng 78
Bảng 0-2: Đặc tả use case đăng nhập 78
Bảng 0-3: Đặc tả use case đăng xuất 78
Bảng 0-4: Đặc tả use case thay đổi mật khẩu 79
Bảng 0-5: Đặc tả use case phục hồi mật khẩu 79
Bảng 0-6: Đặc tả use case vô hiệu hóa tài khoản người dùng 80
Bảng 0-7: use case quản lý chính sách riêng tư 81
Bảng 0-8: Đặc tả use case thiết lập thông tin cá nhân 82
Bảng 0-9: Đặc tả use case quản lý thông tin cá nhân 82
Bảng 0-10: Đặc tả use case chỉnh sửa thông tin cá nhân 83
Bảng 0-11: Đặc tả use case gửi yêu cầu kết bạn 84
Bảng 0-12: Đặc tả use case xem yêu cầu kết bạn 84
Bảng 0-13: Đặc tả use case trả lời chức năng kết bạn 85
Bảng 0-14: Đặc tả use case xem danh sách bạn bè 85
Bảng 0-15: Đặc tả use case tìm kiếm bạn bè 85
Bảng 0-16: Đặc tả use case xóa bạn bè 86
Bảng 0-17: Đặc tả use case tìm kiếm người dùng 86
Bảng 0-18: Đặc tả use case xem thông tin địa điểm 88
Bảng 0-19: Đặc tả use case xem danh sách địa điểm mới nhất 88
Bảng 0-20: Đặc tả use case xem danh sách địa điểm yêu thích 88
Bảng 0-21: Đặc tả use case xem danh sách hot location category 89
Bảng 0-22: Đặc tả use case xem thông tin chi tiết địa điểm 89
Bảng 0-23: Đặc tả use case tự động định vị 90
Bảng 0-24: Đặc tả use case định vị bằng tay 90
Bảng 0-25: Đặc tả use case thông báo check in 92
Trang 12Bảng 0-27: Đặc tả use case Rate 92
Trang 13DANH MỤC TỪ VIẾT TẮT VÀ THUẬT NGỮ
STT Từ viết tắt
/thuật ngữ
Mô tả
1 3G Third Generation – Mạng di động thế hệ thứ 3
2 GSM Global System for Mobile Communications - Hệ
thống thông tin di động toàn cầu
3 CDMA Code Division Multiple Access - Phương thức đa
truy cập phân chia theo mã
4 GPS Global Positioning System – Hệ thống định vị toàn
cầu
5 KML KeyHold Markup Language – Định dạng dữ liệu
mô tả vị trí, chỉ đường thường dùng trong Gmaps
6 OS Operating System – Hệ điều hành
7 SDK Software Development Toolkit, bộ các công cụ hỗ
trợ lập trình
8 DVM Dalvik Virtual Machine, máy ảo Java của Android
9 OpenGL ES OpenGL Embedded System, một thư viện đồ họa
dành cho các phần mềm nhúng
10 HTTP Hypertext Tranfer Protocol – Giao thức truyền dữ
liệu siêu văn bản
11 BTS Base Transceiver Station – Trạm thu phát sóng di
14 DB Database – Cơ sở dữ liệu
15 Cell - ID Cell Identification – mã số xác định một khu vực
phủ sóng của cột BTS trong mạng điện thoại di động
Trang 14PHẦN MỞ ĐẦU
Nửa cuối thập niên 2000-2010 chứng kiến sự phát triển mạnh mẽ của mạng
xã hội Nhờ những tính năng ưu việt của mình, các mạng xã hội đang dần thay đổicách thức con người giao tiếp với nhau Chia sẻ thông tin đang dần trở thành mộtnhu cầu rất lớn của người dùng ứng dụng công nghệ thông tin Chính vì vậy, khidịch vụ bản đồ số và công nghệ định vị trở nên phổ biến, người dùng có nhu cầu rấtlớn về chia sẻ thông tin về các nhà hàng, địa điểm, cập nhật các hoạt động củangười dùng ở các địa điểm khác nhau kèm theo video, hình ảnh Một mạng xã hộikhai thác được những nhu cầu này sẽ thu hút được rất nhiều người sử dụng Trongbối cảnh đó, các mạng địa xã hội ra đời như một tất yếu Mạng địa xã hội kết hợpđược khả năng chia sẻ thông tin với các tính năng tìm đường, định vị, chia sẻ vị tríngười dùng Khi người dùng tham gia bất kỳ một hoạt động nào, hệ thống mạng địa
xã hội sẽ tự động cập nhật lại thành các bản tin và phát hành các bản tin này chongười thân, bạn bè của người đó Thật thú vị khi người sử dụng vào một nhà hàng
và để lại những nhận xét về nhà hàng đó cho các bạn bè của mình biết được nhữngthông tin hữu ích Từ đó, nhiều chuyên gia đã dự đoán rằng mạng địa xã hội sẽ trởthành mạng xã hội phát triển mạnh trong tương lai gần
Trong khuôn khổ đồ án tốt nghiệp, em tham gia vào việc cài đặt những ứngdụng của một mạng địa xã hội cụ thể, mạng địa xã hội Foloyu, một mạng địa xã hộiđược hình thành từ ý tưởng của thầy Nguyễn Khanh Văn, được phát triển bởi mộtnhóm sinh viên dưới sự hướng dẫn của thầy Trong khi tham gia phát triển dự ánnày, em đã lựa chọn những nhiệm vụ sau làm hướng phát triển cho đề tài đồ án tốtnghiệp của em:
Nghiên cứu lý thuyết định vị
Xây dựng module định vị cho mạng địa xã hội Foloyu
Nghiên cứu hệ điều hành Android và thiết kế giao diện trên Android
Xây dựng ứng dụng client trên Android cho mạng địa xã hội Foloyu
Môi trường thực hiện đồ án tốt nghiệp: đồ án được thực hiện trong dự ánmạng địa xã hội Foloyu dưới sự hướng dẫn của Tiến sĩ Nguyễn Khanh Văn Đồ ánbao gồm phần mở đầu, nội dung chính, kết luận, và 2 phụ lục:
Phần mở đầu: Giới thiệu tóm tắt nhiệm vụ đề tài, xác định mục tiêu và
phạm vi thực hiện
Phần nội dung: Kết cấu 4 chương chính, trong đó chương 1 và chương 2
thuộc phần 1, đặt vấn đề và định hướng giải pháp Chương 3, chương 4 thuộc phần
Trang 15 Chương – 1 Bài toán mạng địa xã hội: Giới thiệu tổng quan mạng xã hội, qua
đó đưa ra các khái niệm cơ bản trong mạng xã hội Từ đó giới thiệu khái niệm mạng địa xã hội, và bài toán mạng địa xã hội Foloyu
Chương 2 – Nhiệm vụ đồ án và định hướng giải pháp: Nêu ra các yêu cầu về client trên Android và yêu cầu định vị của hệ thống Qua đó nêu ra 2 vấn đề cần giải quyết trong đồ án Giới thiệu kiến trúc hệ điều hành Android và 3 công nghệ định vị phổ biến hiện nay từ đó đưa ra ý tưởng hiện thực hóa các nhiệm vụ đồ án
phân tích và thiết kế chương trình, thiết kế giao diện, các giải pháp lập trình cho ứng dụng Foloyu.
Chương 4 – Giải pháp thực tiễn cho định vị trong mạng địa xã hội Foloyu: Trình bày về mô hình, thuật toán đề xuất cho module định vị Trình bày thiết kế cơ
sở dữ liệu, xây dựng ứng dụng lấy mẫu dữ liệu cho module định vị.
Kết luận: Đánh giá về kết quả thực hiện đồ án, phân tích những thuận lợi,
khó khăn khi thực hiện đồ án, định hướng phát triển đồ án trong tương lai
Phụ Lục: gồm 2 phụ lục, phụ lục A là các đặc tả của các use case, phụ lục B
là mô tả các thư viện lõi trong hệ điều hành Android
Trang 17PHẦN I: GIỚI THIỆU VẤN ĐỀ VÀ ĐỊNH HƯỚNG GIẢI
PHÁP
Phần I trình bày những khái niệm mạng xã hội nói chung và mạng địa xã hội nóiriêng Qua đó, em mong muốn mang đến cho người đọc một cái nhìn khái quát vềmạng địa xã hội Foloyu, mạng địa xã hội đang được phát triển dưới sự hướng dẫncủa thầy TS Nguyễn Khanh Văn Đồ án của em nằm trong khuôn khổ của dự ánphát triển mạng xã hội này Phần một của đồ án hy vọng giúp người đọc hình dungđược vấn đề mà đồ án sẽ giải quyết và định hướng giải pháp của đồ án cho nhữngvấn đề này Bố cục phần I gồm có 2 chương: chương 1 nhằm giới thiệu về bài toánmạng địa xã hội, chương 2 trình bày về vấn đề cụ thể của đồ án trong khuôn khổmạng địa xã hội Foloyu và nêu bật định hướng giải pháp cho những vấn đề này
CHƯƠNG 1: BÀI TOÁN MẠNG ĐỊA XÃ HỘI
Nội của chương này sẽ trình bày các vấn đề sau:
o Giới thiệu chung về mạng xã hội
o Giới thiệu về mạng địa xã hội (Geo – social network)
o Giới thiệu về mạng địa xã hội Foloyu
1.1 Mạng xã hội là gì?
Thời gian qua, chúng ta chứng kiến một làn sóng mới của thế giới mạng xã
hội với nền tảng web 2.0 Không thể không nhắc đến Facebook, đã thống trị ngôi vị
Trang 18số 1 thế giới từ giữa năm 2009, và đến nay vẫn không có dấu hiệu dừng lại Tại ViệtNam, chúng ta có Yahoo Plus, ZingMe, YuMe, những mạng xã hội 100% Việtcũng nhận được rất nhiều sự chú ý, với số lượng người dùng cao Vậy thực chấtmạng xã hội là gì?
1.1.1 Khái niệm mạng xã hội
Mạng xã hội, mạng xã hội ảo, hay chính xác hơn là mạng giao lưu (tiếng
Anh: social network) là dịch vụ nối kết các thành viên cùng sở thích trên Internet lại
với nhau với nhiều mục đích khác nhau không phân biệt không gian và thời gian Mạng xã hội đổi mới hoàn toàn cách thức liên lạc và trao đổi thông tin Mọingười có thể tự do trao đổi ý kiến, bình luận về các hoạt động của người khác, chia
sẻ hình ảnh, video, thông tin cá nhân … Có thể nói, mạng xã hội đã tạo nên mộtcuộc cách mạng trong cách thức giao tiếp của những người thường xuyên sử dụngInternet
1.1.2 Nguyên nhân thành công của mạng xã hội
Các trang web mạng xã hội bắt đầu phát triển mạnh trong vài năm nay Hiện cóhàng nghìn trang web mạng xã hội trên thế giới Các trang web này phát triển vớitốc độ chóng mặt Sự thành công của các trang mạng xã hội khiến người ta gọi đó làđợt bùng nổ dotcom lần thứ hai Các hãng lớn không muốn bỏ qua cơ hội này Dùvẫn luôn ở top đầu về lượng truy cập, Google và Yahoo! cũng phải xây dựng cácmạng xã hội của riêng mình (Google Buzz, Yahoo 360) Sở dĩ mạng xã hội pháttriển mạnh như vậy bởi nó có các ưu điểm sau đây:
Khả năng kết nối mạnh: Mạng xã hội là kết nối Nó nối kết các thành viên
cùng sở thích với nhau không phân biệt không gian và thời gian Ai cũng
có bạn bè, ai cũng cần giao tiếp, trò chuyện cả trong công việc lẫn vui chơigiải trí Mỗi người có hàng trăm mối quan hệ; hàng triệu người dùng sẽ cóhàng tỉ kết nối Khai thác hiệu quả các kết nối này là chìa khóa thành côngcủa mạng xã hội
Tính phổ cập: Mạng xã hội là dành cho tất cả mọi người, không phân biệt.Đối tượng cuả mạng xã hội là hàng tỉ người trên khắp thế giới
Người dùng là trung tâm: Người dùng có thể thỏa sức thể hiện bản thân,lựa chọn những gì mình muốn, tự xây dựng lấy không gian của riêng mình,thậm chí có thể tự tạo ứng dụng, tiện ích để sử dụng hay chia sẻ cho bạnbè
Thể hiện phong phú
Phát triển không ngừng và không ngừng mở rộng
Trang 191.1.3 Một số khái niệm trong mạng xã hội
Như đã trình bày ở trên, sở dĩ mạng xã hội thành công được là nhờ tính cậpnhật thông tin nhanh và liên kết người sử dụng ở khắp mọi nơi trên thế giới vớinhau Một trong những khái niệm trung tâm trong mạng xã hội tạo nên thành côngcủa mạng xã hội là Feed Vậy Feed là gì?
Mỗi người sử dụng mạng xã hội được cung cấp một tài khoản, với tài khoảnnày, người sử dụng có thể kết bạn, tham gia các nhóm hoạt động Đồng thời, mỗi
người sử dụng sẽ có một bảng thông tin gọi là wall (tường), thực chất đây là nơi sẽ
lưu các trạng thái của người dùng (status), các hoạt động gần đây của họ như bìnhluận về status của người khác Bạn bè có thể thoải mái viết các câu cảm thán lêntường của mình, hoặc bình luận về các câu cảm thán của người khác Nếu chỉ dừng
ở mức này, thì mạng xã hội chưa thể đạt được đến tính cập nhật thông tin được Vìchỉ những người tham gia vào hoạt động, mới có thể cập nhật các thông tin được
Chính vì lý do đó, khái niệm Feed ra đời Feed thực chất là hành động cập nhật các
hành động của người dùng cho bạn bè của người đó, qua đó, người sử dụng có thểbiết được hôm qua, hay cách đây vài tiếng đồng hồ bạn bè ta đã làm gì, đã bình luậnhoặc phát biểu những gì Qua đó, khuyến khích người sử dụng tham gia vào nhữnghoạt động đó bằng cách đưa thêm những bình luận mới, hoặc đơn giản hơn là bấmvào nút like
Không dừng lại ở đó, cũng vẫn với mô hình cập nhật thông tin trên, cácmạng xã hội đưa ra nhiều tính năng mới như viết nhật ký (blog), viết ghi chú (note),cập nhật các hình ảnh, video cá nhân, sửa các thông tin profile, v.v… và cũng giốngnhư các hoạt động khác, các hoạt động này đều được cập nhật thành feed
1.2 Mạng địa xã hội (geo – social network)
Như đã trình bày ở trên, mạng xã hội đã phát triển nhanh chóng trong thờigian qua, cung cấp cho người sử dụng các thể hiện phong phú, các tính năng đadạng như blog, note, tweet, hình ảnh, video, …Tuy nhiên một mảng đặc biệt chưađược khai thác nhiều trong các mạng xã hội, đặc biệt là các mạng xã hội ở Việt
Nam chính là mạng xã hội gắn với địa điểm hay mạng địa xã hội (geo – social
network) Trên thế giới, mô hình mạng xã hội dựa trên địa điểm (location basedsocial networking) không mới Ý tưởng về mạng xã hội dựa trên địa điểm manh nhakhi điện thoại thông minh với hệ thống định vị ra đời Ban đầu, hệ thống định vịgiúp người dùng xác định được vị trí của họ và tìm đường trên bản đồ, hiểu nôm na
là tích hợp một bản đồ vào điện thoại di động Nhưng nhu cầu của con người khôngchỉ dừng lại ở đó Với mạng xã hội địa điểm, người dùng sau khi đăng nhập ngoàiviệc tìm kiếm thông tin về địa điểm, có thể tạo ra một mạng kết nối với các người
Trang 20dùng khác thông qua việc họ hiển thị đăng nhập và chia sẻ với nhau các địa điểmmình quan tâm.
Tóm lại, mạng xã hội gắn với địa điểm, lấy địa điểm làm trung tâm các hoạtđộng của người sử dụng, cho phép họ bình luận, khám phá các địa điểm, chia sẻthông tin về địa điểm được gọi là mạng địa xã hội Mạng xã hội này cũng có nhữngtính năng giống như mạng xã hội thông thường, nhưng chú trọng vào mặt địa điểm,mọi hoạt động của người sử dụng sẽ lấy địa điểm làm trung tâm
1.3 Mạng địa xã hội Foloyu
Ở Việt Nam, hầu hết các mạng xã hội lớn đều chưa triển khai các ứng dụnghướng địa điểm Một số mạng xã hội nhỏ hỗ trợ tính năng về xác định, chia sẻ vị trí,nhưng chưa khai thác tối đa mảng này Và hầu như, chưa có ứng dụng nào tích hợptính năng chia sẻ, bình luận, đánh giá, và xếp hạng địa điểm Chính vì vậy mạng địa
xã hội Foloyu đã ra đời nhằm đáp ứng các nhu cầu về một mạng xã hội lấy địa
điểm làm trung tâm để kết nối người dùng với nhau Mạng địa xã hội Foloyu là một
dự án đang trong giai đoạn phát triển, dự án được hình thành trên ý tưởng của thầytiến sĩ Nguyễn Khanh Văn Dưới sự hướng dẫn của thầy, một nhóm sinh viên lớpcông nghệ phần mềm đang phát triển dự án này
hò, hội họp Đây thật sự là 1 tính năng hấp dẫn, và nếu được triển khai, nó có tácdụng cải thiện to lớn tới đời sống sinh hoạt và giao tiếp của mọi người Hơn thếnữa, hệ thống foloyu cho phép các tính năng sau:
Checkin: Hệ thống tạo feed về các lần checkin của người dùng đối với cácđịa điểm Kèm theo những lần checkin đó có thể là một câu cảm thán (shout)ngắn mô tả về địa điểm Feed này sẽ được gửi đến bạn bè trong danh sáchbạn bè của mình, chia sẻ cho họ biết ta đã đi đâu Thực chất, checkin chính làmột cách thông báo cho bạn bè biết ta đã đi đâu, làm gì
Kết bạn đang ở xung quanh mình: hệ thống tự động giới thiệu bạn bè(suggest friend) cho người dùng dựa trên vị trí hiện tại của người dùng Qua
Trang 21đó, ta có thể có thêm bạn Hệ thống cũng cho biết những người dùng cùng ởtrong một địa điểm nào đó.
Khám phá các địa điểm
Đây là mảng hầu như chưa được khai thác đến Ta mới chỉ tìm thấy các tínhnăng về tìm kiếm các địa điểm chuyên dụng như bệnh viện, trạm xăng, ATM… trêncác dịch vụ bản đồ số, mà chưa thấy ai khai thác tính xã hội của vấn đề này Thay vìxây dựng một cơ sở dữ liệu các địa điểm cơ bản, cứng nhắc, ta có thể chuyển chứcnăng này cho người sử dụng Người dùng có thể đánh dấu, tạo mới các địa điểm mà
họ ưa thích, chia sẻ cho bạn bè, hay đánh giá, bình luận,… Việc để người dùng tự
do phát triển sẽ làm tăng tính linh động trong vấn đề lưu trữ, quản lý địa điểm Hơnnữa, việc đưa vào tính cộng đồng của một mạng xã hội, cùng các tính năng đánhgiá, xếp hạng sẽ tạo nên sức lan tỏa rộng và tiềm năng to lớn trong khai thác, sửdụng Ta có thể xây dựng các tính năng hữu ích như:
Lưu dấu các địa điểm ưa thích
Chia sẻ địa điểm hay với bạn bè
Bình luận, đánh giá về địa điểm
Chia sẻ hình ảnh, video về địa điểm
Tìm kiếm địa điểm tốt nhất dựa trên khoảng cách, đánh giá của nhữngngười đã sử dụng, đặc biệt là của bạn bè
Kết nối người dùng:
Mọi hoạt động của người dùng như bình luận về một địa điểm, đánh giá(rate) địa điểm, tạo ấn tượng (impression)… sẽ được tạo thành feed và đưa ra thôngbáo cho bạn bè của họ Từ đó, ta có thể kết nối mọi người lại với nhau Người sửdụng có thể dễ dàng cập nhật được thông tin của bạn bè mình, làm quen kết bạn vớinhững người đang ở cùng vị trí hoặc gần với vị trí của mình Người dùng có thể viếtnhững bình luận, hay nghiêm túc hơn là những ấn tượng (impression) về địa điểm
đó Việc làm này sẽ giúp những người chưa từng đến địa điểm này biết những thôngtin thú vị về địa điểm Lấy địa điểm làm trung tâm, các bình luận hay impressionnày sẽ đưa mọi người lại gần nhau hơn
1.3.2 Yêu cầu hệ thống
Khi thiết kế hệ thống, nhóm phát triển luôn hướng Foloyu tới một số lượngngười dùng lớn Vì vậy Foloyu cần bảo đảm các yêu cầu hệ thống của một mạng xãhội có thể đáp ứng số lượng người dùng lớn:
Tính scalability: hệ thống phải đáp ứng tốt với số lượng người sử dụng lớn,lượng dữ liệu lớn, thời gian đáp ứng nhanh
Trang 22 Tính bảo mật: đảm bảo kênh truyền bảo mật giữa các máy chủ, người dùngđăng nhập một lần nhưng có thể sử dụng mật khẩu để xin cấp phép cho cácdịch vụ khác mà không cần đăng nhập lại Các thông tin cá nhân của người
sử dụng được bảo vệ
Chính sách riêng tư của người sử dụng được tôn trọng, các thông tin vềngười dùng phải được kiểm soát tốt
Tính thân thiện: giao diện người sử dụng trên client đảm bảo thân thiện, dễ
sử dụng, người dùng cảm thấy thoải mái khi thao thác trên client
Tính tương thích: ứng dụng client chạy tốt trên các version của webbrowser cũng như các phiên bản khác nhau của hệ điều hành Android,Iphone OS
Tính chính xác trong phương pháp định vị: hệ thống phải xác định chínhxác vị trí người dùng, vị trí chính xác này không nên hiểu là các con sốkinh độ và vĩ độ, mà phải hiểu là người sử dụng đang ở vị trí nào, phố nào,nhà hàng nào Nếu chỉ là các con số kinh độ, vĩ độ thì rút cuộc, người dùngvẫn không biết mình đang ở đâu
1.3.3 Mô hình triển khai hệ thống FOLOYU
Hệ thống bao gồm bốn máy chủ hoạt động theo mô hình trong hình vẽ 1-1.Client ở đây có thể là điện thoại Android, Iphone hoặc web browser, thực hiện kếtnối tới server foloyu thông qua internet, server này sẽ nhận request, thực hiện xácthực người dùng và xác định loại dịch vụ mà client muốn gọi tới từ đó nó sẽ thựchiện các lời gọi webservice tới 3 server còn lại là Profile engine, feed engine vàlocation engine để đáp ứng các yêu cầu tương ứng của người dùng Sau đó Foloyu
sẽ thực hiện trả kết quả lại cho client dưới định dạng xml đã được quy ước giữa haibên (client và server) Client nhận kết quả, thực hiện trích xuất thông tin từ file xmlnhận được và trả lại kết quả cho người dùng Ngoài ra, hệ thống thực hiện đăngnhập và xác thực người dùng bằng giao thức Kerberos, giao thức này cho phépngười dùng đăng nhập một lần vào hệ thống và sử dụng các dịch vụ từ phía cácserver còn lại mà không cần phải đăng nhập lần thứ hai
Trang 23Hình 1-1: Mô hình hệ thống Foloyu
Profile engine chịu trách nhiệm quản lý thông tin người dùng, xử lý cácrequest từ phía Foloyu server và thao tác tới cơ sở dữ liệu Location Engine quản lýtoàn bộ thông tin về các địa điểm, cung cấp các API dưới dạng webservice choFoloyu server để từ đó Foloyu server trả kết quả về cho client Đồng thời với việcquản lý thông tin, Location Engine cung cấp dịch vụ tìm kiếm địa điểm, dịch vụxem thông tin về địa điểm đó, xem các comment, các rate địa điểm, định vị vị tríngười dùng Feed Engine thực hiện nhiệm vụ tạo các feed (cập nhật thông tin) từngười dùng rồi truyền tải các thông tin này cho người dùng khác Các engine đượcxây dựng độc lập, đảm bảo tiêu chí là chúng chỉ cung cấp các API dưới dạngwebservice, sau này bất cứ bên thứ ba nào cũng có thể gọi đến được, không riêng gìFoloyu server
Ngoài ra hệ thống có sử dụng các API của Google Map server cho 2 việc:việc thứ nhất là hiển thị bản đồ số; thứ hai là thực hiện chỉ dẫn tìm đường đi giữahai địa điểm Việc tìm chỉ dẫn thông qua Gmaps API sẽ trả trực tiếp về cho phíaclient file KML và phía client sẽ tự thực hiện truy xuất thông tin để hiển thị trênGmaps từ file KML này
Trang 24CHƯƠNG 2: NHIỆM VỤ ĐỒ ÁN VÀ ĐỊNH HƯỚNG
GIẢI PHÁP
Nội của chương này sẽ trình bày các vấn đề sau:
o Giới thiệu về 2 nhiệm vụ đồ án.
o Giới thiệu về lập trình cho Android và định hướng cho ứng dụng Foloyu
trên Android.
o Công nghệ định vị và định hướng ứng dụng trên Foloyu.
Trong quá trình tham gia dự án phát triển mạng địa xã hội Foloyu, em đượcphân công thiết kế các use case cho người dùng trên điện thoại Android qua đó càiđặt những chức năng phù hợp của mạng địa xã hội trên Android Ngoài ra, em cònđược phân công tìm hiểu các phương pháp định vị trên điện thoại Android và xâydựng Module định vị cho Foloyu Đây là hai nhiệm vụ chủ yếu của đồ án
Foloyu
Thói quen sử dụng điện thoại khác hẳn so với thói quen sử dụng máy tính cánhân Người sử dụng điện thoại thường chỉ có khoảng 5 đến 10 phút rảnh để thaotác trên điện thoại, màn hình điện thoại di động cũng nhỏ hơn, các giao tiếp người –máy chủ yếu là thông qua màn hình cảm ứng nên có khá nhiều hạn chế Ví dụ,người sử dụng rất ít khi ngồi viết, edit một blog, một note trên điện thoại di động,thay vào đó, họ thường sử dụng những tính năng yêu cầu thao tác đơn giản hơn nhưbấm vào button like, hay bình luận những câu ngắn, thường độ dài chỉ bằng một tinnhắn SMS họ gửi Hơn nữa, người sử dụng mạng xã hội trên điện thoại di động có
xu hướng tiếp nhận thông tin hơn là phản hồi lại thông tin đó, họ chỉ muốn xemstatus của các bạn bè mình, xem hôm qua bạn mình đi đâu, làm gì, hiếm có ai ngồiviết hẳn một bình luận dài, một note Chính vì vậy, nhiệm vụ cơ bản của em khitham gia dự án là thiết kế, lựa chọn những tính năng phù hợp với thói quen sử dụngđiện thoại, làm sao chọn những giao tiếp đơn giản nhất cho người dùng, khuyếnkhích họ sử dụng những tính năng được cài đặt này Những tính năng này cần đảmbảo các tiêu chí sau:
Đơn giản, dễ dùng
Cần thiết nhất đối với người sử dụng mạng địa xã hội
Phù hợp với thói quen của người dùng điện thoại
Trang 25 Giao diện thiết kế tương tác người máy khuyến khích người dùng sử dụngứng dụng này.
Để có thể làm tốt nhiệm vụ được giao này, em đã định hướng ngay từ lúc đầutham gia vào dự án là sẽ phải nắm vững công nghệ lập trình trên Android, đặc biệt
là thao tác với Google map trên Android Ngoài ra, em còn tìm hiểu các thiết kếtương tác người máy trên Android để đảm bảo đưa ra được một giao diện Androidphù hợp với các tiêu chí đã nêu ở trên
Một trong những yêu cầu về định vị trong mạng Foloyu là định vị phải rấtchính xác Thông thường mọi người hay nói đến độ chính xác bao nhiêu m, ngườidùng đang ở tọa độ địa lý là kinh độ bao nhiêu, vĩ độ bao nhiêu Nhưng thực tế chothấy, đối với người dùng thông thường, những con số trên không hề có ích lợi gì,cái người sử dụng quan tâm lại đơn giản hơn rất nhiều, ví dụ họ đang ở nhà C1ĐBKHN thì cái họ muốn hệ thống định vị phải đưa ra cho họ thông báo là “bạnđang ở tòa nhà C1 ĐHBKHN, số 1 Đại Cồ Việt!” Đây mới là thông tin hữu ích chobạn bè họ, vì vậy, hệ thống định vị của Foloyu không đặt lên hàng đầu là phải tìmchính xác tọa độ địa lý của người sử dụng Sau đây là những tiêu chí mà Foloyuhướng tới:
Hệ thống định vị hoạt động được cả ở những vị trí trong nhà (indoor)
Không yêu cầu điện thoại phải có cấu hình cao
Hệ thống định vị chính xác vị trí người dùng, đưa ra thông báo về vị tríngười dùng, hiển thị trên bản đồ số Gmaps
Module định vị phải đảm bảo đáp ứng nhanh cho người sử dụng
Chức năng định vị không gây tốn pin cho người sử dụng di động
Để đảm bảo những tiêu chí này, module định vị không thể sử dụng định vịbằng chip GPS được, bởi vì chip GPS tuy cho kết quả chính xác (cỡ 10m) nhưng nólại hoạt động rất kém trong những khu vực đông dân cư, nơi mà sóng GPS vốn đãyếu, lại bị nhiễu rất nhiều do các tòa nhà cao tầng, các sóng truyền hình, sóng điệnthoại di động… Hơn nữa, trong nhà (indoor) thì sóng GPS là rất yếu, các điện thoạiAndroid khá đắt tiền cũng không hoạt động được Sóng GPS trong nhà muốn bắtđược, phải có những bộ thu sóng (receiver) chuyên dụng đắt tiền Thêm nữa, với sốđông người sử dụng thì điện thoại di động có gắn chip GPS vẫn còn là xa xỉ, vì vậy
ta không nên yêu cầu người sử dụng mua điện thoại đời mới rồi mới có thể sử dụng
hệ thống định vị Foloyu được Chính vì lí do này, giải pháp định vị cho Foloyu sẽchú trọng tập trung vào 2 phương pháp là: Cell ID và định vị dựa trên sóng wifi
Trang 26(wifi based localization) Tuy nhiên, chúng ta cũng không nên bỏ qua phương phápđịnh vị bằng GPS vì nó rất chính xác, và hơn nữa, với những người sử dụng điệnthoại có gắn chip GPS thì không tội gì mà ta lại không sử dụng nó cả Chính vì lý
do này, trong đồ án của mình, em xin được trình bày mô hình, thuật toán của cả baphương pháp định vị là GPS, Cell ID và wifi based localiztion Sau đó, em sẽ đưa ranhững đánh giá dựa trên tình hình phát triển hiện tại của Foloyu mà có lựa chọn phùhợp
2.3 Cơ sở lý thuyết về định vị và công nghệ lập trình Android
Từ hai nhiệm vụ nói trên, em phải nghiên cứu, tìm hiểu cơ chế hoạt động của
hệ điều hành Android Các cách thức lập trình, thao tác trên bản đồ số Gmaps.Ngoài ra, một vấn đề nữa em cần phải nắm chắc là các mô hình định vị dựa trênsóng di động (cell ID) và sóng wifi (wifi signal based) để từ đó có thể đề xuất được
mô hình định vị phù hợp cho hệ thống Foloyu
2.3.1 Công nghệ lập trình trên Android
a. Hệ điều hành Android là gì?
Android có nền tảng mã nguồn mở được phát triển bởi Google Bên cạnhkho ứng dụng rất phong phú và hầu hết miễn phí, cùng một cộng đồng phát triểnrộng lớn, Google còn đưa ra bộ công cụ Android SDK cung cấp rất nhiều APIs cầnthiết cho việc phát triển các ứng dụng Android trên ngôn ngữ lập trình Java Mặc dùmới ra đời nhưng Android đã tạo ra sức hút rất lớn đối với các nhà phát triển và cáchãng sản xuất Hiện tại rất nhiều hãng lớn như HTC, SamSung, Motorola, SonyEricsson cam kết sẽ gắn bó với Android
Hệ điều hành Android được tích hợp rất tốt với Google maps và hệ thốngđịnh vị dựa trên cell ID của google, do đó việc lập trình hiển thị bản đồ số và gọi tớicác API của Google map trở nên đơn giản và dễ dàng Do vậy, để lập trình ứngdụng client cho mạng địa xã hội, lập trình viên có rất nhiều thuận lợi Hơn nữa, tốc
độ phát triển cũng như mức độ phổ biến của điện thoại Android ở Việt Nam đangngày càng tăng, số lượng điện thoại Android ở phân khúc bình dân đang tăng lênhứa hẹn một tương lai tươi sáng cho những nhà phát triển dịch vụ trên nền tảng này.Chính vì những thuận lợi như trên, trong đồ án của mình, em lựa chọn cài đặt ứngdụng trên nền tảng này cho hệ thống mạng địa xã hội Foloyu
b.Kiến trúc hệ điều hành Android
Hệ điều hành Android được chia làm 4 tầng theo sơ đồ như hình vẽ 1 – 2
Tầng Application:
Trang 27Đây là các ứng dụng tương tác trực tiếp với người dùng bao gồm các ứngdựng lõi và những ứng dụng của bên thứ ba Ngoài việc cung cấp đầy đủ các ứngdụng cơ bản của một chiếc điện thoại thông thường như: tạo cuộc gọi, nhắn tin Android còn có những dịch vụ rất hữu ích khác: trình duyệt web, google maps, cácứng dụng media, camera, games Hơn nữa Google còn cung cấp kho ứng dụng choAndroid tai địa chỉ http://www.android.com/market/ khá phong phú giúp ngườidùng có thể thoải mái download để sử dụng.
Hình 2-2: Kiến trúc hệ điều hành Android
Tầng Application Framework
Đây là nơi chứa các dịch vụ và hệ thống quản lí ứng dụng Lập trình viên sẽ
đa phần thao thác với tầng này Chi tiết về tầng Application Framework, em xinđược trình bày trong phụ lục B – hệ điều hành Android
Tầng Library
Android cung cấp một tập các thư viện C/C++ được sử dụng bởi các thànhphần khác nhau trong hệ thống Mô tả chi tiết về các thư viện này, em xin đượctrình bày trong phụ lục B – hệ điều hành Android
Trang 28 Android Runtime
Bao gồm máy ảo Dalvik và core library DVM thực hiện các ứng dụng trênnền Java và đã được đóng gói dưới dạng file dex (Dalvik Executable - dạng filethực thi của máy ảo Dalvik) phù hợp với các thiết bị mobile bị hạn chế về bộ nhớ vàtốc độ xử lí chậm Dalvik có cơ chế mã hóa đặc biệt khiến cho các file dex có kíchthước nhỏ hơn file jar nhằm tối ưu hóa việc sử dụng bộ nhớ
Linux kernel
Android dựa trên nhân Linux version 2.6 đối với các dịch vụ lõi của hệ thốngnhư bảo mật, quản lí bộ nhớ, quản lí tiến trình, mạng, trình điều khiển Nhân Linuxnhư là một lớp trừu tượng giữa phần cứng và phần còn lại của hệ thống Android.Nhưng Linux không làm việc trực tiếp với các ứng dụng mà thông qua máy ảoDVM Nhân Linux được Google sử dụng không hoàn toàn là nhân Linux được sửdụng cho các phiên bản hệ điều hành cho máy tính để bàn, trong đó Google đã loại
bỏ đi hệ thống quản lý cửa sổ ứng dụng X Window System cũng như bỏ bớt một sốthư viện trong bộ thư viện chuẩn GNU
vệ tinh (gồm cả 3 vệ tinh dự phòng), 5 trạm thu phát trên mặt đất và các máy thucủa người sử dụng Mỗi vệ tinh nặng khoảng 2 tấn, sử dụng năng lượng mặt trời,chuyển động trên các quỹ đạo cách mặt đất khoảng 19.300 km với vận tốc 2 vòngtrái đất/ngày đêm Quỹ đạo của các vệ tinh được tính toán sao cho ở bất kỳ nơi nàotrên trái đất và vào bất kỳ thời điểm nào, người ta cũng có thế “nhìn thấy” tối thiểu
4 vệ tinh GPS sử dụng những vệ tinh và những trạm thu phát này như những ngôisao, hay các điểm tham chiếu, để tính toán khoảng cách chính xác tới từng mét
Cơ chế làm việc của GPS
Trang 29Như vậy, ý tưởng chủ đạo của toàn bộ hệ thống định vị toàn cầu thực ra chỉ là
sử dụng các vệ tinh trong không gian như những điểm tham chiếu cho những mụctiêu dưới mặt đất
Bằng cách đo khoảng cách từ chúng ta đến ít nhất 3 vệ tinh trong không gian,chúng ta có thể xác định vị trí của chúng ta một cách chính xác trên mặt đất Theonguyên tắc, chúng ta cần tới 4 vệ tinh để xác định một cách thật chính xác vị tríchúng ta đang đứng Tuy nhiên, nếu kèm theo những điều kiện nhất định, chúng ta
có thể chỉ cần dùng 3 vệ tinh
Hình 2-3: Định vị bằng GPS
Điều này có thể được giải thích bởi một nguyên lý hình học rất đơn giản: Giả sửkhoảng cách từ chúng ta tới một vệ tinh A đo được là 20.000 km Nếu chỉ biết riêngđiều này, chúng ta có thể đang ở bất kỳ một vị trí nào trên mặt cầu khổng lồ có tâm
là vệ tinh A, và bán kính là 20.000 km Tiếp theo, đo khoảng cách tới vệ tinh thứhai, B, được 21.000 km Điều này cho biết chúng ta đang ở đâu đó trên đường tròn
là giao tuyến của 2 mặt cầu tâm A bán kính 20.000 km và mặt cầu tâm B có bánkính 21.000 km Nếu biết thêm rằng chúng ta đang ở cách vệ tinh thứ 3, C, mộtkhoảng 22.000 km, thì chúng ta đã có thể xác định được vị trí của mình - 1 trong 2giao điểm của đường tròn giao tuyến thu được ở trên với mặt cầu tâm C bán kính22.000 km Như vậy, với 3 vệ tinh, chúng ta xác định được vị trí của mình là 1trong 2 điểm trong không gian, và thường 1 trong 2 điểm này sẽ bị loại ngay lập tứcbởi đặc điểm của nó (chẳng hạn như nằm lơ lửng ngoài không gian, hay đangchuyển động với một tốc độ siêu lớn…)
Trang 30hoặc ở khu dân cư có nhiều nhà cao tầng thì tín hiệu thường không bắt được do bịnhiễu, phải là những chip GPS chuyên dụng, với giá thành rất cao mới có thể bắtđược tín hiệu GPS ở những khu vực như vậy; thứ ba là chip GPS hoạt động khá tốnpin và thời gian đáp ứng là chậm do phải thực hiện nhiều tính toán Để vượt quanhững khó khăn này, một phương pháp phổ biến hiện nay là định vị thông qua sóngđiện thoại Ưu điểm của phương pháp này là: nó hoạt động trong nhà, điện thoạikhông cần phải trang bị thêm gì miễn là có kết nối Internet, thời gian đáp ứng cũngnhanh hơn so với GPS và ít tốn pin hơn Tuy nhiên, độ chính xác thì lại không đượcbằng GPS và trong những khu vực dân cư thưa, ít cột thu phát sóng điện thoại nhưvùng ngoại ô thì độ chính xác của phương pháp định vị này là kém hơn nhiều so vớiđịnh vị dựa trên GPS Nguyên lý hoạt động của phương pháp này khá đơn giản.Mỗi một chiếc điện thoại khi được bật lên, nó sẽ dò sóng của nhà mạng di động vàchọn cột thu phát sóng nào có thể đáp ứng tốt nhất yêu cầu của nó (thường là cột cósóng mạnh nhất) Mỗi cột thu phát sóng này (cột BTS – Base Transceiver Station)
có một ID riêng, gọi là cellID, các ID này không giống nhau, vì vậy, nếu như ta biết
vị trí của các cột BTS, ta hoàn toàn có thể ước lượng vị trí của người dùng di động.Trước khi đi sâu vào phân tích làm cách nào để định vị, em xin trình bày cách thứcmột hệ thống di động hoạt động
Hình 2-4: Phân bố các Cell trong mạng di động GSM
Một mạng di động bao gồm rất nhiều radio cell, mỗi một cell này là một khu
vực địa lý mà một cột BTS bao phủ Kích thước của cell này phụ thuộc vào độmạnh của sóng, cấu trúc của Ăng ten phát sóng và nó cũng phụ thuộc nhiều vàomức độ nhiều hay ít của các vật cản Khoảng cách giữa các cell trong khu vực thànhthị (thành phố Hà Nội chẳng hạn) là khoảng 100m, ở vùng ngoại thành, nông thônthì khoảng cách này lớn hơn nhiều, là khoảng 35km Những con số này đều là
Trang 31chuẩn của mạng GSM Mỗi trạm BTS có một tần số thu phát sóng riêng, được gọi
là cell allocation (CA) Một đặc điểm quan trọng của mạng di động là những tần sốnày (CA) có thể được sử dụng cùng một lúc bởi rất nhiều cột BTS, chính vì vậy khithiết kế mạng di động, người ta phải bố trí sao cho các cột BTS trên cùng một CAkhông được “giẫm chân” lên nhau Điều này được mô tả như trong hình vẽ 2-3.Như trong hình vẽ ta có thể thấy là ở một khu vực địa lý, ta có thể bắt được sóngcủa rất nhiều cột BTS khác nhau Các cột BTS thu phát sóng hoàn toàn có thể giẫmchân lên nhau miễn là chúng thu nhận tín hiệu ở các tần số khác nhau, đảm bảokhông có xung đột, làm nhiễu tín hiệu của nhau là được Trong khu vực thành thị,tại một vị trí một chiếc di động có thể bắt được sóng của 10 cột BTS, khi bắt được
nó sẽ lựa chọn trong này một cột có thể đáp ứng tốt nhất khả năng kết nối với mạng
di động, tiêu chí chọn thông thường là chọn cột nào có sóng mạnh nhất Như vậy,cũng có nghĩa là cột BTS gần nhất sẽ được kết nối với điện thoại Ta có thể lấyđược các thông số về Cell ID, về độ mạnh sóng, về tần số của kênh giao tiếp củacác cột BTS mà điện thoại bắt được Từ đó, ta hoàn toàn có thể ước lượng được vịtrí của điện thoại
Hình 2-5: Định vị bằng Cell ID
Một cách lý tưởng, khi ta biết vị trí của các cột BTS, biết được độ mạnhsóng, ta có thể tính được khoảng cách từ BTS tới di động, và giống như trường hợpcủa GPS, ta có thể tính toán vị trị của người dùng nếu biết 3 cột BTS.Hình 2-4 mô
tả cách định vị này Phương pháp này được gọi là triangulation Tuy nhiên, vị trícủa các cột BTS thì không nhà mạng nào cung cấp cho các nhà làm dịch vụ LBS,chính vì vậy, ta phải có giải pháp, giải pháp này được Google thực hiện rất tốt
Mô hình của Google hết sức đơn giản.Hình vẽ 2-5 mô tả phương pháp định
vị này Chúng ta sẽ có 2 pha: pha offline và pha online Pha offline là nhà cung cấp
Trang 32dịch vụ định vị sẽ đi đến tất cả các vị trí cần định vị, thu lại các thông số về cácCellID rồi lưu vào database Pha online, khi người dùng đi vào một CellID, người
đó sẽ gửi cellID lên cho nhà cung cấp dịch vụ, họ sẽ có thuật toán phù hợp, so sánhtrong database, thực hiện các tính toán và trả về cho người dùng thông tin về vị trí
mà người đó đang đứng
Hình 2-6: Mô hình định vị bằng Cell ID
Trong điện thoại Android, Cell ID cũng được tích hợp sẵn vào trong packageLocation, ta chỉ cần gọi tới một class, điện thoại Android sẽ tự tìm cellID và gửicellID này lên server của Google, server Google sẽ trả lại vị trí của người dùng làtọa độ địa lý, và hiển thị luôn trên Gmaps Việc lập trình trở nên vô cùng đơn giản
c. Định vị bằng sóng wifi (wifi based localization)
Phương pháp định vị bằng cellID có nhiều ưu điểm so với phương pháp định
vị bằng GPS song nó cũng có những hạn chế nhất định, đặc biệt là về độ chính xác.Phương pháp định vị này chỉ cho độ chính xác trong phạm vi 70m ở khu vực thànhthị, còn ở khu vực ngoại thành và nông thôn thì không ai dám đảm bảo độ chính xácnày Đối với yêu cầu của mạng địa xã hội, chủ yếu tập trung các địa điểm là các nhàhàng, các quán café, công sở, nơi các điểm truy cập Internet bằng sóng wifi là kháphổ biến thì việc tận dụng những tín hiệu này tỏ ra hiệu quả ở những điểm sau:
Mỗi quán café, công sở,… thường có một mạng wifi riêng của nó
Mỗi access point có một địa chỉ MAC riêng, địa chỉ này giống như cell IDcủa cột BTS, các access point khác nhau thì địa chỉ này cũng khác nhau
Điện thoại Android có thể bắt được các thông số về sóng wifi bao gồm: địachỉ MAC, độ mạnh sóng, tên của mạng wifi, tần số của sóng
Trang 33Hình 2-7: Định vị bằng sóng wifi
Do vậy, ta hoàn toàn có thể thiết lập một hệ thống định vị dựa trên tín hiệunày Trong khuôn khổ đồ án, em sẽ xây dựng một module định vị cho Foloyu,người sử dụng khi cần xác định vị trí của mình, sẽ gửi tín hiệu wifi lên cho serverFoloyu, nếu dữ liệu về sóng wifi này có trong cơ sở dữ liệu của mình, module sẽđưa ra thông báo cho người dùng biết họ đang ở quán café hoặc nhà hàng nào Nếukhông có, chức năng định vị sẽ được chuyển sang cho server định vị bằng cellIDhoặc GPS của Google Từ đó ta sẽ xác định được vị trí của người dùng nhưng với
độ chính xác không cao
Như vậy, mạng địa xã hội Foloyu đã chỉ ra tiềm năng to lớn trong tương laigần của những ứng dụng dựa địa điểm (location based service) trên nền tảng diđộng Nhiệm vụ của em trong khuôn khổ đồ án là tìm hiểu các công nghệ lập trìnhtrên điện thoại Android, nắm vững các thiết kế giao diện, các kỹ thuật lập trìnhclient server qua đó có thể tạo ra một ứng dụng giao tiếp tốt nhất với server Foloyu.Thứ hai, trong đồ án của mình, em phải nghiên cứu các lý thuyết định vị hiện đang
ở dạng các bài báo (paper) hoặc đã được triển khai thực tế (như của google cellIDlocalization) để qua đó lựa chọn giải pháp phù hợp với những yêu cầu của mạng địa
xã hội Foloyu và cài đặt module định vị đó cho Foloyu
Trang 34PHẦN II: XÂY DỰNG ỨNG DỤNG ANDROID CHO FOLOYU VÀ TRIỂN KHAI MODULE ĐỊNH VỊ
Ứng dụng Android cho mạng địa xã hội Foloyu được xây dựng theo đúngquy trình phát triển phần mềm truyền thống, trải qua các giai đoạn: phân tích yêucầu, thiết kế, cài đặt, kiểm thử và triển khai thử nghiệm Nội dung trình bày dướiđây mong muốn khái quát lại toàn bộ quá trình xây dựng ứng dụng client Android,đồng thời nêu bật những đóng góp mà đề tài đã thực hiện được trong khuôn khổĐATN Module định vị được xây dựng và triển khai theo mô hình nêu trong phần 1,trong phần 2 này, em xin trình bày thiết kế thuật toán, xây dựng mô hình định vị,thiết kế database và ứng dụng lấy mẫu sóng wifi
CHƯƠNG 3: ỨNG DỤNG ANDROID CHO MẠNG
ĐỊA XÃ HỘI FOLOYU
Nội của chương này sẽ trình bày các vấn đề sau:
o Phân tích yêu cầu ứng dụng Foloyu trên Android
o Thiết kế chương trình
o Thiết kế giao diện
o Cài đặt và triển khai
Trang 353.1 Phân tích yêu cầu
3.1.1 Yêu cầu chức năng
Các chức năng chính của hệ thống:
- Quản lý thông tin cá nhân
- Kết nối bạn bè
- Hiển thị và tùy chỉnh bản đồ trên điện thoại di động
- Tìm kiếm, quản lý, chia sẻ thông tin về các địa điểm
- Đánh giá, bình luận địa điểm Tìm kiếm địa điểm tốt nhất dựa trênkhoảng cách và điểm đánh giá chung của mọi người (hoặc bạn bè)
- Lưu trữ và chia sẻ vị trí Tìm kiếm vị trí bạn bè
- Tích hợp chức năng hình ảnh vào quản lý địa điểm
3.1.2 Yêu cầu giao diện và sử dụng
- Thiết kế cho màn hình cảm ứng, kích thước vừa và lớn
- Đơn giản, dễ hiểu, dễ sử dụng
- Thao tác tiện lợi, nhanh chóng
- Giao diện sinh động, hấp dẫn, trẻ trung, phù hợp với giới trẻ
- Có tính hình tượng cao, khai thác hiệu quả các yếu tố màu sắc, biểu tượng (icon)
3.1.3 Yêu cầu về hiệu năng
Chương trình phải đảm bảo những yêu cầu sau đây về hiệu năng(performance):
Luôn đáp ứng người sử dụng, không để chương trình chờ quá 5s
Với những tác vụ đòi hỏi quá trình xử lý lâu như download thì phải tạothread riêng, quản lý các thread này, không để chương trình bị crash khi đangdownload dữ liệu từ server
Download các ảnh về máy tính phải hiển thị dần từng phần ảnh được down,không đợi đến khi down hết ảnh về mới hiển thị, tránh gây nhàm chán chongười sử dụng
Đảm bảo ứng dụng không tiêu tốn quá nhiều pin
3.1.4 Phân tích use case
a. Use case tổng quát
Người dùng sử dụng điện thoại di động Android có những hạn chế nhất địnhnhư kích thước màn hình nhỏ, bàn phím nhỏ, không tiện dụng cho việc gõ nhiều kí
Trang 36tự như trên browser, do vậy đối với góc nhìn là user trên Android client, người sửdụng có 3 use case chính là Profile, Location và Feed Profile bao gồm toàn bộ cácchức năng quản lý tài khoản của một người dùng Location bao gồm các chức năng
về địa điểm và Feed bao gồm các chức năng tạo feed, quản lý feed, xem feed
Hình 3-8: Use case tổng quát
Hệ thống chú trọng vào thông tin địa điểm và bình luận thông tin địa điểmđồng thời kết nối mọi người với nhau thông qua địa điểm, chính vì vậy đối với mộtngười dùng điện thoại Android thì hệ thống cần đảm bảo 3 chức năng cơ bản trên.Trong các use case mức dưới, em sẽ tùy biến những chức năng server cung cấp đểphù hợp với client Android Toàn bộ đặc tả các use case, em xin được để trong cácbảng ở phụ lục A
Trang 37b.Use case profile
Hình 3-9: Use case Profile
Use case Profile bao gồm các chức năng quản lý tài khoản cá nhân, quản lýthông tin cá nhân, quản lý bạn bè Các chức năng này đều là những chức năng đãđược hiệu chỉnh theo những chức năng đã được phía server cung cấp Cụ thể, phíaserver cung cấp các chức năng tạo nhóm, quản lý nhóm Các chức năng này đều khóthực hiện trên phía client Android vì nó đòi hỏi nhiều thao tác phức tạp và hiếm khingười sử dụng dùng nó khi đang đăng nhập vào hệ thống từ điện thoại Android Tuynhiên, hệ thống vẫn phải đảm bảo những chức năng cơ bản sau:
Quản lý tài khoản cá nhân gồm: đăng nhập, đăng xuất, phục hồi mật khẩu,đổi mật khẩu, đăng ký thành viên
Quản lý bạn bè: gửi yêu cầu kết bạn, trả lời yêu cầu kết bạn, tìm kiếm bạn
bè, xóa bạn bè, xem danh sách bạn bè
Quản lý chính sách riêng tư: xem và sửa các chính sách riêng tư
Quản lý thông tin cá nhân: xem và sửa thông tin cá nhân
Trang 38c. Use case Location:
Hình 3-10: Use case Location
Mạng địa xã hội lấy địa điểm làm trung tâm nên các chức năng về địa điềm luôn được chú trọng phát triển Các chức năng này bao gồm:
Chức năng định vị
Xem danh sách địa điểm
Tìm chỉ đường
Tìm kiếm địa điểm
Các chức năng bình luận, đánh giá, tạo ấn tượng (impression) đối với địa điểm
Use case Định vị (localization)
Trang 39Hình 3-11: Use case localization
Use case Localization (định vị) người dùng gồm có:
Tự động xác định vị trí người dùng: ứng dụng Android client sẽ tự lấy cácthông tin từ môi trường (tín hiệu wifi, tín hiệu di động, tín hiệu GPS) rồi gửinhững thông tin này lên foloyu server, server sẽ xác định vị trí người dùngdựa trên database của mình, nếu không thể xác định được, ứng dụng client
sẽ gửi request lên Google server thông qua lời gọi hàm đã được build sẵntrong hệ điều hành Android
Cho người dùng cập nhật vị trí bằng tay: người sử dụng sẽ tự đánh dấu vị tríhiện thời của mình trên bản đồ bằng tay Khi đó, ứng dụng client sẽ gửithông tin lên server để phía server thực hiện tạo phản hồi cho bạn bè củangười dùng (tùy theo chính sách riêng tư của người sử dụng)
Định vị bằng Foloyu: ứng dụng gửi request lên server định vị của Foloyu,server thực hiện định vị theo thuật toán matching rồi trả lại vị trí người dùng
Định vị bằng Google server: nếu Foloyu server không thực hiện được việcđịnh vị, ứng dụng sẽ gửi yêu cầu định vị lên Google server thông qua lời gọihàm được build sẵn trong nhân hệ điều hành Android
Use case xem thông tin địa điểm (view location)
Trang 40Hình 3-12: Use case view location
Các chức năng xem thông tin địa điểm gồm có:
Xem danh sách địa điểm có điểm đánh giá cao (hot)
Xem danh sách các phân loại địa điểm (location category) có điểm đánh giácao
Xem danh sách địa điểm yêu thích của tôi (người sử dụng)
Xem danh sách các địa điểm mới nhất
Xem thông tin chi tiết về một địa điểm cụ thể: xem vị trí của địa điểm trênbản đồ, xem mô tả cụ thể về địa điểm, xem các bình luận về địa điểm, xemđịa chỉ của địa điểm, thứ hạng của địa điểm Xem chỉ đường từ vị trí hiệnthời đến địa điểm này