基于A(yíng)ndroid的位置實(shí)時(shí)監控系統的設計與實(shí)現
3.3 程序實(shí)現
本文引用地址:http://dyxdggzs.com/article/273085.htm一是接收發(fā)送過(guò)來(lái)的經(jīng)緯度信息。本設計為直觀(guān)顯示經(jīng)緯度信息,在加載地圖的同時(shí),顯示在“短信內容:”部分。其接收功能實(shí)現代碼如下:
/**
* 監聽(tīng)收到的短信
*/
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("此處為被監控對象的手機號碼")) {
String body = cursor.getString(1);
smsContent.setText(body);
SearchButtonProcess(body);
}
}
}
二是實(shí)現電子地圖上的位置顯示。僅僅有經(jīng)緯度信息,監控者無(wú)法直觀(guān)地了解被監控對象的方位。所以在監控端軟件上,加載百度地圖實(shí)現被監控對象的實(shí)時(shí)監控,運行結果如圖8所示。其實(shí)現代碼如下:
/**
* 對收到的地點(diǎn)發(fā)起搜索并顯示在地圖上
*
* @param v
*/
private void SearchButtonProcess(String smsContent) {
try {
// 逗號分隔過(guò)濾得到經(jīng)緯度字符串
String[] point = smsContent.split(",");
// 獲取到的字符串需要轉化成long,然后long值需要乘1e6后轉化為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 系統測試結果
如果被監控端和監控端都采用Android手機平臺,可以充分利用Android提供的豐富的接口,使系統具有更好的擴展性和實(shí)用性。該系統進(jìn)一步改進(jìn)還可以實(shí)現拍照、截圖、標注和查看軌跡等功能。
5 結束語(yǔ)
該系統結構簡(jiǎn)單、功能明確,軟件界面方便美觀(guān),設計完成后該系統在自己家庭中進(jìn)行試用。經(jīng)過(guò)實(shí)際生活中的運用證明,該系統可對家中的老人或者孩子進(jìn)行位置的實(shí)時(shí)監控,并根據其位置信息家庭成員可以判斷是否正常,及時(shí)打電話(huà)確保安全。此外在本系統的設計基礎上,添加LED的顯示模塊也可以應用到城市公交當中去,為乘客向導系統(PIS,Passenger Information System)的建立提供了一些方法和思路。還可以通過(guò)司機的Android操作系統手機,實(shí)現遠程運輸車(chē)輛的全程監控,極大地降低成本。
評論