, что это лучший способ получить местоположение пользователя после каждой две минуты даже ваше приложение будет убито заранее спасибоAndroid Как получить местоположение пользователя непрерывно, даже ваше приложение убито
ответ
Вы можете выбрать использовать Background Service для ваших Мероприятия.
В рамках этой службы вы устанавливаете свой сервис для опроса своего местоположения в выбранный вами промежуток времени.
После этого вы можете использовать LocalBroadcastManager, чтобы транслировать результаты ваших интересов, чтобы вернуть полезные результаты в ваше приложение.
Надеюсь, это поможет!
Cheers! Счастливое программирование!
, но когда приложение будет убито или перезагрузка устройства, прекратите службу, пожалуйста, скажите мне другой способ. –
Вы можете добавить приемник вещания для получения полной загрузки – Ameer
@NisarAhmad http://developer.android.com/ reference/android/app/Service.html # START_STICKY – sihao
Используйте код Started service для запуска кода в фоновом режиме, даже когда приложение будет убито. Используйте код Timer и Timer task, чтобы выполнить код сбора местоположения через определенные промежутки времени.
пример Таймер
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {}
}, 0, 1000);
вы можете отправить мне образец –
. Вы можете найти образцы по предоставленным ссылкам и попробуйте найти ответы на конкретные проблемы, с которыми вы сталкиваетесь, пытаясь реализовать это самостоятельно. –
Я добавил пример для таймера. Как использовать различные типы сервисов - это ссылка на начальную службу. Я надеюсь, что это ответит на ваш первоначальный вопрос –
Помимо того, что предложили J Уитфилд и sihao, Вы можете также сделать свой сервис как сервис Start (не Намерение Service). Затем в onStartCommand службы верните START_STICKY.
Вы также можете попробовать запустить службу в отдельном процессе, чтобы она не была убита, даже если ваше приложение будет убито.
Следуйте эти шаги
1) Написать Данный код в файле манифест file.Create широковещательного приемника и обслуживание.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<receiver
android:name=".activity.Timerservice"
android:process=":remote" >
</receiver>
<service
android:name=".model.GPSTracker"
android:exported="false" />
2) в основной деятельности создать на method.for продолжает фиксировать интервал времени получить текущий лат длиной
public void scheduleAlarm() {
// Construct an intent that will execute the AlarmReceiver
Intent intent = new Intent(getApplicationContext(), Timerservice.class);
// Create a PendingIntent to be triggered when the alarm goes off
pIntent = PendingIntent.getBroadcast(this, Timerservice.REQUEST_CODE,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Setup periodic alarm every 5 seconds
long firstMillis = System.currentTimeMillis(); // alarm is set right away
alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
// First parameter is the type: ELAPSED_REALTIME, ELAPSED_REALTIME_WAKEUP, RTC_WAKEUP
// Interval can be INTERVAL_FIFTEEN_MINUTES, INTERVAL_HALF_HOUR, INTERVAL_HOUR, INTERVAL_DAY
alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, firstMillis,
60000, pIntent);
}
3) TimeService.java (Broadcast класс приемника)
public class Timerservice extends BroadcastReceiver {
public static final int REQUEST_CODE = 12345;
Context mContext;
public static final String ACTION = "com.codepath.example.servicesdemo.alarm";
// Triggered by the Alarm periodically (starts the service to run task)
@Override
public void onReceive(Context context, Intent intent) {
final LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
Intent i1 = new Intent(context, AlertDialogActivity.class);
i1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i1);
// buildAlertMessageNoGps();
}else{
Intent i = new Intent(context, GPSTracker.class);
context.startService(i);
}
}
}
4) GPSTracker.class
public class GPSTracker extends Service implements LocationListener {
Context mContext;
// flag for GPS status
boolean isGPSEnabled = false;
// flag for network status
boolean isNetworkEnabled = false;
boolean canGetLocation = false;
Location location; // location
double latitude; // latitude
double longitude; // longitude
double Lastlatitude; // latitude
double Lastlongitude; // longitude
double totalDistance, Totalkm;
SessionManagement sessionManagement;
// The minimum distance to change Updates in meters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
// The minimum time between updates in milliseconds
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
// Declaring a Location Manager
protected LocationManager locationManager;
public GPSTracker() {
//super("GPS");
}
public GPSTracker(Context mContext) {
//super("");
this.mContext = mContext;
getLocation();
}
public Location getLocation() {
try {
locationManager = (LocationManager) mContext
.getSystemService(LOCATION_SERVICE);
Criteria locationCritera = new Criteria();
String providerName = locationManager.getBestProvider(locationCritera,
true);
if (providerName != null)
location = locationManager.getLastKnownLocation(providerName);
GPSTracker locationListener = new GPSTracker();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, locationListener);
// getting GPS status
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
// getting network status
isNetworkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
// no network provider is enabled
} else {
this.canGetLocation = true;
// First get location from Network Provider
if (isNetworkEnabled) {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("Network", "Network");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
Log.i("location", +latitude + " " + longitude);
// Toast.makeText(getApplicationContext(),"LatLang is" +latitude+" "+longitude,Toast.LENGTH_LONG).show();
}
}
}
// if GPS Enabled get lat/long using GPS Services
if (isGPSEnabled) {
if (location == null) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS Enabled", "GPS Enabled");
if (locationManager != null) {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return location;
}
public void stopUsingGPS() {
if (locationManager != null) {
locationManager.removeUpdates(GPSTracker.this);
}
}
public double getLatitude() {
if (location != null) {
latitude = location.getLatitude();
}
// return latitude
return latitude;
}
public double getLongitude() {
if (location != null) {
longitude = location.getLongitude();
}
// return longitude
return longitude;
}
public boolean canGetLocation() {
return this.canGetLocation;
}
@Override
public void onLocationChanged(Location location) {
if (location != null) {
this.location = location;
getLatitude();
getLongitude();
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
}
@Override
public void onDestroy() {
super.onDestroy();
}
- 1. , даже если приложение закрыто (убито)
- 2. Держите Android-хронометр активным даже после того, как приложение убито
- 3. Как экземпляр обработчика запускает runnable, даже приложение убито в android?
- 4. Как проверить, что ваше приложение было убито и перезапущено?
- 5. Получить текущее местоположение пользователя android
- 6. Обновление местоположения, даже когда приложение убито/завершено
- 7. Получить местоположение пользователя на Android
- 8. Android geofencing, когда приложение убито
- 9. Мониторинг звонков, даже если приложение убито
- 10. Звук продолжает играть, даже когда приложение убито
- 11. BroadcastReceiver вызывается, даже если приложение убито
- 12. Как получить событие, когда приложение будет убито?
- 13. Как получить местоположение пользователя
- 14. Как получать контент даже после того, как приложение будет убито?
- 15. Как отслеживать местоположение пользователя, когда приложение находится в состоянии «убито» в ios
- 16. Как получить текущее местоположение пользователя в Android
- 17. Android: обнаружит, когда приложение убито
- 18. Как управлять alarmManager, когда приложение убито (Android)
- 19. Как запустить службу утилит даже приложение убито/уничтожено
- 20. Получить более точное местоположение пользователя android
- 21. Невозможно получить местоположение пользователя в android
- 22. Как определить, убито ли приложение
- 23. Обнаруживать местоположение пользователя Android
- 24. Как получить текущее местоположение пользователя, когда приложение было прервано
- 25. Как получать непрерывные уведомления о геозонности, даже когда приложение убито?
- 26. Android: продолжайте работать, когда приложение убито
- 27. Восстановить начальную службу Android после того, как приложение было убито
- 28. Android-приложение убито в телефоне HUAWEI
- 29. Как получить текущее состояние пользователя (местоположение)
- 30. Android Java: как ваше приложение помнит ответ
создать одна из фоновых служб и эта служба работают в фоновом режиме. постоянно получать местоположение .. –
, но когда служба останавливается, то кто я могу получить обновление местоположения –
Да, вы можете достичь этого, поставив некоторые усилия и R & D. – Aks4125