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.

  • Browser-Scroll-Ereignis schießt nicht oft genug auf iOS und Android-Geräten
  • Android: Ist View.onClick () -Methode auf Haupt-UI-Thread aufgerufen?
  • Variable 'runnable' muss initialisiert werden
  • Android: Intentservice, wie Abbruch oder überspringen eine Aufgabe in der Handhabung Warteschlange
  • Abfrage, um Datensätze zu erhalten, die auf Radius in SQLite basieren?
  • Android-Appcompat-Aktionsleiste Menüpunkt showAsAction funktioniert nicht
  • 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(); } } } 

  • Android beenden Aktivität und einen anderen starten
  • Kann nicht installieren apk mit Adb auf Gerät aktualisiert auf Android Lollipop
  • Android App Abrufen von Daten vom Server aber in einer sicheren Weise
  • Android JUnit4 Testing - Wo bekommst du Kontext?
  • Bewegen Sie zu einem anderen EditText, wenn Soft Keyboard Next auf Android geklickt wird
  • OpenCV im Android-Anwendungspaket einbeziehen
  • 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.