diff --git a/android/app/src/main/cpp/native.cpp b/android/app/src/main/cpp/native.cpp index ca0312db0e..5822eb77a4 100644 --- a/android/app/src/main/cpp/native.cpp +++ b/android/app/src/main/cpp/native.cpp @@ -158,9 +158,9 @@ JNIEXPORT void Java_io_highfidelity_hifiinterface_InterfaceActivity_nativeOnCrea __interfaceActivity.callMethod("openAndroidActivity", "(Ljava/lang/String;Z)V", string.object(), jBackToScene); }); - QObject::connect(&AndroidHelper::instance(), &AndroidHelper::hapticFeedbackRequested, [](const QString &c) { - QAndroidJniObject string = QAndroidJniObject::fromString(c); - __interfaceActivity.callMethod("performHapticFeedback", "(Ljava/lang/String;)V", string.object()); + QObject::connect(&AndroidHelper::instance(), &AndroidHelper::hapticFeedbackRequested, [](int duration) { + jint iDuration = (jint) duration; + __interfaceActivity.callMethod("performHapticFeedback", "(I)V", iDuration); }); } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java index 4d1e13becf..acd6a60eb7 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java @@ -214,12 +214,9 @@ public class InterfaceActivity extends QtActivity { super.isLoading = false; } - public void performHapticFeedback(String feedbackConstant) { - switch (feedbackConstant) { - case "CONTEXT_CLICK": - default: - mVibrator.vibrate(50); - break; + public void performHapticFeedback(int duration) { + if (duration > 0) { + mVibrator.vibrate(duration); } } diff --git a/interface/src/AndroidHelper.cpp b/interface/src/AndroidHelper.cpp index 9d31ff49fa..246fb06941 100644 --- a/interface/src/AndroidHelper.cpp +++ b/interface/src/AndroidHelper.cpp @@ -45,8 +45,8 @@ void AndroidHelper::notifyLoadComplete() { emit qtAppLoadComplete(); } -void AndroidHelper::performHapticFeedback(const QString& feedbackConstant) { - emit hapticFeedbackRequested(feedbackConstant); +void AndroidHelper::notifyEnterForeground() { + emit enterForeground(); } void AndroidHelper::showLoginDialog() { diff --git a/interface/src/AndroidHelper.h b/interface/src/AndroidHelper.h index 2a281f605b..13ce981fd8 100644 --- a/interface/src/AndroidHelper.h +++ b/interface/src/AndroidHelper.h @@ -27,7 +27,7 @@ public: void requestActivity(const QString &activityName, const bool backToScene); void notifyLoadComplete(); - void performHapticFeedback(const QString& feedbackConstant); + void performHapticFeedback(int duration); QSharedPointer getAccountManager() { return _accountManager; } AndroidHelper(AndroidHelper const&) = delete; @@ -40,7 +40,7 @@ signals: void androidActivityRequested(const QString &activityName, const bool backToScene); void qtAppLoadComplete(); - void hapticFeedbackRequested(const QString &feedbackConstant); + void hapticFeedbackRequested(int duration); private: AndroidHelper(); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 3bc0d14c94..6086b9bfd8 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2867,8 +2867,8 @@ void Application::initializeUi() { #if defined(Q_OS_ANDROID) auto& virtualPadManager = VirtualPad::Manager::instance(); connect(&virtualPadManager, &VirtualPad::Manager::hapticFeedbackRequested, - this, []() { - AndroidHelper::instance().performHapticFeedback("CONTEXT_CLICK"); + this, [](int duration) { + AndroidHelper::instance().performHapticFeedback(duration); }); #endif } diff --git a/libraries/input-plugins/src/input-plugins/TouchscreenVirtualPadDevice.cpp b/libraries/input-plugins/src/input-plugins/TouchscreenVirtualPadDevice.cpp index a8e509b7ce..ba802ced15 100644 --- a/libraries/input-plugins/src/input-plugins/TouchscreenVirtualPadDevice.cpp +++ b/libraries/input-plugins/src/input-plugins/TouchscreenVirtualPadDevice.cpp @@ -189,7 +189,7 @@ void TouchscreenVirtualPadDevice::InputDevice::update(float deltaTime, const con bool TouchscreenVirtualPadDevice::InputDevice::triggerHapticPulse(float strength, float duration, controller::Hand hand) { auto& virtualPadManager = VirtualPad::Manager::instance(); - virtualPadManager.requestHapticFeedback(); + virtualPadManager.requestHapticFeedback((int) duration); return true; } diff --git a/libraries/ui/src/VirtualPadManager.cpp b/libraries/ui/src/VirtualPadManager.cpp index e62a439ab8..ef2b8670cc 100644 --- a/libraries/ui/src/VirtualPadManager.cpp +++ b/libraries/ui/src/VirtualPadManager.cpp @@ -84,8 +84,8 @@ namespace VirtualPad { _jumpButtonPosition = point; } - void Manager::requestHapticFeedback() { - emit hapticFeedbackRequested(); + void Manager::requestHapticFeedback(int duration) { + emit hapticFeedbackRequested(duration); } Instance* Manager::getLeftVirtualPad() { diff --git a/libraries/ui/src/VirtualPadManager.h b/libraries/ui/src/VirtualPadManager.h index 6391d731f8..3c3aa9ec9f 100644 --- a/libraries/ui/src/VirtualPadManager.h +++ b/libraries/ui/src/VirtualPadManager.h @@ -46,7 +46,7 @@ namespace VirtualPad { void setExtraBottomMargin(int margin); glm::vec2 getJumpButtonPosition(); void setJumpButtonPosition(glm::vec2 point); - void requestHapticFeedback(); + void requestHapticFeedback(int duration); static const float DPI; static const float BASE_DIAMETER_PIXELS; @@ -58,7 +58,7 @@ namespace VirtualPad { static const float JUMP_BTN_RIGHT_MARGIN_PIXELS; signals: - void hapticFeedbackRequested(); + void hapticFeedbackRequested(int duration); private: Instance _leftVPadInstance; diff --git a/scripts/system/+android/modes.js b/scripts/system/+android/modes.js index 9e952e3cb6..f0dfb64677 100644 --- a/scripts/system/+android/modes.js +++ b/scripts/system/+android/modes.js @@ -69,7 +69,7 @@ function shutdown() { } function modeButtonPressed() { - Controller.triggerHapticPulse(Controller.findDevice("TouchscreenVirtualPad"), 0.1, 1.0, 0); + Controller.triggerHapticPulseOnDevice(Controller.findDevice("TouchscreenVirtualPad"), 0.1, 40.0, 0); } function modeButtonClicked() {