信标测距与 GPS 跟踪电池使用情况

Beacon Ranging vs GPS tracking battery usage

我正在考虑实施一个基于信标的应用程序,以根据信标放置进行一些位置跟踪。根据我的阅读和理解,信标监控对电池寿命相当无害,但测距肯定会对电池寿命产生更大的影响。

是否有任何规格或 tricks/techniques 可以最大限度地减少测距时的电池消耗?与 GPS 位置跟踪相比,测距时的电池寿命如何?

信标测距比 GPS 跟踪使用的电池少得多,因为它为蓝牙低功耗无线电接收器供电而不是 GPS 接收器。虽然,我没有具体数字,但 GPS 接收器更耗电。

Ranging 和 Monitoring 之间的功耗差异有点模糊,iOS 和 Android 之间则不同。在 iOS 上,除非您拥有特殊的后台权限(只有拥有导航应用程序才能获得),否则只能在前台进行测距。当在前台完成时,测距比屏幕消耗的电量少得多,所以它是微不足道的。

常量在后台(可能在Android和iOS上获得特殊许可) 将以类似于蜂窝待机的速度耗尽电池。 换句话说,预计正在测距的 phone 的电池耗电速度是 [=53= 的两倍] 它只是闲置着,屏幕关闭但蜂窝无线电打开。

一个重要的警告是,仅仅因为您为应用程序启用了测距并将其移至后台,并不意味着它会持续测距。如前所述,iOS 通常会在应用程序离开前台五秒后关闭。同样,使用 Android Beacon Library 的 Android 设备会将背景范围限制为每五分钟仅发生 10 秒。在 Android 上,您必须专门配置它以执行其他操作,而在 iOS 上,您必须提供特殊权限。

在测距时,您可以使用哪些特殊技巧最大限度地减少电池消耗?不要经常这样做。 接受上面的默认值或手动调节范围,这样您只有 10% 或更少的时间范围。

后台监控比恒定范围消耗更少的电量,因为它不会一直进行主动扫描。 iPhone 5+ 和 Android 5+ 设备使用蓝牙芯片中的硬件辅助来触发信标模式而不进行主动扫描。 iPhone 4S 和 Android 4.x 设备会自动限制扫描以保持较低的电池使用率。

Are there any specs or tricks/techniques to minimize battery consumption when ranging? How does battery life when ranging compare to GPS location tracking?

我没有在 iOS 部分工作,但会在 Android 部分分享我的 2 美分。

对于Android,可以使用BackgroundPowerSaver。实例化即可。像 -

...
import org.altbeacon.beacon.powersave.BackgroundPowerSaver;

public class MyApplication extends Application {
    private BackgroundPowerSaver backgroundPowerSaver;

    public void onCreate() {
        super.onCreate();
        backgroundPowerSaver = new BackgroundPowerSaver(this);
    }
}

来源:https://altbeacon.github.io/android-beacon-library/battery_manager.html

幕后使用的值是 -

public static final long DEFAULT_FOREGROUND_SCAN_PERIOD = 1100;
public static final long DEFAULT_FOREGROUND_BETWEEN_SCAN_PERIOD = 0;
public static final long DEFAULT_BACKGROUND_SCAN_PERIOD = 10000;
public static final long DEFAULT_BACKGROUND_BETWEEN_SCAN_PERIOD = 5 * 60 * 1000;

因此,对于应用程序,前台扫描在循环中 运行 持续 1.1 秒,而对于后台,它是 运行 每 5 分钟持续 10 秒。

如果您不想要这些默认值,您也可以在 BeaconManager 中设置自定义扫描时间。

来源:https://github.com/AltBeacon/android-beacon-library/blob/master/src/main/java/org/altbeacon/beacon/BeaconManager.java

然而,根据我所看到的情况,位置跟踪比 BLE 扫描需要更多的电池。因此,除非您需要非常 real-time 的数据,否则请根据需要将位置更新保持在最低限度,并依赖最后知道的位置。详细讨论 - https://developer.android.com/guide/topics/location/strategies.html