Delphi 在 Android 上获取 LocationSensor 速度
Delphi Get LocationSensor Speed on Android
我目前正在 Delphi / RADStudio Tokyo 10.2
上开发本地化 Android 应用程序
我是 delphi 编程的新手,我正在寻找一种方法来获得 LocationSensor
的速度 属性。通过文档我发现了这个:
LocationSensor1.Sensor.Speed
但它总是 returns NaN
,所以我做了一些挖掘并在 System.Sensors
中找到了这个:
function TCustomLocationSensor.GetDoubleProperty(Prop: TProperty): Double;
begin
Result := NaN;
end;
所以我很困惑,我是用错了属性,还是用错了?如果可以,我应该使用什么,或者我应该如何使用它?
编辑
我的问题与 Xe5 locationsensor distance doesn't work? 不同,因为我对 GPS 精度没有问题(或者至少看起来不是),尽管它们可能不是 unrelated.The 应用程序与服务器通信,这将在网络浏览器上显示它的位置和轨迹。
为了获得最佳使用效果,我必须传输设备的行进速度。一开始我想到了用Accelerometer,但是不适合这种情况。然后我在 embarcadero 文档中偶然发现了这个:http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Sensors.TCustomLocationSensor.Speed
这正是我所需要的,但是当我尝试获取值时,它总是 returns NaN,如上所述。在调试时,我终于在 System.Sensors
中找到了上面显示的代码,我觉得很奇怪,无论发生什么情况,函数总是 returns NaN ,因为我在网上找不到帮助(只有几个日文网站或俄语 http://www.360doc.com/content/17/0502/18/9200790_650383719.shtml
http://www.cyberforum.ru/delphi-beginners/thread1386722.html) 我发在这里了。
尽量不要使用标准的firemonkey TLocationSensor。而不是尝试基于本机 java 类 (JLocationListener).
实施解决方案
TAndroidLocationListener = class(TJavaLocal, JLocationListener)
public
constructor Create();
procedure onLocationChanged(location: JLocation); cdecl;
procedure onProviderDisabled(provider: JString); cdecl;
procedure onProviderEnabled(provider: JString); cdecl;
procedure onStatusChanged(provider: JString; status: Integer; extras: JBundle); cdecl;
end;
在onLocationChanged(location: JLocation); cdecl;
你会得到当前位置对象的实例(java接口)
出于测试目的,使用消息 location.getSpeed.ToString()
创建通知事件
这里你有类似的问题
我目前正在 Delphi / RADStudio Tokyo 10.2
上开发本地化 Android 应用程序我是 delphi 编程的新手,我正在寻找一种方法来获得 LocationSensor
的速度 属性。通过文档我发现了这个:
LocationSensor1.Sensor.Speed
但它总是 returns NaN
,所以我做了一些挖掘并在 System.Sensors
中找到了这个:
function TCustomLocationSensor.GetDoubleProperty(Prop: TProperty): Double;
begin
Result := NaN;
end;
所以我很困惑,我是用错了属性,还是用错了?如果可以,我应该使用什么,或者我应该如何使用它?
编辑
我的问题与 Xe5 locationsensor distance doesn't work? 不同,因为我对 GPS 精度没有问题(或者至少看起来不是),尽管它们可能不是 unrelated.The 应用程序与服务器通信,这将在网络浏览器上显示它的位置和轨迹。
为了获得最佳使用效果,我必须传输设备的行进速度。一开始我想到了用Accelerometer,但是不适合这种情况。然后我在 embarcadero 文档中偶然发现了这个:http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Sensors.TCustomLocationSensor.Speed
这正是我所需要的,但是当我尝试获取值时,它总是 returns NaN,如上所述。在调试时,我终于在 System.Sensors
中找到了上面显示的代码,我觉得很奇怪,无论发生什么情况,函数总是 returns NaN ,因为我在网上找不到帮助(只有几个日文网站或俄语 http://www.360doc.com/content/17/0502/18/9200790_650383719.shtml
http://www.cyberforum.ru/delphi-beginners/thread1386722.html) 我发在这里了。
尽量不要使用标准的firemonkey TLocationSensor。而不是尝试基于本机 java 类 (JLocationListener).
实施解决方案 TAndroidLocationListener = class(TJavaLocal, JLocationListener)
public
constructor Create();
procedure onLocationChanged(location: JLocation); cdecl;
procedure onProviderDisabled(provider: JString); cdecl;
procedure onProviderEnabled(provider: JString); cdecl;
procedure onStatusChanged(provider: JString; status: Integer; extras: JBundle); cdecl;
end;
在onLocationChanged(location: JLocation); cdecl;
你会得到当前位置对象的实例(java接口)
出于测试目的,使用消息 location.getSpeed.ToString()
这里你有类似的问题