Android 传感器 CPU 使用率

标签 android accelerometer cpu-usage android-sensors

我正在尝试从 Samsung Galaxy Tab GT-P1000 读取多个传感器,相对于我使用的应用程序,它们似乎非常占用 CPU。

作为测试,我创建了一个简短的程序,它为加速度计传感器实现了 SensorEventListener,但不对传感器读数执行任何操作:

public class SensorTestActivity extends Activity implements SensorEventListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        SensorManager oSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
        oSensorManager.registerListener(this, oSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub

    }
}

这导致我在调试时(即我的设备已插入我的 PC)和 5% 的使用率在我不调试时持续使用 10%。如果我使用 SENSOR_DELAY_FASTEST,则在我调试时使用率飙升至恒定的 30%,而在我不调试时则飙升至 20%。

当我想使用多个传感器时,这会产生一个大问题,因为它们都有很高的 CPU 使用率,而且没有任何数据处理。我使用过来自 Android Market 的 Compass 应用程序,它们在给定时间都没有使用超过 5% 的 CPU,所以我觉得我遗漏了一些明显的东西,但找不到其他有同样问题的人.

我没有编辑此应用程序的 list 文件或布局 - 它是 Eclipse 制作的默认模板,我已经添加了传感器。

更新:我读取 CPU 使用率的方法有缺陷,因为我使用任务管理器来测量它。当任务管理器打开时,我的应用程序不会使用 onPause 停止传感器,而大多数其他应用程序会这样做。

最佳答案

This results in 10% constant CPU usage while I'm debugging (ie my device is plugged in to my PC) and 5% usage while I'm not. If I use SENSOR_DELAY_FASTEST, the usage skyrockets to constant 30% while I'm debugging and 20% while I'm not.

然后使用 SENSOR_DELAY_UISENSOR_DELAY_NORMAL,这两种方法都不太频繁地更新传感器数据,并且应该相应地消耗较少的 CPU 时间。

I've used Compass applications from the Android Market and none of them use more than 5% of the CPU at a given time

他们可能不使用 SENSOR_DELAY_GAMESENSOR_DELAY_FASTEST

除此之外,不同的设备(可能具有不同的传感器芯片组)可能会导致不同的 CPU 使用率。例如,某些设备在 LogCat 中非常烦人——根据传感器读数记录的设备会相应地慢一些。

此外,我不知道您是如何测量 CPU 利用率的,但我不知道有任何官方支持的测量方法。相反,我会关注游戏中的帧速率或您正在编写的任何内容。

关于Android 传感器 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8228394/

相关文章:

android - 应用程序图标在 Android 的 Intent 选择器中不可见

android - 使用 Android 加速度计检测振动

accelerometer - 处理加速度计数据

linux - 用于 CPU 负载监控的 Shell 脚本

performance - 对 CPU 性能进行基准测试的脚本给出了可用于与其他服务器进行比较的结果?

android - 没有此类属性:类com.android.builder.core.AndroidBuilder的bootClasspath

安卓高通BoostFramework()

raspberry-pi - kworker 在空闲系统上的 CPU 使用率很高

java - 使用多个dex文件时是否需要将同一个包的类保存在同一个dex中

c - 使用 IMU 传感器跟踪 2D 定位