m
12 лютого 2019 р. 20:56

Не удается запустить акселерометр в android-сервисе

sensors, QAccelerometer, Android, service, Qt

Добрый вечер.
Уже несколько дней пытаюсь решить проблему с работой акселерометра в android-сервисе. Перепробовал разные варианты, но решить проблему так и не удается.

Сервис разрабатываю как отдельное приложение. После сборки подключаю его в основной проект как .so библиотеку.

В сервисе пишу следующий код для запуска акселерометра:
в .h файле:

  1. private:
  2. QAccelerometer *m_sensor;

в .cpp файле (в конструкторе класса):

  1. GSensorClass::GSensorClass(QObject *parent) : QObject(parent)
  2. {
  3. m_sensor = new QAccelerometer(this);
  4. connect(m_sensor, SIGNAL(readingChanged()),
  5. this, SLOT(onReadingChanged()));
  6. m_sensor->setAlwaysOn(true); //Должен работать постоянно, даже при выключенном экране и в фоне
  7. m_sensor->start(); //Вот именно здесь и появляется проблема
  8. }

m_sensor->start(); возвращает false. При этом, если вызвать m_sensor->error(), возвращает 0. Соответственно, в слот onReadingChanged войти не удается.

В файле .pro сервиса и основного проекта добавлено - QT += sensors.
В AndroidManifest.xml основного проекта добавлена строка

  1. <uses-feature android:name="android.hardware.sensor.accelerometer" />

Если этот же код запустить в GUI-приложении под Android, все работает, координаты x,y,z удается получить. Но в сервисе (консольном приложении) метод start не срабатывает, и возвращает false.

Может быть что-то не правильно делаю? Надеюсь, что реализация получения данных от акселерометра в android-сервисе на Qt возможна?
Помогите, пожалуйста, решить проблему.

2

Вам це подобається? Поділіться в соціальних мережах!

3
Evgenii Legotckoi
  • 13 лютого 2019 р. 16:18

Добрый день

А какие все модули добавлены в pro файле? Я имею ввиду QT директиву. Можно полный список?

    m
    • 13 лютого 2019 р. 16:25

    Добрый день.
    В сервисе:

    1. QT += core positioning network sql sensors
    2.  
    3. android {
    4. QT += androidextras
    5. }
    6.  

    В основном приложении:

    1. QT += qml quick network positioning sql sensors
    2. android {
    3. QT += androidextras webview
    4. }
      m
      • 15 лютого 2019 р. 00:28
      • Відповідь була позначена як рішення.

      Нашел решение на Java. Удалось интегрировать в проект сервиса на Qt, теперь из Qt запускаю Java-код акселерометра.

        Коментарі

        Only authorized users can post comments.
        Please, Log in or Sign up
        • Останні коментарі
        • Evgenii Legotckoi
          16 квітня 2025 р. 17:08
          Благодарю за отзыв. И вам желаю всяческих успехов!
        • IscanderChe
          12 квітня 2025 р. 17:12
          Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
        • AK
          01 квітня 2025 р. 11:41
          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
        • Evgenii Legotckoi
          09 березня 2025 р. 21:02
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
        • VP
          09 березня 2025 р. 16:14
          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…