Hình 4-38: Mô hình lấy mẫu dữ liệu

Một phần của tài liệu Công nghệ định vị và ứng dụng android cho mạng địa xã hội (Trang 66 - 69)

em viết 1 trang servlet thực hiện nhận dữ liệu, kiểm tra xem dữ liệu đã đúng hay chưa rồi thực hiện kết nối đến cơ sở dữ liệu và lưu vào cơ sở dữ liệu thông tin đã thu được.Sau đó gửi lại phía client file XML thông báo lưu thành công hay không.

1.14.2. Chương trình client WifiScanner

Ứng dụng có 3 chức năng chính là định vị, dò sóng wifi, và cho phép nhân viên lấy mẫu điền thông tin địa điểm qua giao diện GUI nên em đã thiết kế chương trình gồm có 1 activity là 1 TabActivity và 3 activity đảm nhiệm 3 nhiệm vụ nói trên. TabActivity là activity được chọn khởi đầu chương trình, activity này có 3 tab, mỗi khi người sử dụng bấm vào một tab, thì chương trình sẽ chuyển sang 1 trong 3 activity tương ứng bên kia thông qua cơ chế Intent trong Android.

a. Chức năng định vị:

Ứng dụng phải đảm bảo lấy được vị trí của địa điểm mà người lấy mẫu dữ liệu đang đứng, chính vì vậy, ứng dụng này phải chạy trên thiết bị Android có gắn chip GPS có thể hoạt động trong nhà. Điểm cần lưu ý ở đây là chức năng định vị cho ứng dụng lấy mẫu này chỉ cần lấy về tọa độ địa lý chính xác của địa điểm, tức là phải lấy Lattitude và Longtitude. Sau nữa, ứng dụng phải cho phép lưu trữ lại thông tin địa điểm này vì người dùng có thể thực hiện thao tác gửi dữ liệu lên server ở Activity khác. Trong Android cho phép sử dụng một lớp tiện ích là SharedPreferences cho phép lập trình viên tạo ra một đối tượng có thể lưu trữ, chỉnh và chỉnh sửa các thông tin đưa lên đây. Thông tin được lưu dưới dạng (key,value), bất cứ Activity nào cũng có thể truy nhập đến thông tin này bằng cách gọi đến hàm getSharedPreferences(String name, int mode) trong đó name là tên của Preference này, mode là chế độ đối với Preference này. Ta có các chế độ MODE_PRIVATE (cho phép activity trong cùng ứng dụng đọc), MODE_WORLD_READABLE (cho phép các ứng dụng khác cũng đọc được), MODE_WORLD_WRITABLE (cho phép ứng dụng khác quyền ghi với Preference này). Thực tế ta chỉ giao tiếp dữ liệu giữa

các Activity trong cùng 1 ứng dụng nên chỉ sử dụng MODE_PRIVATE là đủ. Bảng 4-3 mô tả quá trình này.

Lưu data vào Preference ở MapActivity

SharedPreferences preferences_GPS = getSharedPreferences( Constant.PREFERENCES_NAME, MODE_PRIVATE); SharedPreferences.Editor edit = preferences_GPS.edit(); edit.putString(Constant.LAT,

Double.toString(location.getLatitude()

));

edit.putString(Constant.LONG,

Double.toString(location.getLongitude(

)));

edit.commit();

Đọc data từ Preference ở Infor Activity

SharedPreferences preferences_GPS = getSharedPreferences(

Constant.PREFERENCES_NAME,MODE_PRI

VATE); String lat = preferences_GPS.getString( Constant.LAT, ""); String lon= preferences_GPS.getString( Constant.LONG, "");

Bảng 4-3: Shared Preference trong ứng dụng lấy mẫu b.Chức năng Scan Wifi

Chức năng này được cài đặt trong class WifiScannerActivity. Để thực hiện việc thao tác lấy thông tin bất cứ sóng wifi nào mà thiết bị bắt được, ta phải gọi tới một System Service thông qua lời gọi hàm getSystemService() .Sau khi gọi tới wifi service, ta thu được một object WifiManager và từ đó có thể thao tác để lấy về thông tin sóng wifi. Các thông tin mà ta có thể lấy về bao gồm:

i. BSSID (Basic service set idenfier) basic service set là một chuẩn của 802.11 WLAN, trong một cấu hình mạng thì một access point và tất cả các trạm (station - ở đây có thể là PC, mobile…) liên kết đến nó thì được coi là một basic service set, ví dụ đơn giản nhất cho BSS là 1 access point + 1 laptop bắt sóng của AC đó. Mỗi một BSS này được đánh 1 chỉ số gọi là BSSID, ta có thể hiểu BSSID này thực chất là địa chỉ MAC của access

point.

ii. RSSI (received signal strength index) đây là độ mạnh sóng wifi mà thiết bị bắt được, nó cũng là 1 chuẩn của 802.11, chỉ số này giúp xác định xem sóng là yếu, mạnh, hay trung bình ( mỗi tiêu chí yếu mạnh, trung bình này có 1 threshold). Thông số này cũng được dùng trong viễn thông để xác định xem nên connect tới BTS nào.

iii. SSID (service set identifier) service set là tất cả các thiết bị liên kết đến 1 mạng LAN. SSID có thể chứa các ký tự ta có thể đọc được, và trong các

mạng wifi quy mô nhỏ chỉ gồm 1 access point, thì SSID thường dùng để chứa tên của mạng wifi đó. Vì vậy, khi lập trình cho android, gọi đến chỉ số này cũng tức là gọi đến tên của mạng wifi ấy.

iv. Frequency: ta cũng có thể lấy được tần số của sóng mà qua đó thiết bị android giao tiếp với AC.

v. Level: độ mạnh của sóng với đơn vị là dBm, dùng để đo độ mạnh tuyệt đối của sóng ( 1dBm tương đương 1.3mW)

vi. IP: với những AC mà thiết bị Android kết nối tới, thì nó có thể lấy được địa chỉ IP của AC này. Còn những sóng mà nó chỉ nhận thấy sự có mặt thì không lấy được IP.

Hình 4-39: Wifi Scan Receiver

Tuy nhiên, ta chỉ lấy những giá trị có ích cho việc định vị là địa chỉ MAC và độ mạnh sóng RSSI.Để thực hiện việc thường xuyên lấy được thông tin về các sóng wifi, ta cài đặt một lớp WifiScanReceiver thừa kế từ lớp BroadcastReceiver. Lớp này sẽ thực hiện nhiệm vụ dò sóng wifi một cách ngầm, khi phát hiện một sóng wifi mới thì nó tự động gửi thông tin này sang cho WifiScannerActivity thông qua việc cài đặt hàm OnReceive(), ta thực hiện việc gửi thông tin về các sóng mới nhận được. Ở bên lớp WifiScannerActivity, ta tạo một object của lớp receiver rồi đăng ký WifiScannerActivity nhận thông tin mới về sóng wifi bằng cách gọi hàm registerReceiver(receiver) trong đó receiver là object ta vừa tạo ra. Quá trình trên được mô tả trong hình 4-6.

c. Chức năng điền thông tin về location:

Chức năng này lại hết sức đơn giản, em chỉ tạo một Activity có có form để người sử dụng nhập thông tin về địa điểm bao gồm, tên địa điểm, địa chỉ, số điện thoại, quận, huyện, thành phố.

city

id int

cityName nchar(200) Column Name Data Type

District

id int

cityID int

DistrictName nchar(200) Column Name Data Type

ward

id int

districtID int WardName nchar(200)

Column Name Data Type Allow Nulls

Hình 4-40: DB trên Android Client Hình 4-41: Màn hình nhập dữ

Một phần của tài liệu Công nghệ định vị và ứng dụng android cho mạng địa xã hội (Trang 66 - 69)

Tải bản đầy đủ (DOC)

(94 trang)
w