0

使用 Location API 和 Telephony API 获取位置有什么区别?

以前,我问过一个关于在未启用位置服务时获取位置的问题。请参阅:未启用定位服务时检索 GPS 坐标

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

我对么?有什么不同?

4

3 回答 3

4

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

Location API根据您的 GPS 网络返回位置。您的 Android 设备请求其与 GPS 网络中的卫星的距离,并沿所述球体的边界绘制交点,而Telephony API根据您的小区 ID(您为响应 getCellLocation() 而获得的整数)定位您。您可能已经知道您的手机几乎总是连接到最近的手机信号塔。每个蜂窝塔的确切位置为其运营商所知,并作为位置区域代码 (LAC) 内的蜂窝 ID 分配给该塔。您的手机会存储您连接的每个塔的 Cell ID 和 LAC,从而大致了解您的位置。

有关更多信息,您可以访问链接。

于 2012-11-26T06:32:11.890 回答
1

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

CdmaCellLocation 提供 getBaseStationId,您大概称之为返回基站 id 的 int 的东西。CdmaCellLocation 还提供 getBaseStationLatitude 和 getBaseStationLongitude,这应该正是您在 CDMA 设备上想要的。但是,GsmCellLocation 不提供此类方法。您需要使用 CID 和 LAC 以及诸如 openbmap 或 opencellid 之类的服务来将 CID/LAC 转换为纬度和经度。

因此,简而言之,Location API 以直截了当的方式为您提供位置。Telephony API 为您提供有关手机连接的信息(如果存在),您必须为 GSM 和 CDMA 提供单独的实现,如果设备有 GPS 但没有电话,您就搞砸了用户。另外,我想指出您之前收到的回复:https ://stackoverflow.com/a/13491028/198480

于 2012-11-26T06:24:26.997 回答
0

Location Api 将使用 gps、agps 或 glonass 来检索位置,但在电话 api 中,给出的位置不如 gps 位置精确,因为该位置是由运营商(移动运营商)返回的。Telephony api 使用三角测量计算位置。

于 2012-11-26T06:10:01.050 回答