Problem beim Implementieren des Standortlisteners in Android Appwidget

Ich arbeite an einem Widget, das den aktuellen GPS-Standort abruft und diesen Wert an die entfernte PHP-Seite weiterleitet, um die Informationen abzurufen und im Widget anzuzeigen. Das versuche ich zu tun.

Beim Implementieren von Location Listener für appWidget treten Probleme auf. Es wird nicht mit der aktuellen Position aktualisiert und es wird das anfängliche Widget angezeigt, d. H. "Loading Widget" (hier habe ich diesen Text eingefügt)

Können wir Location Listener für AppWidgetProvider implementieren?
Oder
Können Sie mir eine mögliche Lösung für das Abrufen des GPS-Standorts im App Widget vorschlagen?

Ich habe alle erforderlichen Berechtigungen in der Manifest-Datei abgelegt.
Hier ist mein Code-Snippet:

<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>

Danke im Voraus...

Mit freundlichen Grüßen, Raghavendra K.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage