我的应用程序请求将“minTime”设置为 2 秒的位置更新。当“移动数据”打开(在手机设置中)并启用 GPS 时,应用程序以每小时 5 到 10 兆字节的速度使用“移动数据”。这在 ICS“数据使用”屏幕中记录为“Android OS”的使用情况。
为了防止这种情况发生,我取消了设置->“定位服务”->“谷歌的定位服务”。这是指辅助 GPS,还是更多?不管是什么,它似乎对我的应用程序的互联网访问没有任何影响。
作为进一步确认是我的应用程序使用 GPS 导致移动数据访问,我观察到状态栏上的互联网数据活动指示器仅在 GPS 指示器存在时才显示活动。
防止这种移动数据使用的唯一方法似乎是关闭“移动数据”,如果没有移动数据的支持,GPS 的准确性似乎几乎一样好。但是,必须关闭移动数据显然不能令人满意。
Manifest 中的唯一权限是“android.permission.ACCESS_FINE_LOCATION”(和“android.permission.WRITE_EXTERNAL_STORAGE”),因此该应用没有使用互联网数据的明确权限。
LocationManager 代码是
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setSpeedRequired(false);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(true);
criteria.setCostAllowed(false);
criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
bestProvider = lm.getBestProvider(criteria, true);
if (bestProvider != null) {
lm.requestLocationUpdates(bestProvider, gpsMinTime, gpsMinDistance, this);
LocationManager.getBestProvider的参考说
如果没有提供者符合标准,则放宽标准……请注意,在此过程中并未删除对货币成本的要求。
然而,尽管将 setCostAllowed 设置为 false,应用程序仍然会产生潜在的货币成本。
我还能做些什么来阻止应用程序使用移动数据?