2016-04-04 6 views
0

Beim Abrufen des Breiten- und Längengrads auf dem Gerät wird in logcat der Wert null angezeigt.Gerät Längen- und Breitengrad mit Null erhalten

Aber im genymotion Emulator bekomme ich GPS-Breiten- und Längengrad-Position, wenn ich gps auf der rechten Seite von Genymotion Emulator einschalten.

Ich weiß nicht Warum ich den geografischen Längen- und Breitengrad im Gerät nicht ermitteln kann.

Unten habe ich den relevanten Code veröffentlicht.

Logcat:

E:/ gpsLocation: null 

FragmentDiscovery.java:

AppLocationService appLocationService; 

    appLocationService = new AppLocationService(getActivity()); 

     submitButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       getLocation(); 

       Log.e("GET_USER_LAT_STR", ""+GET_USER_LAT_STR); 
       Log.e("GET_USER_LON_STR", ""+GET_USER_LON_STR); 


       editor.putString("GetLat", GET_USER_LAT_STR); 
       editor.putString("GetLon", GET_USER_LON_STR); 


       editor.commit(); 


       Fragment fragment = new CardsFragment(); 

       FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
       FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
       fragmentTransaction.replace(R.id.container_body, fragment); 
       fragmentTransaction.addToBackStack(null); 
       fragmentTransaction.commit(); 

      } 
     }); 




     // Inflate the layout for this fragment 
     return rootView; 
    } 

    void getLocation(){ 

     Location gpsLocation = appLocationService 
       .getLocation(LocationManager.GPS_PROVIDER); 

     Log.e("gpsLocation", ""+gpsLocation); 

     if (gpsLocation != null) { 
      double latitude = gpsLocation.getLatitude(); 
      double longitude = gpsLocation.getLongitude(); 

      GET_USER_LAT_STR = String.valueOf(latitude); 
      GET_USER_LON_STR = String.valueOf(longitude); 

     } else { 
      showSettingsAlert("GPS"); 
     } 

    } 

    public void showSettingsAlert(String provider) { 
     AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity()); 

     alertDialog.setTitle(provider + " SETTINGS"); 

     alertDialog 
       .setMessage(provider + " is not enabled! Want to go to settings menu?"); 

     alertDialog.setPositiveButton("Settings", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         Intent intent = new Intent(
           Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
         getActivity().startActivity(intent); 
        } 
       }); 

     alertDialog.setNegativeButton("Cancel", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.cancel(); 
        } 
       }); 

     alertDialog.show(); 
    } 

Edit:

In Gerät es nicht immer einfach gpslocation.Instead wiederum auf GPS zeigt Windows in Einstellungen. Aber ich hatte eine lready gps eingeschaltet

+0

Wenn Sie versuchen, GPS zu lokalisieren, dauert es einige Male, bis mindestens drei Satelliten repariert sind. Die Zeit ist ungefähr 20-30 Sekunden oder hängt mehr von der Bewegung Ihres Geräts ab. –

+0

@MD Gibt es alternative Möglichkeiten, dieses Problem zu lösen? Aber im genymotion Emulator dauerte es eine Sekunde, um den Breiten- und Längengrad zu zeigen. Aber im Gerät wird es nicht gpslocation.ing einfach nur das Einschalten gps.Aber ich hatte bereits eingeschaltet gps – Steve

+0

Verwenden Sie Google Location Services für den Standort zu bekommen. –

Antwort

0

Verwenden Sie onLocationChanged zum Abrufen des aktualisierten Standorts.

Verwandte Themen