2012-11-26 68 views
0

使用位置API获取位置与Telephony API的位置有什么区别?使用位置API或电话API获取设备位置

以前,我在位置服务未启用时询问了有关获取位置的问题。见:Retrieving GPS coordinates when location services are not enabled

显然,使用电话API,http://developer.android.com/reference/android/telephony/CellLocation.html这是可能的。这将返回一个我认为是基站ID的整数?

我正确吗?有什么不同?

在此先感谢

回答

1

CellLocation是一个抽象基类,它不提供任何种类的获取位置方法。相反,您必须使用CdmaCellLocation或GsmCellLocation。

CdmaCellLocation提供了getBaseStationId,这就是你推测所说的返回一个int给基站ID的东西。 CdmaCellLocation还提供了getBaseStationLatitude和getBaseStationLongitude,这应该正是您在CDMA设备上所需的。但是,GsmCellLocation不提供这样的方法。您需要使用CID和LAC以及openbmap或opencellid等服务将CID/LAC转换为经度和纬度。

因此,简而言之,位置API为您提供了一个直接庄园的位置。 Telephony API为您提供有关小区连接的信息(如果存在),并且您必须为GSM和CDMA提供单独的实施方案,并且如果设备具有GPS,但没有电话,则已将用户搞砸了。另外,我想指出您之前得到的回复:https://stackoverflow.com/a/13491028/198480

0

位置API将使用GPS,AGPS或GLONASS检索的位置,但在电话API,因为该位置是由运营商返回的位置给的是不是作为一个GPS定位的精确(移动运营商) 。 Telephony api使用三角测量计算位置。

4

从位置API或电话API获取位置的基本区别在于获取位置的方法。

位置API根据您的GPS网络返回位置。您的Android设备请求其与GPS网络中的卫星的距离,并绘制沿着所描述的球体的边界的交叉点,而电话服务API根据您的小区ID(您获得的响应getCellLocation() )。您可能已经知道您的手机几乎总是连接到最近的手机塔。每个小区塔的确切位置由其运营商所知,并作为位置区域码(LAC)内的小区ID分配给塔。您的手机存储您连接的每个塔楼的小区识别号和LAC,从而粗略了解您的位置。

欲了解更多信息,你可以访问this链接。