Android 什么';使用LocationClient定期获取更新的最节省电池电量的方法是什么?
我正在考虑每小时使用两个单独的警报来收集用户的位置数据,一个警报每59分钟发出一次,用于“连接”客户端,另一个警报用于实际获取位置,然后断开客户端 在电池寿命方面,如果让用户的位置成为应用程序的主要消耗,还有什么需要考虑的吗?或者,有没有一种不同的方法来设置两个警报?我最初只有一个警报,但执行(!mLocationClient.isConnected)然后执行连接检查并没有给客户端足够的时间进行连接 谢谢你的洞察力 这两个警报会发出类似这样的声音:Android 什么';使用LocationClient定期获取更新的最节省电池电量的方法是什么?,android,timer,geolocation,google-play-services,Android,Timer,Geolocation,Google Play Services,我正在考虑每小时使用两个单独的警报来收集用户的位置数据,一个警报每59分钟发出一次,用于“连接”客户端,另一个警报用于实际获取位置,然后断开客户端 在电池寿命方面,如果让用户的位置成为应用程序的主要消耗,还有什么需要考虑的吗?或者,有没有一种不同的方法来设置两个警报?我最初只有一个警报,但执行(!mLocationClient.isConnected)然后执行连接检查并没有给客户端足够的时间进行连接 谢谢你的洞察力 这两个警报会发出类似这样的声音: private int PERIODIC_UP
private int PERIODIC_UPDATE = 60000*60; //gets location and disconnects every hour
private int PERIODIC_RECONNECTION_UPDATE = 60000*59; //connects 1 minute before getLocation call
Timer toReconnect = new Timer();
toReconnect.schedule(new TimerTask() {
@Override
public void run() {
mLocationClient.connect();
}
}, 5000, PERIODIC_RECONNECTION_UPDATE);
Timer theTimer = new Timer();
theTimer.schedule(new TimerTask(){
@Override
public void run() {
try {
if(!mLocationClient.isConnected()) {
mLocationClient.connect();
//This will not have much affect because cannot so quickly, will remove.
}
Location theLocation = mLocationClient.getLastLocation();
if(theLocation!=null) {
checkPostLocation(theLocation);
mLocationClient.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
}}, 5000, PERIODIC_UPDATE);
你真的需要跟踪用户吗 如果只是关于用户界面,那么使用getLastKnownLocation(被动_提供者),你应该得到一些半精确的信息,假设他们在其他地方使用手机上的定位服务 如果您需要实际对用户进行三角测量,请意识到不同的提供商使用不同的电池。被动<网络
- 优先级\平衡\功率\精度-与setPriority(int)一起使用以请求“块”级精度。块级精度被认为是大约100米的精度。使用这样的粗略精度通常会消耗更少的功率
- 优先级\高精度-与setPriority(int)一起使用以请求可用的最精确位置。这将返回可用的最佳位置(以及最大的能量消耗潜力)
- PRIORITY_NO_POWER-与setPriority(int)一起使用,以在零额外功耗的情况下要求尽可能高的精度。除非其他客户端请求位置更新,否则不会返回任何位置。在这种情况下,此请求将充当这些位置的被动侦听器