android - Qt5.2.1 get GPS location on Samsung Galaxy S2Plus (I9105P) -


i trying gps coordinates using qt5.2.1 on samsung galaxy s2 plus. tried:

  1. calling qgeopositioninfosource::availablesources() returns empty list.
  2. i tried qgeopositioninfosource::createdefaultsource() , returns null pointer.
  3. i have set permissions in androidmanifest.xml, qtcreator:

    android.permission.access_coarse_location

    android.permission.access_fine_location

  4. i tried qnmeapositioninfosource class, have call setdevice() method setting qiodevice, don't know can device. there "/dev/bcm_gps" accessing nmea gps coordinates ?

note: trying on samsung galaxy s2 plus, cyanogenmode11 (android 4.4.2), baseband i9105pxxumbi, kernel 3.0.101. other gps applications works ok, it's not cyanogen bug.

here complete sources. it's minimal project getting gps coordinates , display them in textedit. don't i'm doing wrong.

here .pro file:

#------------------------------------------------- # # project created qtcreator 2014-02-05t15:48:22 # #-------------------------------------------------  qt       += core gui positioning sql  greaterthan(qt_major_version, 4): qt += widgets  target = test_position template = app   sources += main.cpp\     mainwindow.cpp  headers  += mainwindow.h  forms    += mainwindow.ui  config += mobility mobility +=  android_package_source_dir = $$pwd/android  other_files += \       android/androidmanifest.xml 

here main.cpp

#include "mainwindow.h" #include <qapplication>  int main(int argc, char *argv[]) {     qapplication a(argc, argv);     mainwindow w;     w.show();      return a.exec(); } 

here trying location api:

#include "mainwindow.h" #include "ui_mainwindow.h"  mainwindow::mainwindow(qwidget *parent) :      qmainwindow(parent),      ui(new ui::mainwindow) {     ui->setupui(this);      timer = new qtimer(this);     timer->setsingleshot(true);     connect(timer, signal(timeout()), this, slot(setupgps()));     timer->start(1000); }  void mainwindow::setupgps() {     qstringlist services = qgeopositioninfosource::availablesources();      if (services.isempty()) { //services empty         ui->textedit->settext("positioning sources unavailable");     timer->start(1000);     return;     }      /**********************************gps trials***********************************/     //    ui->textedit->settext("retry gps connection");     source = qgeopositioninfosource::createdefaultsource(this);     if(source){ //never enter here         ui->textedit->settext("success");         source->setpreferredpositioningmethods(qgeopositioninfosource::         allpositioningmethods);         connect(source, signal(positionupdated(qgeopositioninfo)),                 this, slot(positionupdated(qgeopositioninfo)));         source->startupdates();     } else {         nmealocation = new qnmeapositioninfosource(qnmeapositioninfosource::         realtimemode, this);         //      ui->textedit->settext("available sources = " + qstring::number(         nmealocation->supportedpositioningmethods()));         qiodevice* dev = nmealocation->device();         if(dev){             ui->textedit->settext("got device");         }         else {             ui->textedit->settext("failed device");         }         //        nmealocation->setdevice();         timer->start(1000);     } }  void mainwindow::errorpositioning(qgeopositioninfosource::error er){     ui->textedit->settext("error = " + qstring::number(er)); }  void mainwindow::positionupdated(const qgeopositioninfo &info) {     qstring latitude, longitude;     latitude.setnum(info.coordinate().latitude());     longitude.setnum(info.coordinate().longitude());     ui->textedit->settext("position updated: " + latitude + " " + longitude); }  mainwindow::~mainwindow() {     delete ui; } 

here header file:

#ifndef mainwindow_h #define mainwindow_h  #include <qmainwindow>  #include <qtpositioning/qgeoaddress> #include <qtpositioning/qgeoareamonitorinfo> #include <qtpositioning/qgeoareamonitorsource> #include <qtpositioning/qgeocircle> #include <qtpositioning/qgeocoordinate> #include <qtpositioning/qgeolocation> #include <qtpositioning/qgeopositioninfosource> #include <qtpositioning/qgeosatelliteinfosource> #include <qtpositioning/qnmeapositioninfosource> #include <qtimer> #include <qdebug>  namespace ui { class mainwindow; }  class mainwindow : public qmainwindow {     q_object  public: explicit mainwindow(qwidget *parent = 0); ~mainwindow();  private: qgeopositioninfosource *source; qtimer* timer; ui::mainwindow *ui; qnmeapositioninfosource *nmealocation;  private slots: void setupgps(); void errorpositioning(qgeopositioninfosource::error er); void positionupdated(const qgeopositioninfo &info); }; 

#endif // mainwindow_h

and here android manifest:

<?xml version='1.0' encoding='utf-8'?> <manifest android:versioncode="1" xmlns:android="http://schemas.android.com/apk/res/android" android:installlocation="auto" android:versionname="1.0"  package="org.qtproject.example"> <application android:label="@string/app_name" android:hardwareaccelerated="true"  android:name="org.qtproject.qt5.android.bindings.qtapplication">      <activity android:label="@string/app_name"  android:name="org.qtproject.qt5.android.bindings.qtactivity"  android:configchanges="orientation|uimode|screenlayout|screensize |smallestscreensize|locale|fontscale|keyboard|keyboardhidden|navigation"  android:screenorientation="unspecified">         <intent-filter>             <action android:name="android.intent.action.main"/>             <category android:name="android.intent.category.launcher"/>         </intent-filter>         <meta-data android:name="android.app.lib_name" android:value="--  %%insert_app_lib_name%% --"/>         <meta-data android:resource="@array/qt_sources"  android:name="android.app.qt_sources_resource_id"/>         <meta-data android:name="android.app.repository" android:value="default"/>         <meta-data android:resource="@array/qt_libs"  android:name="android.app.qt_libs_resource_id"/>         <meta-data android:resource="@array/bundled_libs"  android:name="android.app.bundled_libs_resource_id"/>         <!-- deploy qt libs part of package -->         <meta-data android:name="android.app.bundle_local_qt_libs" android:value="--  %%bundle_local_qt_libs%% --"/>         <meta-data android:resource="@array/bundled_in_lib"  android:name="android.app.bundled_in_lib_resource_id"/>         <meta-data android:resource="@array/bundled_in_assets"  android:name="android.app.bundled_in_assets_resource_id"/>         <!-- run local libs -->         <meta-data android:name="android.app.use_local_qt_libs" android:value="--  %%use_local_qt_libs%% --"/>         <meta-data android:name="android.app.libs_prefix"  android:value="/data/local/tmp/qt/"/>         <meta-data android:name="android.app.load_local_libs" android:value="--  %%insert_local_libs%% --"/>         <meta-data android:name="android.app.load_local_jars" android:value="--  %%insert_local_jars%% --"/>         <meta-data android:name="android.app.static_init_classes" android:value="--  %%insert_init_classes%% --"/>         <!--  messages maps -->         <meta-data android:name="android.app.ministro_not_found_msg"  android:value="@string/ministro_not_found_msg"/>         <meta-data android:name="android.app.ministro_needed_msg"  android:value="@string/ministro_needed_msg"/>         <meta-data android:name="android.app.fatal_error_msg"  android:value="@string/fatal_error_msg"/>         <!--  messages maps -->         <!-- splash screen -->         <meta-data android:resource="@layout/splash"  android:name="android.app.splash_screen"/>         <!-- splash screen -->     </activity> </application> <uses-sdk android:targetsdkversion="14" android:minsdkversion="9"/> <supports-screens android:anydensity="true" android:smallscreens="true"  android:normalscreens="true" android:largescreens="true"/> <!-- %%insert_permissions --> <!-- %%insert_features --> <uses-permission android:name="android.permission.access_coarse_location"/> <uses-permission android:name="android.permission.access_fine_location"/> <uses-permission android:name="android.permission.internet"/> <uses-permission android:name="android.permission.write_external_storage"/> </manifest> 

as can see here (middle of post), qt positioning module not yet implemented on android, alas. planned (not guaranteed) next qt version, 5.3, expected released around end of april 2014 (source).


Comments

Popular posts from this blog

python - Subclassed QStyledItemDelegate ignores Stylesheet -

java - HttpClient 3.1 Connection pooling vs HttpClient 4.3.2 -

SQL: Divide the sum of values in one table with the count of rows in another -