停止位置传感器 Firemonkey XE6 时出错

Error while stopping Location Sensor Firemonkey XE6

我正在使用 TLocationSensor 获取纬度和经度值。我的 GPS 未启用,我正在使用网络位置。

使用事件 onLocationChanged 我保存了值并将 属性 Active 设置为 False,但是发生错误。

调试我发现,在单元 System.Android.Sensors 中,在过程 TUIAndroidLocationSensor.DoStop 中,删除侦听器的行不验证 GPSListener 是否为 nil 并抛出关闭我的应用程序的异常。 当我为 32 位 Windows 平台编译时不会出现此问题,只是在为 Android 平台编译时出现。

我该如何解决这个问题?

编辑: 此问题已在 Firemonkey XE8 上解决。

由于修复此错误仅涉及修改 System.Android.Sensorsimplementation 部分中的代码,您可以轻松地自行修复代码。

System.Android.Sensors.pas复制到您的项目文件夹中并将其添加到项目中。然后添加 nil check in TUIAndroidLocationSensor.DoStop 方法来修复bug。

编译项目时 Delphi 将使用固定的 System.Android.Sensors 而不是默认的损坏的。