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. how to stop ringtone in qt android
Forum Updated to NodeBB v4.3 + New Features

how to stop ringtone in qt android

Scheduled Pinned Locked Moved Solved Mobile and Embedded
13 Posts 4 Posters 2.0k Views 1 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.
  • G Offline
    G Offline
    gotronics
    wrote on last edited by
    #3

    @gotronics said in how to stop ringtone in qt android:

    ring.callMethod<void>("stopPreviousRingtone");
    //ring.callObjectMethod("android/media/Ringtone","setVolume", "(F)V", 0);

    if(ring. is valid) is ok because it rings or the phone rings very well

    the problem is to stop it after 2 seconds by the
    the following functions are not working

    ring.callMethod<void>("stopPreviousRingtone");

    ring.callMethod<void>("setStopPreviousRingtone", "(Z)V", true);

    ring.callMethod<jboolean>("android/media/Ringtone","isPlaying", "(Z)V")

    1 Reply Last reply
    0
    • raven-worxR raven-worx

      @gotronics
      at what point does your code exactly fail?
      here if ( ring.isValid() )?

      Also note that many methods require to be called from Android's UI thread (which Qt code doesn't by default!).
      For this you can use QtAndroid::runOnAndroidThreadSync()

      But also its very likely that the console output (or LogCat) already gives some clues what is going wrong your case.

      G Offline
      G Offline
      gotronics
      wrote on last edited by
      #4

      @raven-worx
      thank you for the reply

      @gotronics said in how to stop ringtone in qt android:

      ring.callMethod<void>("stopPreviousRingtone");
      //ring.callObjectMethod("android/media/Ringtone","setVolume", "(F)V", 0);

      if(ring. is valid) is ok because it rings or the phone rings very well

      the problem is to stop it after 2 seconds by the
      the following functions are not working

      ring.callMethod<void>("stopPreviousRingtone");

      ring.callMethod<void>("setStopPreviousRingtone", "(Z)V", true);

      ring.callMethod<jboolean>("android/media/Ringtone","isPlaying", "(Z)V")

      1 Reply Last reply
      0
      • raven-worxR raven-worx

        @gotronics
        at what point does your code exactly fail?
        here if ( ring.isValid() )?

        Also note that many methods require to be called from Android's UI thread (which Qt code doesn't by default!).
        For this you can use QtAndroid::runOnAndroidThreadSync()

        But also its very likely that the console output (or LogCat) already gives some clues what is going wrong your case.

        G Offline
        G Offline
        gotronics
        wrote on last edited by
        #5
        This post is deleted!
        1 Reply Last reply
        0
        • raven-worxR raven-worx

          @gotronics
          at what point does your code exactly fail?
          here if ( ring.isValid() )?

          Also note that many methods require to be called from Android's UI thread (which Qt code doesn't by default!).
          For this you can use QtAndroid::runOnAndroidThreadSync()

          But also its very likely that the console output (or LogCat) already gives some clues what is going wrong your case.

          G Offline
          G Offline
          gotronics
          wrote on last edited by
          #6
          This post is deleted!
          1 Reply Last reply
          0
          • raven-worxR raven-worx

            @gotronics
            at what point does your code exactly fail?
            here if ( ring.isValid() )?

            Also note that many methods require to be called from Android's UI thread (which Qt code doesn't by default!).
            For this you can use QtAndroid::runOnAndroidThreadSync()

            But also its very likely that the console output (or LogCat) already gives some clues what is going wrong your case.

            G Offline
            G Offline
            gotronics
            wrote on last edited by
            #7

            @raven-worx
            sorry if you check again my code i corrected were i had initially commented
            ring.callMethod<void>("play");

            raven-worxR 1 Reply Last reply
            0
            • G gotronics

              @raven-worx
              sorry if you check again my code i corrected were i had initially commented
              ring.callMethod<void>("play");

              raven-worxR Offline
              raven-worxR Offline
              raven-worx
              Moderators
              wrote on last edited by raven-worx
              #8

              @gotronics
              the JNI signature for your isPlaying call is wrong. Should rather be ()Z (not (Z)V)

              Beside that i do not see the methods setStopPreviousRingtone and stopPreviousRingtone in the Ringtone class

              --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
              If you have a question please use the forum so others can benefit from the solution in the future

              G 1 Reply Last reply
              0
              • raven-worxR raven-worx

                @gotronics
                the JNI signature for your isPlaying call is wrong. Should rather be ()Z (not (Z)V)

                Beside that i do not see the methods setStopPreviousRingtone and stopPreviousRingtone in the Ringtone class

                G Offline
                G Offline
                gotronics
                wrote on last edited by
                #9

                @raven-worx
                setStopPreviousRingtone and stopPreviousRingtone are from RingToneManager
                so used incorrectly in RingTone class. I have corrected there and i can now stop the ringtone using this ring.call("stop", "()V");
                and ring.callMethod<jboolean>("isPlaying", "()Z")) now working
                thank you very much.

                i still have challenge on the following

                QString str;
                  QMessageBox::information(this, " Volume", str.setNum(ring.callMethod<jfloat>("getVolume", "()F")));
                

                i am getting 0 even though the ringtone volume is way above 0 level

                1 Reply Last reply
                0
                • raven-worxR raven-worx

                  @gotronics
                  at what point does your code exactly fail?
                  here if ( ring.isValid() )?

                  Also note that many methods require to be called from Android's UI thread (which Qt code doesn't by default!).
                  For this you can use QtAndroid::runOnAndroidThreadSync()

                  But also its very likely that the console output (or LogCat) already gives some clues what is going wrong your case.

                  G Offline
                  G Offline
                  gotronics
                  wrote on last edited by
                  #10

                  @raven-worx
                  setStopPreviousRingtone and stopPreviousRingtone are from RingToneManager
                  so used incorrectly in RingTone class. I have corrected there and i can now stop the ringtone using this ring.call("stop", "()V");
                  and ring.callMethod<jboolean>("isPlaying", "()Z")) now working
                  thank you very much.

                  i still have challenge on the following

                  QString str;
                  QMessageBox::information(this, " Volume", str.setNum(ring.callMethod<jfloat>("getVolume", "()F")));
                  i am getting 0 even though the ringtone volume is way above 0 level

                  1 Reply Last reply
                  0
                  • raven-worxR raven-worx

                    @gotronics
                    at what point does your code exactly fail?
                    here if ( ring.isValid() )?

                    Also note that many methods require to be called from Android's UI thread (which Qt code doesn't by default!).
                    For this you can use QtAndroid::runOnAndroidThreadSync()

                    But also its very likely that the console output (or LogCat) already gives some clues what is going wrong your case.

                    G Offline
                    G Offline
                    gotronics
                    wrote on last edited by
                    #11

                    @raven-worx

                    i have been going through android api and discovered that getVolume() was introduced in API 28 its not working because i am using API19
                    thank you very much

                    1 Reply Last reply
                    0
                    • R Offline
                      R Offline
                      Ruiz
                      Banned
                      wrote on last edited by
                      #12
                      This post is deleted!
                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        Massimiliano11
                        wrote on last edited by
                        #13
                        This post is deleted!
                        1 Reply Last reply
                        0

                        • Login

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