基于Android的位置實時監(jiān)控系統(tǒng)的設計與實現(xiàn)
3.3 程序?qū)崿F(xiàn)
本文引用地址:http://2s4d.com/article/273085.htm一是接收發(fā)送過來的經(jīng)緯度信息。本設計為直觀顯示經(jīng)緯度信息,在加載地圖的同時,顯示在“短信內(nèi)容:”部分。其接收功能實現(xiàn)代碼如下:
/**
* 監(jiān)聽收到的短信
*/
private final class SmsObserver extends ContentObserver {
public SmsObserver(Handler handler) {
super(handler);
}
public void onChange(boolean selfChange) {
ContentResolver resolver = getContentResolver();
//查到發(fā)出的短信
Uri uri = Uri.parse("content://sms/inbox");
Cursor cursor = resolver.query(uri, new String[] { "address", "body" }, null, null, "_id desc limit 1");
if (cursor.moveToNext()) {
String address = cursor.getString(0);
if (address.equals("此處為被監(jiān)控對象的手機號碼")) {
String body = cursor.getString(1);
smsContent.setText(body);
SearchButtonProcess(body);
}
}
}
二是實現(xiàn)電子地圖上的位置顯示。僅僅有經(jīng)緯度信息,監(jiān)控者無法直觀地了解被監(jiān)控對象的方位。所以在監(jiān)控端軟件上,加載百度地圖實現(xiàn)被監(jiān)控對象的實時監(jiān)控,運行結(jié)果如圖8所示。其實現(xiàn)代碼如下:
/**
* 對收到的地點發(fā)起搜索并顯示在地圖上
*
* @param v
*/
private void SearchButtonProcess(String smsContent) {
try {
// 逗號分隔過濾得到經(jīng)緯度字符串
String[] point = smsContent.split(",");
// 獲取到的字符串需要轉(zhuǎn)化成long,然后long值需要乘1e6后轉(zhuǎn)化為int
String latitudeStr = point[0];
String longitudeStr = point[1];
GeoPoint ptCenter = new GeoPoint((int)(Float.valueOf(latitudeStr)*1e6),
(int)(Float.valueOf(longitudeStr)*1e6));
// 反Geo搜索
mSearch.reverseGeocode(ptCenter);
} catch (Throwable e) {
Toast.makeText(MainActivity.this, "SearchButtonProcess Error", Toast.LENGTH_LONG).show();
}
4 系統(tǒng)測試結(jié)果
如果被監(jiān)控端和監(jiān)控端都采用Android手機平臺,可以充分利用Android提供的豐富的接口,使系統(tǒng)具有更好的擴展性和實用性。該系統(tǒng)進一步改進還可以實現(xiàn)拍照、截圖、標注和查看軌跡等功能。
5 結(jié)束語
該系統(tǒng)結(jié)構(gòu)簡單、功能明確,軟件界面方便美觀,設計完成后該系統(tǒng)在自己家庭中進行試用。經(jīng)過實際生活中的運用證明,該系統(tǒng)可對家中的老人或者孩子進行位置的實時監(jiān)控,并根據(jù)其位置信息家庭成員可以判斷是否正常,及時打電話確保安全。此外在本系統(tǒng)的設計基礎(chǔ)上,添加LED的顯示模塊也可以應用到城市公交當中去,為乘客向?qū)到y(tǒng)(PIS,Passenger Information System)的建立提供了一些方法和思路。還可以通過司機的Android操作系統(tǒng)手機,實現(xiàn)遠程運輸車輛的全程監(jiān)控,極大地降低成本。
評論