我想连续跟踪用户位置作为android中的后台服务,我可以使用后台服务和广播接收器来实现它,但无法弄清楚如何根据可用性在网络和gps提供商之间切换。
背景服务.java
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mylistner = new NewLocationListener(getBaseContext());
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setCostAllowed(true);
LocationManager locManager = (LocationManager) getBaseContext()
.getSystemService(Context.LOCATION_SERVICE);
String bestProvider = locManager.getBestProvider(criteria, false);
Toast.makeText(getBaseContext(), "Best Provider "+bestProvider, Toast.LENGTH_SHORT).show();
locManager.requestLocationUpdates(bestProvider, 1000, 5, mylistner);
Toast.makeText(getBaseContext(), "Successfully Called", Toast.LENGTH_SHORT).show();
return START_STICKY;
}
最初 bestProvider 将有 gps 或网络,但如果它最初是 gps,然后如果用户关闭 gps,它应该使用网络给我协调。同样,如果用户打开 gps,则位置提供者应该来自 gps。
在服务上有 onProviderEnabled 和 onProviderDisabled 方法如何使用它们
作为堆栈溢出中许多类似问题的解决方案,我不想从一开始就同时发送网络和 gps 提供商,我想根据可用性进行切换。在服务中是否可以实现。提前致谢