Problema ao implementar o ouvinte de localização no android appwidget

Eu estou trabalhando em um Widget que irá obter a localização GPS atual e passar esse valor para a página PHP remota para obter as informações e exibi-lo no Widget. É isso que estou tentando fazer.

Estou enfrentando problemas ao implementar o Location Listener para appWidget. Não está atualizando com o local atual e está mostrando o widget inicial, ou seja, "Carregando Widget" (Aqui eu coloco este texto)

Podemos implementar o listener de localização para AppWidgetProvider?
Ou
Você pode me sugerir a solução possível para obter a localização do GPS no App Widget?

Coloquei todas as permissões necessárias no arquivo de manifesto.
Aqui está o meu trecho de código:

<pre><code>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; } } } </code></pre>

Desde já, obrigado...

Com cumprimentos, Raghavendra K.

questionAnswers(2)

yourAnswerToTheQuestion