当我尝试在Android中使用加速度传感器时,它会导致高CPU使用率 - 即使我尝试通过代码停止传感器并将其停用。FireMonkey 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使用率的增加:
After pushing button and activated sensor
你忽略了提及产品版本的用法。请通过编辑您的问题来解决这个问题。 – blong
另外,您是否可以澄清...您是说,如果您的应用程序的CPU使用率指示您尝试停用传感器,则不会停用传感器?这是一个假设吗?您能否通过在停用传感器后看到事件仍然激活来证明这一点? 请在问题中添加更多详细信息,以平息任何看待您问题的人对“在各行之间阅读”的需求。 – blong
我使用“Rad studio 10.1 update 1”。当“FSensor.Start”突然执行时,手机的CPU使用率增加到20%!直到我关闭应用程序,即使在代码中禁用并释放“Fsensor”和“FSensorManager”时也不会减少。 – khafan