Sto provando a leggere più sensori da un Galaxy Tab GT-P1000 di Samsung e sembra che stiano facendo un po 'male alla CPU rispetto alle applicazioni che ho usato.Utilizzo sensore CPU Android
Come prova, ho creato un breve programma che implementa la SensorEventListener per il sensore accelerometro, ma non fa nulla con le letture del sensore:
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
}
}
Ciò si traduce in un uso costante della CPU del 10%, mentre io sono il debug (cioè il mio dispositivo è collegato al mio PC) e il 5% di utilizzo mentre non lo sono. Se uso SENSOR_DELAY_FASTEST, l'utilizzo sale a costante del 30% mentre eseguo il debug e il 20% mentre non lo sono.
Questo crea un problema enorme quando voglio usare sensori multipli, perché tutti hanno elevato utilizzo della CPU e questo è senza alcuna elaborazione dei dati. Ho usato le applicazioni Compass dall'Android Market e nessuno di loro usa più del 5% della CPU in un dato momento, quindi mi sento come se mi mancasse qualcosa di evidentemente ovvio, ma non riesco a trovare nessun altro con lo stesso problema .
non ho modificato il file manifesto o il layout per questa applicazione - è il modello predefinito fatta da Eclipse e ho aggiunto il sensore.
UPDATE: Il mio metodo di lettura l'utilizzo della CPU è difettosa, perché stavo usando il task manager per misurarla. La mia applicazione non interrompe i sensori usando onPause quando si apre il task manager, mentre la maggior parte delle altre applicazioni lo farebbero.
ero abbastanza sciocco con la mia dichiarazione circa l'utilizzo della CPU - ho misurato l'utilizzo nel Task Manager, dimenticando che la maggior parte delle applicazioni PAUSE i sensori quando faccio questo e, quindi, dare davvero un piccolo lettura. D'altro canto, la mia applicazione non aveva fermato i sensori in un metodo onPause sovrascritto. Forse il modo migliore per risolvere questo è provare a impostare i miei ritardi personalizzati o uno di quelli dati, perché l'aggiunta di più sensori come il magnometro o il giroscopio potrebbe davvero causare brutte cose. – Namdrater
@ user1021922: non è possibile creare ritardi personalizzati, mi dispiace. – CommonsWare