Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Add a service in an Android Qt app
Forum Updated to NodeBB v4.3 + New Features

Add a service in an Android Qt app

Scheduled Pinned Locked Moved Solved Mobile and Embedded
12 Posts 4 Posters 2.3k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    mrdebug
    wrote on 14 Feb 2022, 18:38 last edited by mrdebug
    #3

    In the apk there isn't the .so service file. To put it into I have added it using ANDROID_EXTRA_LIBS but still does not work.
    In order to start an app service of an external .so library, which are the steps?
    Have I to call the "startMyService" function or the <service> section od manifest file is enought?

    Need programmers to hire?
    www.labcsp.com
    www.denisgottardello.it
    GMT+1
    Skype: mrdebug

    K 1 Reply Last reply 14 Feb 2022, 19:20
    0
    • M mrdebug
      14 Feb 2022, 18:38

      In the apk there isn't the .so service file. To put it into I have added it using ANDROID_EXTRA_LIBS but still does not work.
      In order to start an app service of an external .so library, which are the steps?
      Have I to call the "startMyService" function or the <service> section od manifest file is enought?

      K Offline
      K Offline
      KroMignon
      wrote on 14 Feb 2022, 19:20 last edited by
      #4

      @mrdebug You have to create a BroadcastReceiver and call it through the manifest to start the service
      cf. :https://doc.qt.io/qt-5/android-services.html#start-a-service-on-demand

      Something like:

      public class BootMyServiceBroadcastReceiver extends BroadcastReceiver {
          @Override
          public void onReceive(Context context, Intent intent) {
              Intent startServiceIntent = new Intent(context, MyService.class);
              context.startService(startServiceIntent);
          }
      }
      

      And in Manifest, in application section:

      <receiver android:name=".BootMyServiceBroadcastReceiver">
          <intent-filter>
              <action android:name="android.intent.action.MAIN" />
          </intent-filter>
      </receiver>
      

      It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

      1 Reply Last reply
      0
      • M Offline
        M Offline
        mrdebug
        wrote on 14 Feb 2022, 21:50 last edited by
        #5

        Thanks for the reply. My problem is not when to call "context.startService(startServiceIntent);" (i call it on demand). The problem is how to call the "main(int argc, char *argv[])" function of the separate .so library.

        My "startMyService(Context ctx)" method is called correctly (I see the log of it). After that I see the log of "onCreate()" method but my .so library library never starts.
        Is this section of manifest file wrong?

                <service android:process=":qt_service" android:name="com.kdab.training.MyService">
                            <meta-data android:name="android.app.lib_name" android:value="service"/>
                            <meta-data android:name="android.app.background_running" android:value="true"/>
                        </service>
        

        Need programmers to hire?
        www.labcsp.com
        www.denisgottardello.it
        GMT+1
        Skype: mrdebug

        K 1 Reply Last reply 14 Feb 2022, 22:13
        0
        • M mrdebug
          14 Feb 2022, 21:50

          Thanks for the reply. My problem is not when to call "context.startService(startServiceIntent);" (i call it on demand). The problem is how to call the "main(int argc, char *argv[])" function of the separate .so library.

          My "startMyService(Context ctx)" method is called correctly (I see the log of it). After that I see the log of "onCreate()" method but my .so library library never starts.
          Is this section of manifest file wrong?

                  <service android:process=":qt_service" android:name="com.kdab.training.MyService">
                              <meta-data android:name="android.app.lib_name" android:value="service"/>
                              <meta-data android:name="android.app.background_running" android:value="true"/>
                          </service>
          
          K Offline
          K Offline
          KroMignon
          wrote on 14 Feb 2022, 22:13 last edited by
          #6

          @mrdebug said in Add a service in an Android Qt app:

          Thanks for the reply. My problem is not when to call "context.startService(startServiceIntent);" (i call it on demand). The problem is how to call the "main(int argc, char *argv[])" function of the separate .so library.
          My "startMyService(Context ctx)" method is called correctly (I see the log of it). After that I see the log of "onCreate()" method but my .so library library never starts.
          Is this section of manifest file wrong?

          Sorry, I don't understand what your problem is.
          The main() function is called on Activity or Service start, so if your service is running, main() has been called.

          It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

          1 Reply Last reply
          0
          • D Offline
            D Offline
            Darude 0
            wrote on 16 Feb 2022, 16:55 last edited by
            #7

            I've same problem too. Three months ago I wrote a sample app to test Android services. All worked well. Now, when I rebuild that code, i see the same behavior that you described. QtService seems never loading the library, so my service main function is never called. I'm trying to understand... I don't remember if i upgraded some part of toolchain or library in last 3 months, but it's very probable. Anyway, @mrdebug code is correct in my opinion. It's very similar to mine (I followed kdab example too).

            1 Reply Last reply
            0
            • M Offline
              M Offline
              mrdebug
              wrote on 16 Feb 2022, 17:00 last edited by
              #8

              After a long time (and 1 night at the pc) I have found the solution. There are many steps to do in order to have a pure c++ service embedded in an Qt Android app. The Qt - C++ service work perfecly, fast and stable.
              Sorry if I don't write the solution here. The solution requires a full project and it is not possible to upload it here.

              Need programmers to hire?
              www.labcsp.com
              www.denisgottardello.it
              GMT+1
              Skype: mrdebug

              P 1 Reply Last reply 16 Feb 2022, 19:42
              0
              • M mrdebug
                16 Feb 2022, 17:00

                After a long time (and 1 night at the pc) I have found the solution. There are many steps to do in order to have a pure c++ service embedded in an Qt Android app. The Qt - C++ service work perfecly, fast and stable.
                Sorry if I don't write the solution here. The solution requires a full project and it is not possible to upload it here.

                P Offline
                P Offline
                piervalli
                wrote on 16 Feb 2022, 19:42 last edited by
                #9

                @mrdebug should share the example on Github?

                Thanks

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mrdebug
                  wrote on 17 Feb 2022, 09:37 last edited by
                  #10

                  Here you are
                  https://github.com/denisgottardello/QtAndroidServiceExternalLib
                  Keep adb logcat active to see the full log

                  Need programmers to hire?
                  www.labcsp.com
                  www.denisgottardello.it
                  GMT+1
                  Skype: mrdebug

                  1 Reply Last reply
                  0
                  • D Offline
                    D Offline
                    Darude 0
                    wrote on 17 Feb 2022, 15:59 last edited by
                    #11

                    as @mrdebug wrote, the service .so library file is never copied into apk. Coming back to Qt Creator 5.0.0 from 6.0.2, all files are copied properly into the package and all works well again.

                    P 1 Reply Last reply 18 Feb 2022, 07:16
                    0
                    • D Darude 0
                      17 Feb 2022, 15:59

                      as @mrdebug wrote, the service .so library file is never copied into apk. Coming back to Qt Creator 5.0.0 from 6.0.2, all files are copied properly into the package and all works well again.

                      P Offline
                      P Offline
                      piervalli
                      wrote on 18 Feb 2022, 07:16 last edited by piervalli
                      #12

                      @Darude-0 , as tricks I use "ANDROID_EXTRA_LIBS" to copy library into apk.

                      for (abi, ANDROID_ABIS): {
                        message(The LibCore will be installed in $${abi})
                        ANDROID_EXTRA_LIBS += $$OUT_PWD/../LibCore/libLibCore_$${abi}.so
                        LIBS += -L$$OUT_PWD/../LibCore/ -lLibCore_$${abi}
                      }
                      
                      1 Reply Last reply
                      0

                      12/12

                      18 Feb 2022, 07:16

                      • Login

                      • Login or register to search.
                      12 out of 12
                      • First post
                        12/12
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved