【发布时间】:2016-10-04 10:52:16
【问题描述】:
当我尝试在 Android 中使用加速度传感器时,它会导致 CPU 使用率过高 - 即使我尝试通过代码停止传感器并停用它。
我只需要在我的应用程序中读取一次加速度传感器,但 FireMonkey 似乎没有响应并且无法停止传感器。
代码如下:
var
Sensor: TCustomSensor;
begin
{ attempt to get and activate the sensor manager }
FSensorManager := TSensorManager.Current;
FSensorManager.Activate;
{ attempt to get an orientation sensor }
FSensors := TSensorManager.Current.GetSensorsByCategory(TSensorCategory.Motion);
FSensor := nil;
for Sensor in FSensors do
if TCustomMotionSensor(Sensor).SensorType = TMotionSensorType.Accelerometer3D then
begin
FSensor := TCustomMotionSensor(Sensor);
Break;
end;
if not Assigned(FSensor) then
begin
Exit; { no orientation sensor is available }
end;
{ start the sensor if it is not started }
if not FSensor.Started then
begin
FSensor.Start;
Timer1.Enabled := True;
end;
end;
我尝试通过以下方式停止传感器:
FSensor.Stop;
FSensorManager.Deactivate;
FSensor.Free;
FSensorManager.Free;
但看起来这根本不起作用!
以下是显示 CPU 使用率增加的屏幕截图:
【问题讨论】:
-
你忽略了产品版本的使用。请通过编辑您的问题来纠正此问题。
-
另外,您能否澄清一下……您是说您尝试停用传感器并不会停用传感器,就应用程序的 CPU 使用情况而言?这是一个假设吗?您可以通过查看停用传感器后仍然触发的事件来证明这一点吗?请在问题中添加更多细节,以平息任何查看您问题的人“阅读字里行间”的需求。
-
我使用“Rad studio 10.1 update 1”。当“FSensor.Start”突然执行时,手机CPU使用率增加到20%!并且在我关闭应用程序之前不会减少,即使在代码中我停用并释放“Fsensor”和“FSensorManager”。
-
为了完整起见,您使用哪个工具来评估 CPU 使用率?
-
您可以通过什么方式证明是您的传感器导致了这种 CPU 使用率?例如,您能否向我们展示一下此工具的屏幕截图?
标签: delphi firemonkey sensors delphi-10.1-berlin