Android FindMyPhone功能模块的实现

本文档详细介绍了如何实现手机定位功能,包括使用国际标准WGS84进行定位避免坐标系转换问题,采用定时上传经纬度及百度推送接收操作指令等关键技术。同时探讨了保持后台服务运行的方法以及处理来自服务器的指令。

类似iPhone手机上面“查找我的iPhone”

1. 手机定位

需要考虑到国内和国外,国内使用百度地图,国外使用google地图,两种地图,属于不同的坐标系。

手机这边为了避免不同坐标系的问题,直接使用国际标准(WGS84),即:通过手机设备的GPS和网络network两种定位方式得到经纬度。

不同坐标系转化的问题,交给服务器伤头脑吧,网友有提供方法:http://blog.youkuaiyun.com/ma969070578/article/details/41013547

根据百度定位的sdk相关文档知道,它定位实现的方式考虑到GPS、WIFI和基站,方案更加成熟、完善和准确。

基站定位的实现方式是得到周围的三个基站信息(基站的lac cid 、信号强度等),计算出手机设备位于三角形的哪一个点。太复杂了,暂时不考虑这种实现方式。

当然也可以直接使用百度的sdk来完整定位功能,但是被排除掉了,因为baidu定位给出的坐标值属于百度自己的坐标系。后面在考虑使用不同地图显示的时候,就需要考虑各个坐标系之间的转化问题。

虽然网上有网友提供各个坐标系之间的转化工具类,但是其它资料上说,该各个坐标系的偏移算法都是保密的,这里很怀疑这个工具类的准确性。也简单测试了一下,有误差,不过误差不大。

通过百度定位SDK,暂时不再考虑范围。

2. 定时上传手机的经纬度

建立一个定时器,准备用alarmManager来实现。时间频率计划三分钟。

3.通过百度推送接受来自服务器的操作指令

将百度推送的SDK集成到项目中,可以完成用户在服务器网页上对手机发送的操作指令。

4.判断该经纬度是否处于国外

网上有一位网友,很牛逼的给出了方案:http://www.cnblogs.com/Aimeast/archive/2012/08/09/2629614.html

觉得使用第二种比较好一点,当然这一步的判断是在服务器上执行的。

还有另外一种方法:通过百度提供的反地理编码功能,其中可以得到country的值,判断是否==中国

5.保证后台一直处于运行状态

监听开机和网络状态发生变化的广播,当接收到这两个广播的时候,调用启动service的方法,已保证服务一直处于启动状态

防止用户手动的在设置中关闭该服务,计划请系统组的同事帮忙,将其隐藏。不确定是否能够做。

6.处理来自服务器的指令

指令的信息来自服务器的推送。

根据提前商定好的指令标识,设定具体的操作

其中响铃,可以自己实现、解锁、锁定和抹除所有数据,就需要系统组的同事协助。

 

转载于:https://www.cnblogs.com/zhou-guobao/p/4686426.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值