使用QT android振动设备无法正常工作

时间:2015-08-19 18:34:17

标签: android qt vibrate

在尝试使用这段代码振动设备时,我在Android上遇到了2个QT问题:

1 - 设备开始连续振动,停止它的唯一方法是重启设备!我必须调用vibrator.callMethod(“cancel”)以编程方式停止它。

2 - 如果应用程序没有关注,设备不会振动。然后当它再次聚焦时,设备开始振动很长时间并停止(就像振动请求被堆叠然后一个接一个地执行)

我想即使移动设备闲置或者没有关注应用程序,我也必须处理振动设备的服务。 我没有在QT环境中找到任何示例。 我想从服务器收到警报时振动设备。

 void MainWindow::android_vibrate()
 {
      QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");
      if ( activity.isValid() )
      {
          // This gets the string value of the VIBRATOR_SERVICE field.
          QAndroidJniObject serviceField = QAndroidJniObject::getStaticObjectField<jstring>("android/content/Context", "VIBRATOR_SERVICE");
          if ( serviceField.isValid() )
          {
              QAndroidJniObject vibrator = activity.callObjectMethod("getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;",serviceField.object<jobject>());
              if ( vibrator.isValid() )
              {
                  // Note that vibrate takes a long and not an int as argument.
                  long duration = 200;
                  vibrator.callMethod<void>("vibrate", "(J)V", duration );
              }
          }
       }
  }

0 个答案:

没有答案