OnLocationChanged () hat niemals aufgerufen

Ich schreibe einen Code, der den aktuellen Standort bringt, aber es gibt mir nicht den Ort, weil er niemals anruft. onLocationChanged() ? onLocationChanged() Es gibt irgendeine Möglichkeit, den Standort zu finden.

MobileLocation kommt für diesen Fall 0, also geht die Ausführung zum else-Block.

Mein Code ist

 public class FindLocation { private LocationManager locManager; private LocationListener locListener; private Location mobileLocation; private String provider; public FindLocation(Context ctx){ locManager = (LocationManager) ctx.getSystemService(Context.LOCATION_SERVICE); locListener = new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(Location location) { System.out.println("mobile location is in listener="+location); mobileLocation = location; } }; locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, locListener); if (mobileLocation != null) { locManager.removeUpdates(locListener); String londitude = "Londitude: " + mobileLocation.getLongitude(); String latitude = "Latitude: " + mobileLocation.getLatitude(); String altitiude = "Altitiude: " + mobileLocation.getAltitude(); String accuracy = "Accuracy: " + mobileLocation.getAccuracy(); String time = "Time: " + mobileLocation.getTime(); Toast.makeText(ctx, "Latitude is = "+latitude +"Longitude is ="+londitude, Toast.LENGTH_LONG).show(); } else { System.out.println("in find location 4"); Toast.makeText(ctx, "Sorry location is not determined", Toast.LENGTH_LONG).show(); } } } 

  • NETWORK_PROVIDER bietet keine aktualisierten Standorte an
  • Warum ist nicht die onProviderEnabled () - Methode von Android aufgerufen?
  • Abmelden eines LocationListeners vom LocationManager
  • LocationManager.isProviderEnabled (LocationManager.NETWORK_PROVIDER) ist nicht zuverlässig, warum?
  • Ort (Koordinaten) regelmäßig aufrufen, ohne den Batterieverbrauch drastisch zu erhöhen
  • Android GPS Position Geschwindigkeit Unzuverlässig
  • Was ist der Standortanbieter "passiv"? Sei auf HTC Desire mit Android 2.2
  • Unterschied zwischen LocationRequest setInterval (long millis) und LocationRequest setFastestInterval (long millis)
  • 5 Solutions collect form web for “OnLocationChanged () hat niemals aufgerufen”

    Bekommst du nie einen standort oder nur so, wie du in deinem kommentar schreibst "manchmal bekommt er standort aber nicht zum klick."

    Vielleicht ist dein Code schneller als LocationManager, der noch nicht aufgerufen hatLocationChanged (). Ändern Sie Ihren Code, um den letzten bekannten Ort zu erhalten, oder warten Sie, bis Ihr locListener aufgerufen wurde:

     locManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 1000, 1, locListener); mobileLocation = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); if (mobileLocation != null) { 

    Ich habe dir die Erlaubnis vergessen

     <uses-permission android:name="android.permission.ACCESS_GPS" /> <uses-permission android:name="android.permission.ACCESS_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> 

    ODER

    Deklarieren Sie die richtige Klasse wie

     public class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location arg0) { latitude = arg0.getLatitude(); longitude = arg0.getLongitude(); } } 

    Ich laufe meine App auf echtes Gerät. Ich benutze Netzwerk statt GPS und onLOcationChanged heißt:

     locMan.requestSingleUpdate(LocationManager.NETWORK_PROVIDER, this, null); 
     import android.app.ActivityManager; import android.app.Service; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.media.AudioManager; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.os.IBinder; import android.os.PowerManager; import android.util.Log; import org.json.JSONObject; import java.util.List; public class AndroidLocationServices extends Service { PowerManager.WakeLock wakeLock; String MODULE="AndroidLocationServices",TAG=""; private LocationManager locationManager; double getLattitude=0,getLogitude=0; private static final long MIN_TIME_BW_UPDATES = 1; // 1 minute private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 0; public AndroidLocationServices() { // TODO Auto-generated constructor stub } @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); preferences=getSharedPreferences(GlobalConfig.PREF_NAME, MODE_PRIVATE); PowerManager pm = (PowerManager) getSystemService(this.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "DoNotSleep"); // Toast.makeText(getApplicationContext(), "Service Created", // Toast.LENGTH_SHORT).show(); Log.e("Google", "Service Created"); } @Override @Deprecated public void onStart(Intent intent, int startId) { // TODO Auto-generated method stub super.onStart(intent, startId); Log.e("Google", "Service Started"); locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE); //locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2500, 0, listener); locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, listener); } public LocationListener listener = new LocationListener() { @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub Log.e("Google", "Location Changed"); location.setAccuracy(100); if (location == null) return; getLattitude=location.getLatitude(); getLogitude=location.getLongitude(); Log.e("latitude", getLattitude + ""); Log.e("longitude", getLogitude + ""); } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } }; @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); // wakeLock.release(); } } 

    Manifest:

      <service android:name=".services.AndroidLocationServices"/> 

    Start Service vor Gebrauch:

      startService(new Intent(this, AndroidLocationServices.class)); 

    Direkt nach locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, locListener) fügen Sie den folgenden Code hinzu:

     locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, locListener); 

    EDIT: korrigiert den Code dank der Kommentar von @Fabian Streitel.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.