I am working on an application that requires an approximate position of the user, so basically i am fine with any relatively recent location data i can get. However I can't seem to get things right using mock location data and would therefore appreciate your help. The method i'm having tries to set mock location data for the gps provider and tries to later retrievie it BUT: locationManager.setTestProviderEnabled("gps", true); seems to fail because i do not get any active location provider from the location manager. When I tried using a mock location provider with addTestProvider and give it my mock location, the LocationManager returns me this mock provider with getProviders(true) but then getLastKnownLocation returns null instead of the provided mock location.
Here is my code (see comments as well): private GeoPoint getUserLocation() { LocationManager locationManager = (LocationManager)getSystemService (Context.LOCATION_SERVICE); if (!PRODUCTION_ENVIRONMENT){ //Get some mock location data in the game Location location = new Location("gps"); location.setLatitude(32.64480); location.setLongitude(-16.90967); location.setTime(new Date().getTime()); locationManager.setTestProviderLocation("gps", location); locationManager.setTestProviderEnabled("gps", true); //retrieve the list of active providers for debugging purposes, the activated mock gps provider is not returned here List<String> locationProviders = locationManager.getProviders (true); locationManager.setTestProviderEnabled("network", true); } //i just want an approximate location so no high expectations here Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_COARSE); criteria.setPowerRequirement(Criteria.NO_REQUIREMENT); //this correctly retrieves a mock location provider but not the mock enabled gps String provider = locationManager.getBestProvider(criteria,true); if (provider != null) { //this is where the mock provider returns null Location location = locationManager.getLastKnownLocation(provider); return new GeoPoint((int)(location.getLatitude()*E6_LATLONG), (int) (location.getLongitude()*E6_LATLONG)); }else return null; } } Thanks for any hints or requests for clarification! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---