Uso de la CPU del sensor Android

Estoy tratando de leer varios sensores de un Samsung Galaxy Tab GT-P1000 y que parecen estar hogging la CPU bastante mal en relación con las aplicaciones que he utilizado.

Como prueba, creé un programa corto que implementa SensorEventListener para el sensor Acelerómetro, pero no hace nada con las lecturas del sensor:

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 } } 

Esto se traduce en un 10% de uso constante de la CPU mientras estoy depurando (es decir, mi dispositivo está conectado a mi PC) y un 5% de uso, mientras que no lo estoy. Si utilizo SENSOR_DELAY_FASTEST, el uso sube a 30% constante mientras estoy depurando y 20% mientras no lo estoy.

Esto crea un problema masivo cuando quiero usar varios sensores, porque todos tienen un uso alto de la CPU y eso es sin ningún procesamiento de datos. He utilizado las aplicaciones de Compass del Android Market y ninguna de ellas usa más del 5% de la CPU en un momento dado, así que siento que estoy perdiendo algo evidentemente obvio, pero no puedo encontrar a nadie que tenga el mismo problema .

No he editado el archivo de manifiesto o el diseño para esta aplicación – es la plantilla predeterminada hecha por Eclipse y he añadido el sensor.

UPDATE: Mi método de leer el uso de la CPU es defectuoso, porque estaba utilizando el administrador de tareas para medirlo. Mi aplicación no está deteniendo los sensores usando onPause cuando se abre el gestor de tareas, mientras que la mayoría de las otras aplicaciones lo harían.

Esto se traduce en un 10% de uso constante de la CPU mientras estoy depurando (es decir, mi dispositivo está conectado a mi PC) y un 5% de uso, mientras que no lo estoy. Si utilizo SENSOR_DELAY_FASTEST, el uso sube a 30% constante mientras estoy depurando y 20% mientras no lo estoy.

A continuación, utilice SENSOR_DELAY_UI o SENSOR_DELAY_NORMAL , los cuales le actualizarán con menos frecuencia los datos del sensor y deberán consumir menos tiempo de CPU correspondiente.

He utilizado las aplicaciones Compass del Android Market y ninguna de ellas utiliza más del 5% de la CPU en un momento dado

Probablemente no utilicen SENSOR_DELAY_GAME o SENSOR_DELAY_FASTEST .

Más allá de eso, los diferentes dispositivos (quizás con diferentes chipsets de sensores) pueden resultar en una utilización diferente de la CPU. Por ejemplo, algunos dispositivos son molesto charla en LogCat – los dispositivos que el registro basado en las lecturas del sensor sería conmensurately más lento.

Además, no sé cómo está midiendo la utilización de la CPU, pero no tengo conocimiento de ningún medio oficialmente compatible para hacer eso. Me centraría en cambio en cosas como la velocidad de fotogramas en su juego o lo que sea que está escribiendo.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.