Android LocationListener 一段时间
Posted
技术标签:
【中文标题】Android LocationListener 一段时间【英文标题】:Android LocationListener for a certain time 【发布时间】:2014-06-26 23:27:28 【问题描述】:我想收集应用用户的位置。为此,我创建了一个Service
,如下所示。
public class UpdateLocationService extends Service implements LocationListener
@Override
public IBinder onBind(Intent arg0)
// TODO Auto-generated method stub
return null;
@Override
public void onStart(Intent intent, int startid)
Log.d("Service", "UpdateLocationService started");
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String providerFine = locationManager.getBestProvider(criteria, true);
if (providerFine != null)
locationManager.requestLocationUpdates(providerFine,
Constant.minLocationUpdateTime,
Constant.minLocationUpdateDistance, this);
@Override
public void onLocationChanged(Location loc)
// TODO Auto-generated method stub
Log.d("LocationListener", "onLocationChanged");
// update Location through web-service call
@Override
public void onProviderDisabled(String arg0)
// TODO Auto-generated method stub
@Override
public void onProviderEnabled(String provider)
// TODO Auto-generated method stub
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
// TODO Auto-generated method stub
.......................
我已经在用户登录和启动时启动了该服务。我创建了一个 BroadcastReceiver 以便它在启动时启动。所有功能都运行良好。现在需要将位置数据收集限制在每天上午 9 点到下午 6 点。实现该功能的最佳方法是保持我的最低功耗。每天早上 9 点到下午 6 点可以运行服务吗?
【问题讨论】:
【参考方案1】:有几种方法。
您可以在服务中进行检查,检查时间并在这些时间内注册位置更新,并在之后取消注册。如您所说,这将提供更好的电池消耗。
或者根据上下文,您可以使用警报管理器并计算您希望启动服务的时间,您可以在 android 启动/登录时执行此操作。以See here 为例。
另外,请考虑使用 'location poller' library,因为它可以有效地使用 WakeLocks,因此它可能满足您的需求,内置电池感知功能。
【讨论】:
我已经完成了这个例子。但是如何在下午 6 点之后停止服务? 使用警报管理器在那个时候触发一些代码。然后从那里注销位置更新 我使用了代码。但它只是在执行时启动服务,尽管它设置为 12-13 小时后。if (hourOfDay >= 9 && hourOfDay以上是关于Android LocationListener 一段时间的主要内容,如果未能解决你的问题,请参考以下文章
无法在 android 中强制转换为 android.location.LocationListener
带有 locationListener 回调的 Android 服务
MapsActivity 无法转换为 com.google.android.gms.location.LocationListener