Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 德尔福GPS传感器不';不显示坐标_Android_Delphi_Geolocation_Android Gps_Delphi 10.3 Rio - Fatal编程技术网

Android 德尔福GPS传感器不';不显示坐标

Android 德尔福GPS传感器不';不显示坐标,android,delphi,geolocation,android-gps,delphi-10.3-rio,Android,Delphi,Geolocation,Android Gps,Delphi 10.3 Rio,我有一个fmx表格,上面只有一个位置传感器、一个备忘录和一个按钮,并使用下面的代码在备忘录中显示坐标。当我打开手机上的GPS时,我单击按钮时会显示“1”和“2”,因此这似乎有效,但我的备忘录中没有添加任何行。我尝试了不同的代码示例,但没有一个能够以任何方式显示坐标 我使用了三星A3(SM-A310F),最初是有库存的rom(安卓7),现在是天堂17.1(基于安卓10)来测试它,到目前为止,在这两个版本上都没有GPS坐标。我使用Delphi10.3.3社区版 我做错了什么 单元1; 接口 使用 S

我有一个fmx表格,上面只有一个
位置传感器
、一个
备忘录
和一个
按钮
,并使用下面的代码在备忘录中显示坐标。当我打开手机上的GPS时,我单击按钮时会显示“1”和“2”,因此这似乎有效,但我的备忘录中没有添加任何行。我尝试了不同的代码示例,但没有一个能够以任何方式显示坐标

我使用了三星A3(SM-A310F),最初是有库存的rom(安卓7),现在是天堂17.1(基于安卓10)来测试它,到目前为止,在这两个版本上都没有GPS坐标。我使用Delphi10.3.3社区版

我做错了什么

单元1;
接口
使用
System.SysUtils、System.TYPE、System.UITYPE、System.Classes、,
系统变量,
FMX.类型,FMX.控件,FMX.窗体,FMX.图形,FMX.对话框,FMX.滚动框,
FMX.Memo、FMX.Controls.Presentation、FMX.StdCtrls、系统传感器、,
系统、传感器、组件、,
Androidapi.JNI.Location,
Androidapi.JNIBridge,
FMX.Helpers.Android,
Androidapi.JNI.GraphicsContentViewText,
帮手;
类型
TForm1=类(TForm)
按钮1:t按钮;
备忘录1:TMemo;
位置传感器1:t位置传感器;
程序按钮1点击(发送方:ToObject);
程序位置传感器1位置已更改(发送者:ToObject;
const-OldLocation,NewLocation:TLocationCoord2D);
私有的
{私营部门}
公众的
{公共部门}
结束;
变量
表1:TForm1;
实施
{$R*.fmx}
程序TForm1.按钮1单击(发送方:TObject);
变量
地点经理:JLocationManager;
开始
位置传感器1.激活:=真;
locationManager:=TJLocationManager.Wrap
((SharedActivity.getSystemService(TJContext.JavaClass.LOCATION_服务))
作为ILocalObject);
如果locationManager.isProviderEnabled(TJLocationManager.JavaClass.GPS\U提供程序)
然后
开始
showmessage('1');
结束;
如果locationManager.isProviderEnabled
(TJLocationManager.JavaClass.NETWORK_PROVIDER)然后
开始
showmessage('2');
结束;
结束;
程序TForm1.位置传感器1位置已更改(发送器:TObject;
const-OldLocation,NewLocation:TLocationCoord2D);
开始
备注1.Lines.Add(FloatToStr(NewLocation.Longitude));
备注1.Lines.Add(FloatToStr(NewLocation.Latitude));
结束;
结束。

更新:我找到了一个西班牙语解决方案(见下文)

我在YouTube上找到了一个西班牙语解决方案: 它将我链接到此文件:

我不懂西班牙语,但我试着理解,他是做什么的,我现在会在我的应用程序中重复使用他的版本。这是迄今为止我在互联网上找到的唯一一个版本,它的效果非常棒

因此,如果链接被删除,这里提供了代码:

unitform\u委托人;
接口
使用
System.SysUtils、System.TYPE、System.UITYPE、System.Classes、System.VARIANT、,
FMX.类型,FMX.控件,FMX.窗体,FMX.图形,FMX.对话框,FMX.布局,
FMX.WebBrowser、FMX.StdCtrls、FMX.Controls.Presentation、FMX.Objects、,
系统.权限,系统.传感器,系统.传感器.组件;
类型
TForm1=类(TForm)
网络浏览器:TWebBrowser;
布局1:TLayout;
开关:t开关;
标签1:TLabel;
布局2:TLayout;
RoundRect1:TRoundRect;
lbl_endereco:TLabel;
位置传感器:t位置传感器;
过程表单创建(发送方:ToObject);
程序切换点击(发送方:ToObject);
程序位置传感器位置已更改(发送方:ToObject;ConsoldLocation,
新位置:TLocationCoord2D);
程序lbl\U ENDERECOCK(发送方:TObject);
私有的
{私有声明}
地点:TLocationCoord2D;
FGeocoder:TGeocoder;
{$IFDEF ANDROID}
访问\精细\位置,访问\粗略\位置:字符串;
程序显示原理(发送方:ToObject;
常数:TArray;常数:TProc);
过程位置许可请求结果
(发送方:TObject;const-permissions:TArray;
结果:柏油虫;
{$ENDIF}
程序OnGeocodeReverseeEvent(常数地址:TCivicAddress);
公众的
{公开声明}
结束;
变量
表1:TForm1;
实施
{$R*.fmx}
使用FMX.DialogService
{$IFDEF ANDROID}
,Androidapi.Helpers,Androidapi.JNI.JavaTypes,Androidapi.JNI.Os
{$ENDIF}
;
{$IFDEF ANDROID}
程序TForm1.显示原理(发送方:TObject;
常数:TArray;常数:TProc);
变量
I:整数;
rationaliemsg:string;
开始
对于I:=0到高(0)do
开始
如果(APermissions[I]=访问\粗略\位置)或(APermissions[I]=访问\精细\位置),则
理性信息:='O app precisa de acesso ao GPS para obter sua localizaãO'
结束;
TDialogService.ShowMessage(理性消息,
程序(const AResult:TModalResult)
开始
变节;
(完)
结束;
程序TForm1.LocationPermissionRequestResult
(发送方:TObject;const-permissions:TArray;
结果:柏油虫;
变量
x:整数;
开始
if(长度(AGrantResults)=2)和
(AGrantResults[0]=t许可状态。已授予)和
(AGrantResults[1]=t许可状态.已授予)然后
Form1.LocationSensor.Active:=真
其他的
开始
Switch.IsChecked:=false;
TDialogService.ShowMessage
('Nãoépossível acessar o GPS porque o app Não possui acesso')
结束;
结束;
{$ENDIF}
程序TForm1.ONGEOCODERVERSEEVENT(常量地址:TCivicAddress);
变量
msg:string;
开始
msg:=Address.AdminArea+','+
Address.CountryCode+,'+
Address.CountryName+,'+
Address.FeatureName+','+
地址.地址+','+
Address.PostalCode+','+
Address.SubAdminArea+','+
Address.SubLocality+','+
Address.Subthroughway+','+
地址.大道;;
TDial