Developer Jeff Overcash has a demo up on the Embarcadero Code Central which accesses the Android GPS functionality via the JNI in Delphi XE7 (and XE6) Firemonkey. If TLocationSensor does not quite work like you want you can go directly to the Android GPS data via the LocationManagerService. One goal of wanting to do this is you may be able to reduce the battery usage of accessing the GPS because your overhead may be less than the TLocationSensor component. The demo will give you longitude, latitude, and altitude. Additionally it will list the different GPS services available (on my device they were passive, GPS, and network). This demo is free and originally was for XE6 but I was able to update it to XE7 by simply adding Androidapi.Helpers to the uses clause. SharedActivityContext is now located in Androidapi.Helpers in Delphi XE7 Firemonkey. A tip for Firemonkey on IOS is that you can get location information directly from MKMapView using one of the DPF IOS or TMS Software wrapper components. This demo project and the IOS components should also work for Appmethod. Here is the main code from the demo: procedure TForm1.Button1Click(Sender: TObject);
iter : JIterator;
location : JLocation;
if not Assigned(FLocationManager) then
LocationManagerService := SharedActivityContext.getSystemService(TJContext.JavaClass.LOCATION_SERVICE);
FLocationManager := TJLocationManager.Wrap((LocationManagerService as ILocalObject).GetObjectID);
if not Assigned(locationListener) then
locationListener := TLocationListener.Create(self);
FLocationManager.requestLocationUpdates(TJLocationManager.JavaClass.GPS_PROVIDER, 10000, 10, locationListener,
iter := FLocationManager.GetAllProviders.Iterator;
while iter.hasNext do
CheckBox1.IsChecked := FLocationManager.isProviderEnabled(TJLocationManager.JavaClass.GPS_PROVIDER);
CheckBox2.IsChecked := FLocationManager.isProviderEnabled(TJLocationManager.JavaClass.NETWORK_PROVIDER);
location := FLocationManager.getLastKnownLocation(TJLocationManager.JavaClass.GPS_PROVIDER);
end; Download our mirror of the Android GPS JNI project demo with Delphi XE7 Firemonkey support.
FMXExpress.com has over 700 tips and tricks for building cross platform apps on Android, IOS, OSX, Windows, and Linux with a single codebase and single UI using the FireMonkey framework found in Delphi and C++Builder.
FMXExpress covers top cross platform secrets for FireMonkey in C++Builder and Delphi XE5, XE6, XE7, XE8, Seattle, Berlin, Tokyo, Rio, and Sydney.