Проблема с датчиком - акселерометр

У меня гэлакси таб 1000.

Я пытаюсь написать код, который будет идентифицировать ЛЮБОЕ движение.

У меня версия 2.2 на телефоне.

Это код oncreate.


OnCreate()
    mySensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
        mySensorManager.registerListener(mySensorEventListener, mySensorManager
                .getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_NORMAL); // 

Это датчик onsensor, измененная реализация (очень простая, я думаю), но не работающая


if (event.sensor.getType() == SensorManager.SENSOR_ACCELEROMETER) // Do WORK

event.sensor.getType() возвращает 1

Если я это сделаю: getSensorList(Sensor.TYPE_ALL); Я получаю датчики компас, компас, BMA150 (ускорение), температуру, магнит, приближение, свет и гироскоп.

(странно - я думал, что это только в 3.0)

Подскажите, пожалуйста, как сделать датчик движения на телефоне.

Благодарность



person Saariko    schedule 08.06.2011    source источник
comment
Разве BMA150 (ускорение) не тот, который вам нужен? Акселерометр — это «обнаружение движения».   -  person CL22    schedule 08.06.2011
comment
ты прав. Мне удалось заставить его работать с помощью этих датчиков.   -  person Saariko    schedule 17.06.2011


Ответы (1)


Я немного смущен тем, что именно вы хотите сделать, но из того, что я понимаю, вы хотите получить данные об ускорении в своем onSensorChanged. Ваш on create выглядит нормально, однако вы можете проверить, правильно ли они регистрируют слушателя, проверив логическое значение, возвращаемое из registerListener. Вот что я делаю, когда прослушиваю событие и получаю возвращенные значения.

    @Override
    public void onSensorChanged(SensorEvent event)
    {
        // If the sensor data is unreliable return
        if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE)
        {
            //Toast.makeText(main.this, "Sensor Status Unreliable",Toast.LENGTH_SHORT).show();
            return;
        }


        // Gets the value of the sensor that has been changed
        switch (event.sensor.getType())
        {
        case Sensor.TYPE_ACCELEROMETER:
            m_vAccel = event.values.clone();
            break;
        }

В противном случае вы также можете использовать датчик линейного ускорения, который аналогичен датчику акселерометра за вычетом гравитации. http://developer.android.com/reference/android/hardware/SensorEvent.html

person ocross    schedule 16.06.2011