Problema al implementar la escucha de ubicación en Android appwidget

Estoy trabajando en un Widget que obtendrá la ubicación GPS actual y pasará este valor a la página remota de PHP para obtener la Información y mostrarla en el Widget. Esto es lo que estoy tratando de hacer.

Estoy enfrentando un problema mientras implemento Location Listener para appWidget. No se está actualizando con la ubicación actual y muestra el widget inicial, es decir, "Widget de carga" (Aquí pongo este texto)

¿Podemos implementar la escucha de ubicación para AppWidgetProvider?
O
¿Puede sugerirme la posible solución para obtener la ubicación de GPS en el Widget de la aplicación?

Coloqué todos los permisos necesarios en el archivo Manifest.
Aquí está mi fragmento 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>

Gracias por adelantado...

Con saludos, Raghavendra K.