启用WiFi应该有助于延长电池寿命,但这完全取决于您的应用程序如何编码。如果您查看
Android关于位置策略的页面,它说:“GPS、Cell-ID和Wi-Fi都可以提供用户位置的线索。确定使用哪个并信任它是准确性、速度和
电池效率方面的权衡问题。”
从仅WiFi(是的,未连接!)获取位置是可能的:
netLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)
但这可能不是最准确的解决方案。GPS 使用相当多的电力,但显然比 WiFi 更准确,搜索未连接的 WiFi 热点也需要电力。换句话说,这是一个非常复杂的问题。
总的来说,最好的解决方案(避免花费所有时间编写此位置信息)就是将 Google Play 服务集成到您的应用程序中。然后,您可以指定查找位置的优先级(功率或准确性),Google 将为您排序(查看
this 或官方谷歌文档
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关于位置策略的页面并向下滚动,它说:“根据应用程序使用的环境或所需的准确度级别,您可能选择仅使用网络位置提供程序或仅使用GPS,而不是两者都使用。只与其中一个服务交互可以降低电池使用率,但可能会牺牲准确度。”
从这里,我们可以得出结论,
使用WiFi和GPS两者结合使用比仅使用其中一种更准确,但是仅使用其中一种会使用更少的电量。然而,这取决于环境。由于您的应用程序设计用于城市环境中使用,因此往往很难获得GPS信号(由于建筑物)。但仅使用WiFi获取位置并不总是可行的(即使在城市环境中)。然而,对于您的应用程序,由于它在城市环境中使用,我认为使用
WiFi和GPS将是最节能的选择,因为
有时GPS可能无法使用或连接时间较长(在城市环境中)。请记住,在城市环境中,人们可能会失去GPS(例如,他们进入商店或狭窄的小巷中)。但如果您有WiFi,您就有希望仍然能够获得他们的位置。另一个可能的选择是首先仅使用WiFi尝试获取其位置,然后仅在无法使用WiFi获取其位置时尝试使用GPS。但这取决于您需要多么准确的位置。总之,让Google来处理它(如上所示)。
回答你的问题,这取决于你如何获取用户的位置。我已经建议你如何编写你的应用程序,但如果你想保持现状,请发布或评论你正在使用的代码以查明哪种选项更有效。
编辑:我看到这涉及到iOS和Android。iOS提供的控制位置确定方式的能力要少得多。你只需插入所需的精度,苹果就会完成其余工作。苹果将确定获取位置最节能的方式,并且上述相同的内容适用。无论如何,当获取位置时,苹果会提示用户打开WiFi,因此在iOS上防止使用WiFi进行定位几乎是不可能的。