Ориентация Android в качестве рулевого механизма - рулонный шаг? - PullRequest
5 голосов
/ 08 марта 2011

Привет, ребята,

Я работаю над проектом, который включает в себя приложение Android, которое используется для контроль / руля.

  • Скорость: Когда вы наклоняете телефон вперед / назад (подача), он имитирует подачу газа и ломку.
  • Направление: Когда вы наклоняете телефон влево / вправо (поворачивайте), он имитирует рулевое управление влево и вправо.

Я уже написал некоторый код, который, кажется, работает нормально. Но когда я посмотрел поближе, я обнаружил, что некоторые значения ведут себя странно.

Когда я наклоняю телефон вперед / назад, чтобы справиться со скоростью, она прекрасно работает, я получаю ожидаемые значения скорости и направления. Но когда я наклоняю телефон влево / вправо для управления направлением, кажется, что некоторые значения портятся. Когда он наклоняется влево / вправо, это не только меняет значение направления (крен), но также влияет на значение скорости (шаг).

Для дополнительной информации:

  • Программирование для Android 2.2
  • Устройство является Google Nexus One
  • Удержание устройства в портретном положении

Наиболее актуальный код, который я использую для считывания значений датчика, выглядит следующим образом:

public void onSensorChanged(SensorEvent sensorEvent)
{        
    synchronized (this)
    {
        if (sensorEvent.sensor.getType() == Sensor.TYPE_ORIENTATION)
        {
            float azimuth = sensorEvent.values[0]; // azimuth rotation around the z-axis
            float pitch = sensorEvent.values[1];   // pitch rotation around the x-axis
            float roll = sensorEvent.values[2];    // roll rotation around the y-axis

            System.out.println("pitch: " + pitch);
            System.out.println("roll: " + roll);
            System.out.println("--------------------");

            // Convert the sensor values to the actual speed and direction values
            float speed = (pitch * 2.222f) + 200;
            float direction = roll * -2.222f;    

Итак, когда я запускаю код и смотрю на напечатанные значения. При наклоне устройства влево / вправо это также влияет на значение высоты тона. Как так? И как я могу получить чистое значение высоты тона, когда "катится"? Таким образом, наклон телефона влево / вправо не влияет на значение высоты тона.

Любая помощь очень ценится.

С уважением

1 Ответ

2 голосов
/ 08 марта 2011

Вы можете прочитать о Замок подвеса . Это меня укусило раньше.

...