【发布时间】:2023-04-09 14:54:01
【问题描述】:
我有一个 fmx 表单,上面只有 LocationSensor、Memo 和 Button,并使用下面的代码在备忘录中显示坐标。当我在手机上打开 GPS 时,单击按钮时会显示“1”和“2”,这似乎可行,但我的备忘录中没有添加任何线条。我尝试了不同的代码示例,但没有一个可以让我以任何方式显示坐标。
我使用三星 A3 (SM-A310F) 和最初的库存 rom (Android 7),现在使用 Lineage 17.1(基于 Android 10)来测试它,到目前为止,在这两个版本上,GPS 坐标都没有工作。我使用的是 Delphi 10.3.3 社区版。
我做错了什么?
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes,
System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.ScrollBox,
FMX.Memo, FMX.Controls.Presentation, FMX.StdCtrls, System.Sensors,
System.Sensors.Components,
Androidapi.JNI.Location,
Androidapi.JNIBridge,
FMX.Helpers.Android,
Androidapi.JNI.GraphicsContentViewText,
Androidapi.Helpers;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
LocationSensor1: TLocationSensor;
procedure Button1Click(Sender: TObject);
procedure LocationSensor1LocationChanged(Sender: TObject;
const OldLocation, NewLocation: TLocationCoord2D);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
var
locationManager: JLocationManager;
begin
LocationSensor1.Active := true;
locationManager := TJLocationManager.Wrap
(((SharedActivity.getSystemService(TJContext.JavaClass.LOCATION_SERVICE))
as ILocalObject).GetObjectID);
if locationManager.isProviderEnabled(TJLocationManager.JavaClass.GPS_PROVIDER)
then
begin
showmessage('1');
end;
if locationManager.isProviderEnabled
(TJLocationManager.JavaClass.NETWORK_PROVIDER) then
begin
showmessage('2');
end;
end;
procedure TForm1.LocationSensor1LocationChanged(Sender: TObject;
const OldLocation, NewLocation: TLocationCoord2D);
begin
Memo1.Lines.Add(FloatToStr(NewLocation.Longitude));
Memo1.Lines.Add(FloatToStr(NewLocation.Latitude));
end;
end.
更新:我找到了一个西班牙解决方案(见下文)
【问题讨论】:
-
您是否启用了使用 GPS 的权限?检查this 文档,您的应用将需要 ACCESS_COARSE_LOCATION 和 ACCESS_FINE_LOCATION。根据文档,它们是开箱即用的,但请仔细检查是否是这种情况......
-
是的,我检查了权限,虽然它们已启用,但它不起作用
-
正如我所说,我尝试了不同的代码示例,但都没有奏效。这可能是由于使用的手机还是我的 android 版本太新?我真的不知道为什么即使是 Embarcadero 演示样本也不适合我
-
检查您的设备是否支持,更多信息可以找到here
-
youtube.com/watch?v=iiPFpzGICws 在 cmets 中,第二个链接对我有用。我会在接下来的几个小时/几天内尝试弄清楚...我不知道这是什么语言...我猜是西班牙语.它是第一个对我有用的版本,没有其他版本。
标签: android delphi geolocation android-gps delphi-10.3-rio