[Solved] qtMobility.feedback HapticsEffect does not do what I want
-
I want to get 30 seconds vibration like what a call is coming does.
My code is
@import QtQuick 1.1
import com.nokia.symbian 1.1
import QtMobility.feedback 1.1Page {
id: mainPage
Text {
id:helloWordText
anchors.centerIn: parent
text: qsTr("Hello world!")
color: platformStyle.colorNormalLight
font.pixelSize: 20
}Button { anchors.horizontalCenter: parent.horizontalCenter anchors.top: helloWordText.bottom text: qsTr("Vibration") HapticsEffect { id: rumbleEffect intensity: 1.0 duration: 30000 } MouseArea { onClicked: { rumbleEffect.start(); // plays a rumble effect } } }
}
@And my .pro file is
@
Add more folders to ship with the application, here
folder_01.source = qml/testOfVibration
folder_01.target = qml
DEPLOYMENTFOLDERS = folder_01Additional import path used to resolve QML modules in Creator's code model
QML_IMPORT_PATH =
symbian:TARGET.UID3 = 0xE335C713
Smart Installer package's UID
This UID is from the protected range and therefore the package will
fail to install if self-signed. By default qmake uses the unprotected
range value if unprotected UID is defined for the application and
0x2002CCCF value if protected UID is given to the application
#symbian:DEPLOYMENT.installer_header = 0x2002CCCF
Allow network access on Symbian
symbian:TARGET.CAPABILITY += NetworkServices
If your application uses the Qt Mobility libraries, uncomment the following
lines and add the respective components to the MOBILITY variable.
CONFIG += mobility
MOBILITY +=
Speed up launching on MeeGo/Harmattan when using applauncherd daemon
CONFIG += qdeclarative-boostable
Add dependency to Symbian components
CONFIG += qt-components
CONFIG += mobility
MOBILITY = feedbackThe .cpp file which was generated for your project. Feel free to hack it.
SOURCES += main.cpp
Please do not modify the following two lines. Required for deployment.
include(qmlapplicationviewer/qmlapplicationviewer.pri)
qtcAddDeployment()@However, what I get is, when I press the button, the phone will vibrate, but only for a very small period of time, something like when you type in the native virtual keyboard. I have set duration to 30 seconds, but it does work. Anyone know why?
Thank you.
-
You may be exceeding the maximum time for an effect. I don't recall exactly how it works for Symbian, but it may be defaulting to a small number and discarding the 300000.
Try three seconds and if that works, then that's likely the issue. -
Then what should I do if I want to do a 30 seconds vibration? The feedback api is not fit for me? Is there any other api can do this?
-
Here's the docs on Symbian Haptics.
http://library.developer.nokia.com/topic/GUID-E35887BB-7E58-438C-AA27-97B2CDE7E069/GUID-251A35C1-CC66-4DE4-9EBE-964026E89E7F/GUID-2D2EBEA7-4E61-30AF-A09A-153F4C55BB53.htmlThe part of interest is
@
Duration of the effect. Unit is milliseconds.To specify an infinite duration, the effect duration should be set to InfiniteDuration(). For a finite duration, the effect duration is clamped to a value from 0 to the value returned by GetDeviceCapability() for the EHWRMHapticsMaxEffectDuration capability type.
@Both the Symbian and Qt docs suggest that an infinite value can be used for an ongoing effect, so try:
@
HapticsEffect {
id: rumbleEffect
intensity: 1.0
duration: Feedback.Infinite
Timer { id: stoptimer; interval: 30000; onTriggered: rumbleEffect.stop() }
}
MouseArea {
onClicked: {
rumbleEffect.start(); // plays a rumble effect
stoptimer.restart(); // Kill after 30s if not re-fired
}
}
@using a Timer to control the stop() behaviour.
Otherwise, if the above fails, you would likely need to fire off in succession enough HapticsEffect loops to get the vibration time you want.
Unfortunately it seems the API is unable to give you that magic duration - and chances are it's device specific. Choosing a small number, e.g. 2000ms and repeating that might be ok. -
The duration is an int property. So I get the error here:"duration: Feedback.Infinite"
@Unable to assign [undefined] to int duration@But the vibration this time is much stronger.
-
I find a project for this.
here.QVibra
"www.developer.nokia.com/Community/Wiki/How_to_use_QVibra_to_enable_vibration_in_QML":www.developer.nokia.com/Community/Wiki/How_to_use_QVibra_to_enable_vibration_in_QML