Home » Android » Android: How to reset and download A-GPS data?

Android: How to reset and download A-GPS data?

Posted by: admin June 15, 2020 Leave a comment

Questions:

How can I programmatically reset and download new A-GPS data in an Android application? In other words, how do the “Manage A-GPS state” tools work in the GPS Status & Toolbox app?

How to&Answers:

You should be able to use LocationManager.sendExtraCommand(String provider, String command, Bundle extras). This will allow you to delete all or part of the GPS data, so it will redownload it. The docs are here, but a quick rundown of the arguments, referenced from this code(for a GPS Provider):

For provider, use LocationManager.GPS_PROVIDER.

For command, use "delete_aiding_data"

For extras, if you pass null, it will delete all data. If you want to delete specific data only(such as just the almanac or position), you can use the flags found in this function as extras in the bundle.

Don’t forget to add android.permission.ACCESS_LOCATION_EXTRA_COMMANDS to your permission list in the manifest!

Answer:

So far, the best answer to my question seems to be a combination of @Geobits’ response and the XTRA injection code discussed in Problems with sendExtraCommand and force_xtra_injection. Based on this, I am currently using the following:

locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.sendExtraCommand(LocationManager.GPS_PROVIDER,"delete_aiding_data", null);
Bundle bundle = new Bundle();
locationManager.sendExtraCommand("gps", "force_xtra_injection", bundle);
locationManager.sendExtraCommand("gps", "force_time_injection", bundle);

If anyone has additional ideas on how to improve this, or how to determine the best times to clear and download new GPS data, I would be very interested to hear.