Поскольку я не смог получить результаты Location от TLocationSensor (пример приложения RAD Studio не работает в Rio), я проверил Интернет и нашел следующий пример:
procedure TForm1.Button1Click(Sender: TObject);
var
LocationManagerService: JObject;
iter : JIterator;
location : JLocation;
begin
if not Assigned(FLocationManager) then
begin
LocationManagerService := TAndroidHelper.Context.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, 1000, 0, locationListener,
TJLooper.JavaClass.getMainLooper);
end;
iter := FLocationManager.GetAllProviders.Iterator;
ListBox1.Clear;
while iter.hasNext do
begin
ListBox1.Items.Add(JStringToString(iter.next.ToString));
end;
CheckBox1.IsChecked := FLocationManager.isProviderEnabled(TJLocationManager.JavaClass.GPS_PROVIDER);
CheckBox2.IsChecked := FLocationManager.isProviderEnabled(TJLocationManager.JavaClass.NETWORK_PROVIDER);
location := FLocationManager.getLastKnownLocation(TJLocationManager.JavaClass.GPS_PROVIDER);
if assigned(location) then onLocationChanged(location);
end;
Этот код работаетидеально подходит для одного планшета Android 8, но у меня есть некоторые проблемы с некоторыми Samsung Galaxy S3 с ОС Lineage Android 7.
На этом устройстве код работал только один раз, и теперь любое время расположения равно нулю.
В чем может быть причина, что getLastKnownLocation приводит к нулю и работает только один раз?Есть ли возможность его сбросить?