m
Feb. 12, 2019, 8:56 p.m.

Не удается запустить акселерометр в 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

Do you like it? Share on social networks!

3
Evgenii Legotckoi
  • Feb. 13, 2019, 4:18 p.m.

Добрый день

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

    m
    • Feb. 13, 2019, 4:25 p.m.

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

    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
      • Feb. 15, 2019, 12:28 a.m.
      • The answer was marked as a solution.

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

        Comments

        Only authorized users can post comments.
        Please, Log in or Sign up
        • Last comments
        • Evgenii Legotckoi
          March 9, 2025, 9:02 p.m.
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
        • VP
          March 9, 2025, 4:14 p.m.
          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
        • ИМ
          Nov. 22, 2024, 9:51 p.m.
          Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
        • Evgenii Legotckoi
          Oct. 31, 2024, 11:37 p.m.
          Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
        • A
          Oct. 19, 2024, 5:19 p.m.
          Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html