Использование процессора сенсором Android

Я пытаюсь прочитать данные нескольких датчиков с Samsung Galaxy Tab GT-P1000, и они, похоже, сильно загружают процессор по сравнению с приложениями, которые я использовал.

В качестве теста я создал короткую программу, которая реализует 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

    }
}

Это приводит к 10% постоянной загрузке ЦП во время отладки (т. Е. Мое устройство подключен к моему ПК) и 5% использования, а я нет. Если я использую SENSOR_DELAY_FASTEST, использование резко возрастает до постоянных 30%, пока я отлаживаю, и 20%, пока я не занимаюсь отладкой.

Это создает серьезную проблему, когда я хочу использовать несколько датчиков, потому что все они имеют высокую загрузку ЦП и это без какой-либо обработки данных. Я использовал приложения Compass из Android Market, и ни одно из них не использует более 5% ЦП в данный момент, поэтому мне кажется, что я упускаю что-то явно очевидное, но не могу найти никого, у кого такая же проблема. .

Я не редактировал файл манифеста или макет для этого приложения - это шаблон по умолчанию, созданный Eclipse, и я добавил Sensor.

ОБНОВЛЕНИЕ: мой метод чтения использования ЦП ошибочен, потому что я использовал диспетчер задач для его измерения. Мое приложение не останавливает датчики с помощью onPause при открытии диспетчера задач, в отличие от большинства других приложений.

6
задан Namdrater 22 November 2011 в 16:44
поделиться