Проблема при внедрении приемника местоположения в приложении Android-приложения

Я работаю над виджетами, которые получат текущее местоположение GPS и передают это значение на удаленную страницу PHP, чтобы получить информацию и отобразить ее в виджете. Это то, что я пытаюсь сделать.

Я сталкиваюсь с проблемой при внедрении Location Listener для appWidget. Он не обновляется текущим местоположением и показывает начальный виджет, т.е. «Загрузка виджета» (здесь я помещаю этот текст)

Можем ли мы реализовать приемник местоположения для AppWidgetProvider?
Или
Можете ли вы предложить мне возможное решение для получения местоположения GPS в App Widget?

Я поместил все необходимые разрешения в файл манифеста.
Вот мой фрагмент кода:

 public class test extends AppWidgetProvider { static LocationManager locMan; static Location curLocation; static Boolean locationChanged; @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) { // To prevent any ANR timeouts, we perform the update in a service context.startService(new Intent(context, UpdateService.class)); } public static class UpdateService extends Service { // GPS Listener Class LocationListener gpsListener = new LocationListener() { public void onLocationChanged(Location location) { // Log.w("GPS", "Started"); if (curLocation == null) { curLocation = location; locationChanged = true; } if (curLocation.getLatitude() == location.getLatitude() && curLocation.getLongitude() == location.getLongitude()) locationChanged = false; else locationChanged = true; curLocation = location; if (locationChanged) locMan.removeUpdates(gpsListener); } public void onProviderDisabled(String provider) { } public void onProviderEnabled(String provider) { // Log.w("GPS", "Location changed", null); } public void onStatusChanged(String provider, int status, Bundle extras) { if (status == 0)// UnAvailable { } else if (status == 1)// Trying to Connect { } else if (status == 2) {// Available } } }; // In service start method, I am registering for GPS Updates @Override public void onStart(Intent intent, int startId) { locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE); if (locMan.isProviderEnabled(LocationManager.GPS_PROVIDER)) { locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER,20000, 1, gpsListener); } else { this.startActivity(new Intent("android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS")); } if (curLocation != null) { double lat = curLocation.getLatitude(); double lng = curLocation.getLongitude(); Toast.makeText(getBaseContext(),"Lat : " + String.valueOf(lat) + "\n Long : "+ String.valueOf(lng), Toast.LENGTH_LONG).show(); } // Build the widget update for today RemoteViews updateViews = buildUpdate(this); // Push update for this widget to the home screen ComponentName thisWidget = new ComponentName(this,InKakinadaWidget.class); AppWidgetManager manager = AppWidgetManager.getInstance(this); manager.updateAppWidget(thisWidget, updateViews); } public RemoteViews buildUpdate(Context context) { // Here I am updating the remoteview return updateViews; } @Override public IBinder onBind(Intent intent) { // We don't need to bind to this service return null; } } } 

Заранее спасибо…

С уважением, Рагхавендра К.

У вас эта проблема в эмуляторе или на устройстве? Если на эмуляторе убедитесь, что вы используете DDMS для установки местоположения GPS. Но проще всего будет запустить ваш код на устройстве, чтобы увидеть, если вы получите GPS-обновления таким образом.

Проблема, которую я вижу, заключается в том, что вы пытаетесь проверить curLocation в onStart () сразу после вызова requestLocationUpdates (). LocationManager.requestLocationUpdates () является асинхронным, что означает, что ваш LocationListener не будет вызван обратно до тех пор, пока не вернется onStart (). Обновите свой локальный интерфейс после того, как он получит местоположение, не пытайтесь сделать это в onStart.

Intereting Posts
Уменьшает ли Android скорость загрузки при выключении экрана? Почему Android не сохраняет состояние приложения после нажатия кнопки «Главная», если приложение запускается сначала из App Manager? Привет, мировой модуль ядра для android и неизвестного переселения: 27, когда insmod Значок ActionBarDrawerToggle отсутствует при использовании AppCompat v22 Могу ли я использовать сервер Jasig CAS для мобильных приложений Android? Android.os.FileUriExposedException: файл: ///storage/emulated/0/test.txt выставляется вне приложения через Intent.getData () Серьезные проблемы с обновлением Studio Studio Android – можно ли узнать, какое приложение имеет аудиофокус? Могу ли я запретить установку приложения в специальном устройстве в Android? Использование сервиса, TimerTask и BroadcastReceiver для проверки различных обновлений Активность Android в диалоге, но без заголовка Рисование фигур в Android MapView независимо от уровня масштабирования MapView показывает оверлейные данные при нажатии Почему ListView.getCheckedItemPositions () не возвращает правильные значения? Как открыть загруженный файл (pdf, zip, docx и т. Д.) В приложении Phonegap?