Я хочу отслеживать постоянное местоположение пользователя в качестве фоновой службы в android, я могу добиться этого с помощью фоновых служб и широковещательного приемника, но не в состоянии понять, как переключаться между сети и gps в зависимости от доступности.Переключение между сетью и провайдером GPS при обслуживании не в действии
backgroundService.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 от начала я хотите переключиться в соответствии с доступностью. - это возможно в обслуживании. Заранее спасибо
спасибо за ваше время, но хочу знать, здесь также вы используете сеть и GPS обеспечивают в то же время не могу это сделать по одному , –
Когда я вызываю gtLocation() независимо от того, какая сеть доступна, я использую ее, иначе я использую 3G/... вы можете изменить ее, например, с помощью параметра при вызове функции (boolean useNetwork), например, просто выполните команду if (useNetwork)/else? –