我正在考虑实现一个基于信标的应用程序,以基于信标位置进行一些位置跟踪。根据我所读和理解的内容,信标监视对电池寿命影响较小,但测距肯定会更大程度地消耗电池寿命。
在进行测距时,有没有任何规格或技巧/技术可以最小化电池消耗?与GPS位置跟踪相比,测距时的电池寿命如何?
在进行测距时,有没有任何规格或技巧/技术可以最小化电池消耗?与GPS位置跟踪相比,测距时的电池寿命如何?
监测和测距之间的功耗差异有点模糊,并且在iOS和Android上不同。在iOS上,除非您拥有导航应用程序,否则只允许在前台进行测距。在前台进行测距时,其功耗远低于屏幕,因此可以忽略不计。
在后台进行持续测距(在Android上可能,在iOS上需要特殊权限)将以类似于蜂窝待机的速率耗尽电池电量。换句话说,预计正在进行测距的手机的电池将耗费的时间是处于闲置状态,屏幕关闭但蜂窝网络开启的手机的两倍。
重要提示是,仅仅因为您为应用启用了测距并将其移至后台,并不意味着它会持续进行测距。如上所述,在应用离开前台五秒钟后,iOS 通常会关闭测距。类似地,使用 Android Beacon Library 的 Android 设备将限制后台测距,每五分钟只会发生 10 秒钟。在 Android 上,您必须专门配置它以执行其他操作,在 iOS 上,您必须提供特殊权限。...
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中设置自定义扫描时间。
然而,根据我所看到的,位置跟踪比BLE扫描消耗更多的电池。因此,请尽可能将位置更新保持最少,并依赖于上次已知的位置,除非您需要非常实时的数据。详细讨论 - https://developer.android.com/guide/topics/location/strategies.html