安卓GPS供应商和GPS图标

9
今天我在测试我的代码时,对GPS提供程序、GPS硬件、GPS图标和精确定位权限产生了一些疑虑。
我观察了三星Galaxy S3和HTC One M8上的代码和GPS图标。发现GPS被禁用了。
mLocationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000 * 10, 0, this, Looper.myLooper());
...
@Override
public void onLocationChanged(Location location) {
    mListenerRef.get().onLocationChanged(location);
}

Galaxy s3 - GPS图标没有出现,onLocationChanged方法也没有触发。(没关系)

Htc one m8 - GPS图标出现、闪烁并且触发了onLocationChanged。(但是怎么实现的?)

此时会有疑问:

  • ACCESS_FINE_LOCATION权限是否允许应用程序在某些设备上覆盖GPS状态?
  • 因此,即使关闭了GPS,应用程序是否仍能接收位置?

然后我在Galaxy s3上启用了GPS

(前2分钟)GPS图标出现(但不闪烁),onLocationChanged方法被触发(但是怎么实现的?)

(2分钟后)GPS图标出现(闪烁),onLocationChanged方法被触发

又会产生疑问:

  • GPS图标的闪烁是什么意思?有其他特殊含义吗?
  • 闪烁表示GPS硬件正在尝试第一次修复吗?
  • 还是闪烁表示提供者正在触发onLocationChanged方法?
3个回答

2

GPS图标闪烁是什么意思?

-> 我希望您知道,GPS供应商在室内无法工作。因此,在室内完全不可能从GPS供应商获取位置更新。在这种情况下,如果用户启用了GPS,则会出现GPS闪烁图标,通知用户正在搜索GPS。

-> 一旦找到GPS,图标就不会再闪烁,您将从GPS供应商获得位置更新。

-> 静止的GPS图标表示Android系统已准备好从GPS供应商发送位置更新。


Htc one m8- GPS图标显示,闪烁并触发onLocationChanged(但是如何触发?)

-> 没有启用位置更新而获得位置更新听起来很奇怪。我不确定您如何确认已获得位置更新。

-> 我建议您检查是否启用了GPS供应商,然后请求位置更新。


1
“Fine_location” 权限将使用户从GPS、WiFi和网络获取更新。因此,即使GPS不可用,仍可以触发 onlocationChange(),因为最近可能已经通过WiFi/网络获取了位置信息。
(引自链接中的引文:http://developer.android.com/guide/topics/location/strategies.html
注意:如果您同时使用 NETWORK_PROVIDER 和 GPS_PROVIDER,则只需要请求 ACCESS_FINE_LOCATION 权限,因为它包括两个提供程序的权限。(ACCESS_COARSE_LOCATION 权限仅包括 NETWORK_PROVIDER 的权限。)
您的手机如何在未启用 GPS 的情况下显示 GPS 图标,我怀疑这是不可能的。

1

在HTC One (M7)上,该应用程序有权限使用GPS,这使得“GPS”成为公平的游戏 -(“GPS”=“GPS模拟器”,AGPS [如果允许],一个使用WiFi和GPS的应用程序[因此位置几乎总是立即可用],当然还有手机的真实硬件GPS/GLONASS/Galileo等)。

HTC用户界面有一个图标用于使用GPS的应用程序(无论电话认为提供商是谁,一些应用程序会检查提供商;他们不接受伪装的位置,例如:大多数订阅应用程序,Google Play商店,缩写GPS;) )。

第二个图标出现在硬件GPS上。它在等待足够的卫星时闪烁。在没有WiFi的室内,配合AGPS,我可以在不到半分钟内锁定。

您可能希望在收到位置信息时检查错误,因为如果您超过100米,您就不知道您在哪里,并且可能没有有效的位置;从另一个(弱)卫星的待处理计算可能足以将误差降至50米以下,在这种情况下,您应该开始接受位置作为有效位置(您的应用程序可能希望记录坐标的误差,然后可以使用表示不确定性的圆形显示位置)。

当进行开发时,您需要确保购买最受欢迎的手机(这样您就有真正的硬件进行测试,并支持最大数量的客户),并且购买几部具有您想要控制Android应用程序的硬件的手机 - 对于您的情况,购买具有不同GPS硬件的手机,对于其他人则可能需要购买几部具有不同相机硬件(或WiFi芯片等)的手机。
在手机制造商的Android版本、用户界面以及其GPS硬件操作方式(以及您安装的其他应用程序,如模拟器)之间,您的程序必须处理许多变量,并允许许多情况(错误返回)以尽可能相同地在多个设备上运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接