我使用获取当前位置的服务的Android示例,它工作正常,但我想知道我必须做出哪些更改,因此它只在特定时间间隔检查当前位置(例如每2分钟一次,而不是仅仅连续不断。
public class YourService extends Service implements LocationListener {
LocationManager mLocationManager;
public IBinder onBind(Intent intent) {
// This won't be a bound service, so simply return null
Log.v("WEAVER_", "Service_OnBind...");
return null;
}
@Override
public void onCreate() {
// This will be called when your Service is created for the first time
// Just do any operations you need in this method.
Log.v("WEAVER_", "Service_OnCreate...");
mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1,
1, this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy(){
super.onDestroy();
Log.v("WEAVER_","Service_OnDestroy");
mLocationManager.removeUpdates(this);
mLocationManager = null;
}
@Override
public void onLocationChanged(Location location) {
Log.v("WEAVER_","Service_Location Change");
String msg = "New Latitude: " + location.getLatitude()
+ "New Longitude: " + location.getLongitude();
Toast.makeText(getBaseContext(), msg, Toast.LENGTH_LONG).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
}
答案 0 :(得分:0)
我不知道您对此的确切意图,但是您可能需要考虑使用IntentService而不是Service。 IntentService将在一个单独的线程中运行,而不是在主线程中运行,也可以启动它,意图服务将执行您打算执行的操作,即获取位置,然后完成它。
然后在持续时间内有几种方法可以做到这一点,但我建议你看看: https://developer.android.com/training/scheduling/alarms.html
如果您选择IntentService,只需在AlarmManager触发时调用(某些上下文).startService。 另外,您可以将服务始终激活(如果您在onStartCommand中返回START_STICKY)并在那里进行警报。
答案 1 :(得分:0)
我能够做的是每隔一段时间检查一次位置。这使用了GoogleAPIClient,因此如果您希望这项工作,则需要将其添加到项目中。此解决方案还需要您使用LocationRequest和FusedLocationProviderApi。
像这样声明GoogleAPIClient:
/home/monica/neo4j-community-3.0.1/data/databases/new_db
然后,将locationRequest添加到fusedLocation,如:
sudo chown -R neo4j:adm /home/monica/neo4j-community-3.0.1/data/databases/new_db
希望这会有所帮助。如果你愿意,我也可以告诉你如何使用timertask
做这样的事情