新闻中心

EEPW首页 > 汽车电子 > 设计应用 > 基于Android的位置实时监控系统的设计与实现

基于Android的位置实时监控系统的设计与实现

作者:张维文 孙耀杰 李利娟时间:2015-04-23来源:电子产品世界收藏

  3.3 程序实现

本文引用地址:http://www.eepw.com.cn/article/273085.htm

  一是接收发送过来的经纬度信息。本设计为直观显示经纬度信息,在加载地图的同时,显示在“短信内容:”部分。其接收功能实现代码如下:

  /**
  * 监听收到的短信
  */
  private final class SmsObserver extends ContentObserver {
  public SmsObserver(Handler handler) {
  super(handler);
  }
  public void onChange(boolean selfChange) {
  ContentResolver resolver = getContentResolver();
  //查到发出的短信
  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);
  }
  }
  }

  二是实现电子地图上的位置显示。仅仅有经纬度信息,监控者无法直观地了解被监控对象的方位。所以在监控端软件上,加载百度地图实现被监控对象的实时监控,运行结果如图8所示。其实现代码如下:

  /**
  * 对收到的地点发起搜索并显示在地图上
  *
  * @param v
  */
  private void SearchButtonProcess(String smsContent) {
  try {
  // 逗号分隔过滤得到经纬度字符串
  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 系统测试结果

  如果被监控端和监控端都采用手机平台,可以充分利用提供的丰富的接口,使系统具有更好的扩展性和实用性。该系统进一步改进还可以实现拍照、截图、标注和查看轨迹等功能。

  5 结束语

  该系统结构简单、功能明确,软件界面方便美观,设计完成后该系统在自己家庭中进行试用。经过实际生活中的运用证明,该系统可对家中的老人或者孩子进行位置的实时监控,并根据其位置信息家庭成员可以判断是否正常,及时打电话确保安全。此外在本系统的设计基础上,添加LED的显示模块也可以应用到城市公交当中去,为乘客向导系统(PIS,Passenger Information System)的建立提供了一些方法和思路。还可以通过司机的操作系统手机,实现远程运输车辆的全程监控,极大地降低成本。


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭