【发布时间】:2012-01-15 14:17:43
【问题描述】:
Android 中的LocationManager 可以在特定的Criteria 上选择LocationProviders。 Criteria 类有一个方法 isCostAllowed 和 setCostAllowed。哪个 LocationProvider 花费了用户的钱?它只是网络位置提供者,因为它创建了网络流量,还是只是因为未来的一些可能性而实施?
【问题讨论】:
Android 中的LocationManager 可以在特定的Criteria 上选择LocationProviders。 Criteria 类有一个方法 isCostAllowed 和 setCostAllowed。哪个 LocationProvider 花费了用户的钱?它只是网络位置提供者,因为它创建了网络流量,还是只是因为未来的一些可能性而实施?
【问题讨论】:
一个可能需要花钱的例子是位置提供商,它访问手机信号塔位置或 wifi 接入点位置的远程数据库。这些提供商将使用您的部分数据限额。
我不认为有任何位置提供商本质上要花钱 - 成本在于使用您的数据限额。
【讨论】:
GPS 本身不需要任何费用,因为您的智能手机中有一个内置接收器。网络位置将花费您的钱,因为需要从远程数据库进行往返查找。本质上,与使用网络位置进行修复相关的数据成本。
【讨论】:
我只是运行一个简单的测试来确认 NetworkProvider 是否被认为是花钱的提供者:
LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setCostAllowed(false);
String provider = manager.getBestProvider(criteria, false);
Log.d(getClass().getSimpleName(), "Best Provider is: " + provider);
如果我将 cost allowed 设置为 false 或 true,结果没有区别:
08-06 14:52:25.375: DEBUG/LocationPlaygroundActivity(30782): Best Provider is: network
08-06 14:52:39.860: DEBUG/LocationPlaygroundActivity(30848): Best Provider is: network
最好的供应商总是网络。目前,似乎没有任何提供商会花费用户的钱。也许这只是为了未来的位置提供者的可能性而内置的。
【讨论】: