Nam*_*ter 6 android accelerometer cpu-usage android-sensors
我试图从三星Galaxy Tab GT-P1000读取多个传感器,相对于我使用的应用程序,它们似乎相当糟糕地占用了CPU.
作为测试,我创建了一个简短的程序,它实现了Accelerometer传感器的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
}
}
Run Code Online (Sandbox Code Playgroud)
这导致我在调试时(即我的设备已插入我的PC)10%的CPU使用率和5%的使用率而我不是.如果我使用SENSOR_DELAY_FASTEST,那么在我调试时,使用率会持续增长30%,而在我调试时则增长20%.
当我想使用多个传感器时,这会产生一个大问题,因为它们都具有高CPU使用率且没有任何数据处理.我已经使用了Android Market的Compass应用程序,并且他们在给定时间都没有使用超过5%的CPU,所以我觉得我错过了一些明显的东西,但找不到其他人有同样的问题.
我没有为这个应用程序编辑清单文件或布局 - 它是Eclipse制作的默认模板,我添加了传感器.
更新:我读取CPU使用率的方法存在缺陷,因为我正在使用任务管理器来测量它.我的应用程序不是在任务管理器打开时使用onPause停止传感器,而大多数其他应用程序会这样做.
这会导致我在调试时(即我的设备插入我的 PC)时 CPU 使用率恒定为 10%,而在调试时则为 5%。如果我使用 SENSOR_DELAY_FASTEST,则在调试时使用率会飙升至恒定 30%,而在调试时则使用率飙升至恒定 20%。
然后使用SENSOR_DELAY_UI或SENSOR_DELAY_NORMAL,两者更新传感器数据的频率都较低,因此消耗的 CPU 时间也相应较少。
我使用过 Android Market 中的 Compass 应用程序,但它们在给定时间使用的 CPU 都不超过 5%
他们可能不使用SENSOR_DELAY_GAMEor SENSOR_DELAY_FASTEST。
除此之外,不同的设备(可能具有不同的传感器芯片组)可能会导致不同的 CPU 利用率。例如,某些设备在 LogCat 中非常烦人——基于传感器读数进行记录的设备会相应地变慢。
另外,我不知道你如何测量 CPU 利用率,但我不知道有任何官方支持的方法来做到这一点。我会重点关注游戏中的帧速率或您正在编写的任何内容。
| 归档时间: |
|
| 查看次数: |
1615 次 |
| 最近记录: |