当前位置: 代码迷 >> Android >> 修复 XE8 for Android 方向传感器 headingX,Y,Z 不会动的有关问题
  详细解决方案

修复 XE8 for Android 方向传感器 headingX,Y,Z 不会动的有关问题

热度:493   发布时间:2016-04-28 01:02:04.0
修复 XE8 for Android 方向传感器 headingX,Y,Z 不会动的问题

问题:XE8 for Android 方向传感器无法正常运作(在 XE7 是正常的)

测试:官方示例 Samples\Object Pascal\Mobile Snippets\OrientationSensor\

适用:XE8 for Android

修复方法:

请将源码 System.Android.Sensors.pas 复制到自己的工程目录里,再进行修改。

修改下面代码:

  TAndroidNativeMagneticSensor = class(TCustomOrientationSensor)  strict private    FNativeSensor: TNativeSensor;  protected    function GetUpdateInterval: Double;  override;    procedure SetUpdateInterval(AInterval: Double); override;    function GetOrientationSensorType: TOrientationSensorType; override;{+++>} // 加入下面二行代码    function DoStart: Boolean; override;    procedure DoStop; override;{<+++}    function GetSensorCategory: TSensorCategory; override;    function GetState: TSensorState; override;    function GetTimeStamp: TDateTime; override;    function GetAvailableProperties: TCustomOrientationSensor.TProperties; override;    function GetDoubleProperty(Prop: TCustomOrientationSensor.TProperty): Double; override;  public    constructor Create(AManager: TSensorManager); override;    function Supported: Boolean;  end;

找到 TAndroidNativeMagneticSensor.Create 加入下面代码:

... 略 ...constructor TAndroidNativeMagneticSensor.Create(AManager: TSensorManager);begin  inherited;  FNativeSensor := TNativeSensor.Create(ASENSOR_TYPE_MAGNETIC_FIELD);end;{+++>} // 加入下面代码function TAndroidNativeMagneticSensor.DoStart: Boolean;begin  Result := FNativeSensor.DoStart;end;procedure TAndroidNativeMagneticSensor.DoStop;begin  inherited;  FNativeSensor.DoStop;end;{<+++} // 加入上面代码 ... 略 ...

 

  相关解决方案