启用Wi-Fi会在跟踪位置时消耗更多还是更少的电量?

4
我有一个移动应用程序(iOS和Android),每隔约15秒会定位一次,并在城市地区使用。
据我了解,
  • 如果禁用Wi-Fi,则应用程序仅使用GPS定位
  • 如果启用Wi-Fi,则应用程序将使用Wi-Fi和GPS的混合或仅使用Wi-Fi
通常,开启Wi-Fi会更耗电,但是如果您正在跟踪位置,则可能会节省电池寿命,因为GPS比Wi-Fi更耗电(我想!)
是否有数据表明启用(但不连接到)Wi-Fi对电池寿命更好还是更差?

你能否在每种模式下运行应用程序一个小时左右并检查电池状态? - TDG
@TDG - 是的,如果我找不到其他选择,这就是我的备选计划。 - Robert
这个问题可能应该迁移到http://android.stackexchange.com/,因为它不是一个编程问题。 - TylerH
http://android.stackexchange.com/questions/476/what-can-i-do-to-increase-battery-life-on-my-android-device/27742#27742 - Android Surya
这不仅仅是一个 Android 的问题 - 它也适用于 iOS。 - Robert
5个回答

2
启用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进行定位几乎是不可能的。

0

我没有关于这个主题的任何硬核数据,也怀疑任何人都不会有任何具体的数字,但从理论上讲,Wi-Fi将远比仅使用GPS更好。该理论的工作原理如下:为了让GPS知道某人的位置,它需要从已知位置的3个不同对象接收信息并使用三角测量来确定其位置,而Wi-Fi只需要进行一次呼叫,到最近的互联网中继器,该中继器具有已知的位置和已知的路径。为了确保准确性,通常会多次执行每个位置请求。因此,额外的呼叫会累积起来,Wi-Fi将更有效率。


0

每当您有网络访问时,请使用WiFi,因为它比GPS使用更少的电池(较短的距离,较低的功率)。当您没有网络访问时,请关闭WiFi,否则它将继续寻找可以使用的WiFi网络(这会耗尽电池)。


0

与 WiFi 相比,GPS 的功耗非常高。大多数手机在 GPS 模式下的电池寿命不到 10 小时,而在 WiFi 模式下可以持续一天以上。


你有这方面的数据吗?我只找到了来自Android的这个链接,它表明连接Wi-Fi时会消耗更多的电力,但不清楚在“位置模式”下需要多少电力。此外,“GPS搜索”是一个需要很长时间才能开始的活动,但一旦有了GPS信号,我想电池消耗就会降低很多。http://android.stackexchange.com/questions/476/what-can-i-do-to-increase-battery-life-on-my-android-device/27742#27742 - Robert

0

WiFi不仅仅用于定位或上网,它还有多种用途。如果你使用的是比Marshmallow更旧的操作系统版本,你无法在WiFi开启时禁用所有功能。

从Marshmallow开始,你可以为特定用途(如仅限定位)启用WiFi,这样它将比GPS消耗更少的电量。

而在之前的版本中,GPS在功耗方面处于优势地位。 https://android.stackexchange.com/a/127571/116948


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