Обнаружение полного вращения по оси X (360 градусов) с помощью Flutter AccelerometerEvents - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь определить, когда устройство полностью вращается вокруг своей оси X с помощью Dart и акселерометра мобильного устройства.

Это моя идея, как реализовать это:

  1. получить положение оси X

  2. сохранить значение

  3. Всегда, когда позиция меняется, я добавляю новую позицию к сохраненному мной значению (индексу).Таким образом, у меня есть положительные числа для левого вращения и отрицательные для правого вращения.Когда телефон "лицом вниз", индекс равен нулю, а следующее значение должно быть отрицательным или положительным, в зависимости от направления вращения телефона.

Это то, что я уже сделал:

accelerometerEvents.listen((AccelerometerEvent event) {
      var rounded = event.x.round();
      var oldPosition = xPosition;
      var countX = 0;

      if (xPosition != null) {
        if (oldPosition != rounded) {
          if (rounded.isNegative) {
            /* right rotation */

          } else {
            /* left rotation */
            if (rounded > oldPosition) {
              countX = rotationIndex + rounded;
            } else {
              countX = rotationIndex - rounded;
            }
          }

          setState(() {
            x = rounded.toString();
            xPosition = rounded;
            rotationIndex = countX;
          });
        }
      } else {
        setState(() {
          xPosition = rounded;
        });
      }
    });

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

Спасибо за помощь:)

...