Privacy policyContactsAbout siteOpinionsGitHubDonate
© EVILEG 2015-2018
Recommend hosting
TIMEWEB
m
Feb. 12, 2019, 2:56 p.m.

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

sensors, QAccelerometer, Android, service, Qt

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

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

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

private: 
    QAccelerometer *m_sensor;

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

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

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

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

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

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

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

3

Добрый день

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

0
m

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

QT += core positioning network sql sensors

android {
    QT += androidextras
}

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

QT       += qml quick network positioning sql sensors
android {
    QT += androidextras webview
}
0
m

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

1

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Last comments
Feb. 21, 2019, 12:51 p.m.
Евгений Легоцкой

Иногда CMake приходится перезапускать начисто, не обновляет кэш
R
Feb. 21, 2019, 12:29 p.m.
RandyGallup

Я указал данные строки, т.к. без них у меня вылетала следующая ошибка: By not providing "FindQt5Core.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configurat...
Feb. 21, 2019, 12:08 p.m.
BlinCT

Вот атк выглядит мой проектник, посмотрите его. cmake_minimum_required(VERSION 3.6)project(projecttimer)set(CMAKE_CXX_STANDARD 11)set(CMAKE_AUTOMOC ON)set(CMAKE_AUTORCC ON)find_packa...
Feb. 21, 2019, 12:04 p.m.
BlinCT

Смотрите, если вы используете глобально для проекта -DCMAKE_PREFIX_PATH= то вам не надо уже указывать вот эти строкиset(Qt5Core_DIR "C:/Qt/5.12.1/mingw73_64/lib/cmake/Qt5Core")set(Qt5Gui_DIR...
R
Feb. 21, 2019, 11:54 a.m.
RandyGallup

Даже не запускается. main.cpp у меня точно такой же, как в статье. CMakeLists.txt пришлось немного подправить (прикрепил ниже), т.к. не находились некоторые файлы. cmake_minimum_requi...
Now discuss on the forum
Feb. 21, 2019, 8:58 a.m.
Евгений Легоцкой

Ну у меня координаты передавались в зависимости от положения курсора мыши, а в вам по сути нужно будет аналогичным способом посылать даннные из полей ввода. Так что здесь скорее интерфес...
Feb. 20, 2019, 9:55 p.m.
Евгений Легоцкой

Не до конца понимаю сути вопроса, наверное, нужно увидеть программный код и попытку его применения, но к методам базового класса можно обращаться в наследованном классе через вызов по имени ба...
MU
Feb. 20, 2019, 3:06 p.m.
Maciej Urmański

Yes, ok I have solution! Thank you for directing me about annotate.:) Solution is: users_in = User.objects.filter(joined_users__goal=goal, joined_users__joined=True)
Feb. 20, 2019, 2:40 p.m.
Евгений Легоцкой

Думаю, что ещё можно переопределить mouseReleaseEvent(QMouseEvent* event) у QTableView, который содержит модель и немного поиграться с индексом. Если это индекс, который соответству...
Feb. 20, 2019, 10:34 a.m.
Евгений Легоцкой

Да, так тоже можно. Единственный момент в том, что lupdate не всегда понимает, к какому контексту это дело относится, и может запихать в левый контекст. В небольшом проекте это не критич...
Join us in social networks

For registered users on the site there is a minimum amount of advertising