Android Delphi RAD Studio 10.3 GPS Location - TLocationSensor не работает - PullRequest
0 голосов
/ 24 января 2019

Поскольку я не смог получить результаты 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 приводит к нулю и работает только один раз?Есть ли возможность его сбросить?

...