Мне нужно отправить текущие данные о местоположении (lat & long) на сервер периодически (пример: каждые 5 минут). Есть ли лучший способ? Я знаю, как получить текущее местоположение &, как отправить информацию на сервер. Но как я повторяю это через периодические промежутки времени?Отправить текущее местоположение на сервере периодически в android
ответ
Зарегистрируйте будильник с помощью AlarmManager
, чтобы проснуться через 5 минут, когда пользователь впервые откроет приложение. создать службу (выбрать местоположение и обновить сервер), чтобы запустить, когда будильник уведомляет ваше приложение. После того, как сервис завершит работу, снова войдите в тревогу, чтобы проснуться через 5 минут. таким образом, вы можете достичь своей задачи.
исх
Android: How to periodically send location to a server
http://developer.android.com/reference/android/app/AlarmManager.html
http://developer.android.com/reference/android/app/Service.html
первый Edit - Добавление кода образца
Шаг 1 - Создание управляющего сигнала и зарегистрировать тревогу
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(Main.this, YourWakefulReceiver.class);
bool flag = (PendingIntent.getBroadcast(Main.this, 0,
intent, PendingIntent.FLAG_NO_CREATE)==null);
/*Register alarm if not registered already*/
if(flag){
PendingIntent alarmIntent = PendingIntent.getBroadcast(Main.this, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Create Calendar obj called calendar
/* Setting alarm for every one hour from the current time.*/
int intervalTimeMillis = 1000 * 60 * 60; // 1 hour
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,
calander.getTimeInMillis(), intervalTimeMillis,
alarmIntent);
}
Шаг 2 - Создание класса Receiver
public class YourWakefulReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, SimpleWakefulService.class);
startWakefulService(context, service);
}
}
}
Setp 3 - Создание класса Service
public class YourService extends IntentService {
private static String tagName = "YourService";
public SimpleWakefulService() {
super("YourService");
}
@Override
protected void onHandleIntent(Intent intent) {
// Start your location
LocationUtil.startLocationListener();
try {
// Wait for 10 seconds
Thread.sleep(1000*10);
} catch (InterruptedException e) {
}
//Stop location listener
LocationUtil.stopLocationListener();
// upload or save location
uploadGps();
SimpleWakefulReceiver.completeWakefulIntent(intent);
}
}
Шаг 4 - Регистрация службы и приемник
<service android:name="com.envision.ghari.services.YourService"></service>
<receiver android:name="com.envision.ghari.receivers.YourWakefulReceiver"></receiver>
Примечание: Этот код заключается в понимании реализации. Он не будет компилироваться.
Я желаю этого ответ был немного более близок. –
также добавить проверку доступности сети.Если сеть недоступна, сохраните координаты локально и отправьте их на сервер, когда сеть там – Harsh
, вероятно, лучший способ начать. –
Поскольку для этого не требуется взаимодействие с пользовательским интерфейсом, для этого вам необходимо создать сервис, служба будет вызывать метод requestLocationUpdates, в этом методе пропустить минимальное время параметра до 5 минут.
Использование BroadcastReceiver является хорошим выбором для отправки периодических запросов.
Here - это учебник по использованию BroadcastReceiver.
Лучший способ разбудить услугу с помощью AlarmManager
и разместить местоположение, которое вы получаете на сервере.
Я разрабатываю приложение, которое получает позицию сотового телефона весь день в течение 10 и 15 секунд в службе, оно отлично работает, но иногда метод OnLocationChanged из прослушивателя провайдера сети перестает быть вызванным.
import android.location.Address;
import android.location.Geocoder;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import java.io.IOException;
import java.util.List;
import foodinn.databases.LocationUpdaterDatabase;
public class LocationUpdatesActivity extends AppCompatActivity {
private LocationUpdaterDatabase locationUpdaterDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_location_updates);
locationUpdaterDatabase = new LocationUpdaterDatabase(this, "Locations.db", null, 1);
final Geocoder geocoder = new Geocoder(this);
ListView listView = (ListView) findViewById(R.id.locationUpdatesListView);
listView.setAdapter(new SimpleCursorAdapter(this, R.layout.location_updates_list_view_view, locationUpdaterDatabase.getLocationUpdates(), new String[] {"latitude", "longitude", "whenUpdated"}, new int[] {R.id.listViewTextView1, R.id.listViewTextView2, R.id.listViewTextView3}, SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
double latitude = Double.valueOf(((TextView) view.findViewById(R.id.listViewTextView1)).getText().toString());
double longitude = Double.valueOf(((TextView) view.findViewById(R.id.listViewTextView2)).getText().toString());
try {
List<Address> addressList = geocoder.getFromLocation(latitude, longitude, 1);
String address = addressList.get(0).getAddressLine(0); // If any additional address line present than only, check with max available address lines by getMaxAddressLineIndex()
String city = addressList.get(0).getLocality();
String state = addressList.get(0).getAdminArea();
String country = addressList.get(0).getCountryName();
String postalCode = addressList.get(0).getPostalCode();
String knownName = addressList.get(0).getFeatureName();
((TextView) view.findViewById(R.id.listViewTextView4)).setText(address + ", " + city + ", " + country);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}
Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http: //meta.stackexchange .com/questions/114762/explaining-whole-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. –
- 1. Android: Как периодически проверять текущее местоположение без слива батареи
- 2. Текущее местоположение в Android
- 3. Уменьшить текущее местоположение android
- 4. Android- Текущее местоположение
- 5. android gps текущее местоположение
- 6. Текущее местоположение с android
- 7. получить текущее местоположение в Android
- 8. получить текущее местоположение в android
- 9. Мое текущее местоположение в android
- 10. Как получить местоположение периодически и отправить местоположение на сервер в фоновом режиме ios9
- 11. Найти ближайший город на текущее местоположение - Android
- 12. Показать текущее местоположение на Google Maps android
- 13. Как показать текущее местоположение на Android AVD?
- 14. android: better Найти текущее местоположение
- 15. Android GPS получить текущее местоположение
- 16. Получить текущее местоположение пользователя android
- 17. Найти текущее местоположение Android 6.0
- 18. Android Найти текущее местоположение Ошибка
- 19. как получить текущее местоположение android?
- 20. Нужно текущее местоположение пользователя на Android, не последнее известное местоположение
- 21. Получить текущее местоположение Мгновенно
- 22. Текущее местоположение в Webview
- 23. Приложение для Android, которое периодически получает местоположение
- 24. Невозможно получить текущее местоположение в android
- 25. Текущее местоположение
- 26. Текущее местоположение приходит как null в android
- 27. , показывающий текущее местоположение через gps в android
- 28. Как получить текущее местоположение в Android
- 29. Как получить текущее местоположение GPS в Android?
- 30. получить текущее местоположение один раз в android
Пожалуйста, проверьте это, похожее приложение и отлично работает, но мне нужна помощь в отношении некоторых функций, которые вы узнаете после прочтения моего сообщения, и извините за то, что поставили эту вещь в ответ, поскольку я могу, вариант комментария. . http://stackoverflow.com/questions/14088095/how-can-i-send-the-gps-and-network-location-cordinates-to-a-server-static-ip/14103445#14103445 – user2010282