j2me (GPS,基站)

转载请注明出处:http://blog.csdn.net/nairuohe/archive/2010/09/21/5899000.aspx

开发J2me 应用程序时,如果需要获取到你的手机用户身处何处,据我所知,有两种方法。

第一、 通过GPS全球定位系统获取

第二、 使用基站定位方法

下面较详细的介绍这两种方法。

先说GPS定位法。现在全球有24GPS卫星在离地面1万多公里的高空上环绕地球运行,地面上的任意一点都可以同时观测到4颗以上的卫星。手机里的GPS信号接收处理设备接收到来自4颗卫星的信号后,就可计算出手机当前所在的位置。据说这个位置的偏差最多在100左右。不过,在室里等信号接收条件不好的情况下,GPS定位法就无法施展拳脚了。

如果你的应用程序想用这个方法,要先判断你的用户的手机是否有GPS信号接收设备。那如何判断又如何去接收信号呢?

j2me为我们提供了一个可选包jsr179。包中提供了相应的方法。以下是我写的源代码,要装到真机上运行,模拟器上也可以运行,但结果就不是真实的当前坐标了。jsr179的在线帮助文档地址是:http://www.j2megame.org/j2meapi/JSR_179_Location_API_1_0/

GPS定位源码:

再说基站定位法

基站定位的原理是,应用程序先通过读取系统属性获取到与该手机通讯的基站idcellid以及lac(location area code)(具体获取方法后面再说),将cellid lac 传给某个系统,这个系统就可以给出这个基站所在的坐标。在基站密集的地方,手机与基站距离不远,这个坐标就可以当成是手机所在的坐标了,但是在基站稀疏的地方,这个坐标与实际坐标的偏差便会大。可见基站定位的精确度是不及GPS定位法的。

之前提到的某个系统,到底是怎样的一个系统呢?可想而知,这个系统拥有着所有基站的位置信息。运营商如移动、联通肯定有自己的基站信息了,你可以找他们去要,当然是要付费的。Google也拥有这些数据,程序员可以免费使用它们。

相关的资料可以参阅:

http://code.google.com/intl/zh-CN/apis/gears/geolocation_network_protocol.html

基站定位源码:

另外,我还在网上找到了其它的供应者,如http://www.anttna.com/

在应用程序中访问 "http://www.anttna.com/cell2gps/cell2gps.php?lac=" +lac+ "&cellid=" + cellid;就可以得到位置信息,包括经纬度和地址。

最后再说说如何获取cellidlac。据网上资料说,在程序中写上形如

lac = System.getProperty("com.samsung.lac");

cellid = System.getProperty("com.samsung.cellid");

的代码,就可以获取到,不同品牌的手机,传入的属性值会有不同,不过我还没有成功的获取到这两个值,有人说要签了名的midlet才可以获取到手机的这两个属性值,具体如何就再待研究了。大家如有清楚的,也希望不吝赐教。

你可能感兴趣的:(json,Google,OS,F#,C#)