java - Android LocationManager,粗略数据和电池消耗

标签 java android location battery

我只需要有关 Android 上位置的粗略数据,因此获取它时主要考虑的是保持电池电量。我认为这段代码:

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10 * 60 * 1000, 1000, this);

这是正确的策略吗?还是最好检查一下,例如每 10 分钟检查一次新位置并禁用监听器,这似乎更接近 Google 网站上提出的代码,尽管对我来说不太合逻辑?

最佳答案

不要提及提供商名称,而是使用 criteria获得提供者。并且,使用标准来设置您的要求。

Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
final String bestProvider = manager.getBestProvider(criteria, true);

最后,

locationManager.requestLocationUpdates(bestProvider, 0,1000, this);

或者,您可以在完成任务后立即请求单个位置更新或禁用监听器

关于java - Android LocationManager,粗略数据和电池消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19212414/

相关文章:

iOS - 在不使用 CLLocationManager 的情况下确定用户的国家

java - 在 JPQL 中将属性与聚合选择的结果进行比较的正确语法是什么?

java - 无法重写 OnActivityResult 方法

android - 使用安卓 Material 芯片

java - 如何从静态方法调用非静态方法?

pdf - 在 nginx 中按位置提供 pdf 文件

swift - 调用 requestWhenInUseAuthorization 获取位置权限时出错

java - 在if语句中调用StringArray来检查项目名称是否正确

Java - JScrollPane 与 JTable 不一致

java - 由于 svn 切换导致的本地更改