【发布时间】: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 点可以运行服务吗?
【问题讨论】:
标签: android service location locationmanager locationlistener