Android - Unable to get the gps location on the emulator

匿名 (未验证) 提交于 2019-12-03 02:14:01

问题:

i'm tring to use the gps on the android emulator, i've the following code:

public class NL extends Activity {   private LocationManager locmgr = null;   @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.nl);          locmgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);          Criteria crit = new Criteria();         crit.setAccuracy(Criteria.ACCURACY_FINE);         String provider = locmgr.getBestProvider(crit, true);         Location loc = locmgr.getLastKnownLocation(provider);           Toast msg = Toast.makeText(this, "Lon: " + Double.toString(loc.getLongitude()) + " Lat: " + Double.toString(loc.getLatitude()), Toast.LENGTH_SHORT);         msg.show();     } } 

i've added the following line at the manifest:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

and i've set the gps location with the DDMS method and either with the geo fix method, but when i run the code, i get a NullPointerExeption at the Toast line, probably cause loc is null.

I don't understand where the error is... can you help me please?


UPDATE!

Thanks for your help, now i use the following code and i don't get any error, but it doesn't run the code inside onChangeLocation... it doesn't run the Toast and don't return any message in the log!

 public class NL extends Activity {          private LocationManager locmgr = null;          @Override         public void onCreate(Bundle savedInstanceState) {             super.onCreate(savedInstanceState);             setContentView(R.layout.nl);              locmgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);           // Define a listener that responds to location updates             LocationListener locationListener = new LocationListener() {                 public void onLocationChanged(Location loc) {                   // Called when a new location is found by the network location provider.                     Log.i("NOTIFICATION","onLocationChenged Triggered");                      Toast msg = Toast.makeText(NetworkLocator.this, "Lon: " + Double.toString(loc.getLongitude()) + " Lat: " + Double.toString(loc.getLatitude()), Toast.LENGTH_SHORT);                     msg.show();                 }                  public void onStatusChanged(String provider, int status, Bundle extras) {}                  public void onProviderEnabled(String provider) {}                  public void onProviderDisabled(String provider) {}               };              // Register the listener with the Location Manager to receive location updates             locmgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);         }     } 

Thanks!

回答1:

Emulator just doesn't have any location at the beginning. According to the doc, 'getLastKnownLocation' method can return null, so it is ok. In that case you should wait for location updates (you can user requestLocationUpdates method from LocationManager). You can trigger location update on emulator's gps module by following command:

adb -e emu geo fix 50 50 


回答2:

FOUND THE SOLUTION:

LocationManager.NETWORK_PROVIDER is WRONG.

correction: LocationManager.GPS_PROVIDER



回答3:

if all you what you described is done than maybe you are not probably not ur gps is on in emulator.go to setting:->Location and Security:->and use gps satelites should be checked


edited:ithink you have to use location manager without criteria type.



LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);  loc=mlocManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

------than try to get long. and lat.



回答4:

Are you sure that your emulated device is actually supporting GPS? I think there was an extra option for this...

This may help too:

source: GPS on emulator doesn't get the geo fix - Android



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!