android – 跟踪位置时,启用Wi-Fi会消耗多少电量?

我有一个移动应用程序(iOS和
Android),每隔15秒对该位置进行一次ping操作,并在城市地区使用.

从我的理解

>如果禁用Wi-Fi,应用程序将仅使用GPS进行定位
>如果启用了Wi-Fi,该应用程序将使用Wi-Fi和GPS混合或仅使用Wi-Fi

一般来说,Wi-Fi会消耗更多电池,但是如果你跟踪位置,那么它实际上可能会节省电池,因为GPS比Wi-Fi更耗电(我想!)

如果启用(但不连接)Wi-Fi对于电池寿命会更好还是更差?

最佳答案 启用WiFi应该有利于电池寿命,但这完全取决于应用程序的编码方式.如果您看一下
Android’s page on Location Strategies,它会说:’GPS,Cell-ID和Wi-Fi都可以为用户提供线索位置.确定使用和信任哪个是在准确性,速度和电池效率方面取得平衡的问题.

可以从WiFi获取位置(是的,未连接!):

netLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

但这可能不是最准确的解决方案. GPS使用相当大的功率,但显然比WiFi更准确,搜索未连接的WiFi热点也需要电源.换句话说,这是一个非常复杂的问题.

总而言之,最好的解决方案(避免花费所有时间编写此位置信息)只是将Google Play服务集成到您的应用中.然后,您可以指定查找位置(权力或准确性)的优先级,Google会为您排序(请查看this或官方Google文档here).

protected void createLocationRequest() {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(15000);
mLocationRequest.setFastestInterval(5000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}

protected void startLocationUpdates() {
LocationServices.FusedLocationApi.requestLocationUpdates(
    mGoogleApiClient, mLocationRequest, this);
}

@Override
public void onLocationChanged(Location location) {
    mLastLocation = location;   
}

其他优先事项是PRIORITY_BALANCED_POWER_ACCURACY,PRIORITY_LOW_POWER,PRIORITY_NO_POWER.

但是,回到这个问题.如果我们再次查看Android’s page on Location Strategies并向下滚动,它会说:’根据您使用应用程序的环境或所需的准确度,您可以选择仅使用网络位置提供程序或仅使用GPS,而不是两者.仅与其中一项服务进行交互可能会降低电池使用量,从而降低可能的准确成本.

从这一点来看,我们可以得出,使用WiFi和GPS可以提供​​比仅使用一个更精确的位置,但仅使用一个使用的功率比使用两者都要少.但是,这取决于环境.由于您的应用程序专为在城市环境中使用而设计,因此通常更难获取GPS信号(由于建筑物).但是,仅通过WiFi获取位置并不是一直有效(即使在城市环境中).但是,对于您的应用程序,由于它在城市环境中使用,我相信使用WiFi和GPS将是您最省电的选项,因为有时GPS可能无法使用或需要很长时间才能连接(在城市中)环境).请记住,在城市环境中,人们可能会失去GPS(例如,他们会进入商店或进入非常狭窄的小巷).但是如果你有WiFi,你仍然可以拥有自己的位置.另一个可能的选择是尝试仅在首先使用WiFi获取其位置,然后仅在您无法使用WiFi获取其位置时尝试GPS.但这取决于您需要准确的位置.总而言之,只需将其留给Google(如上所示).

在回答您的问题时,这取决于您如何找到用户的位置.我已经建议如何编写您的应用程序代码,但如果您想保留原样,请发布或评论您正在使用的代码查找用户的位置,以便确定哪个选项更有效.

编辑:我已经看到这是关于iOS和Android. iOS提供的对位置确定方式的控制要少得多.您只需插入所需的准确度,Apple即可完成其余工作. Apple将确定获得该位置的最节能方式,并且我上面写的相同内容也适用.无论如何,Apple会提示用户在获取位置时禁用WiFi,因此尝试阻止在iOS上使用WiFi进行定位几乎是不可能的.

点赞