m
Ақп. 12, 2019, 8: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, 4:18 Т.Қ.

Добрый день

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

    m
    • Ақп. 13, 2019, 4: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, 12:28 Т.Ж.
      • Жауап шешім ретінде белгіленді.

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

        Пікірлер

        Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
        Кіріңіз немесе Тіркеліңіз