Added vibration
This commit is contained in:
53
vibration.cpp
Normal file
53
vibration.cpp
Normal file
@@ -0,0 +1,53 @@
|
||||
#include "vibration.h"
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
|
||||
Vibration::Vibration(QObject *parent) : QObject(parent)
|
||||
{
|
||||
#ifdef ANDROID
|
||||
activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");
|
||||
|
||||
QAndroidJniObject vibroString = QAndroidJniObject::fromString("vibrator");
|
||||
QAndroidJniObject appctx = activity.callObjectMethod("getApplicationContext","()Landroid/content/Context;");
|
||||
vibratorService = appctx.callObjectMethod("getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;", vibroString.object<jstring>());
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void Vibration::vibrate(int milliseconds)
|
||||
{
|
||||
#ifdef ANDROID
|
||||
if (vibratorService.isValid()) {
|
||||
jlong ms = milliseconds;
|
||||
jboolean hasvibro = vibratorService.callMethod<jboolean>("hasVibrator", "()Z");
|
||||
|
||||
if (hasvibro) {
|
||||
vibratorService.callMethod<void>("vibrate", "(J)V", ms);
|
||||
}
|
||||
} else {
|
||||
qDebug() << "No vibrator service available";
|
||||
}
|
||||
|
||||
jint notifcationType = QAndroidJniObject::getStaticField<jint>("android/media/RingtoneManager", "TYPE_NOTIFICATION");
|
||||
QAndroidJniObject notification = QAndroidJniObject::callStaticObjectMethod("android/media/RingtoneManager", "getDefaultUri", "(I)Landroid/net/Uri;", notifcationType);
|
||||
if ( notification.isValid() )
|
||||
{
|
||||
// Note that package and class names needs to be separated with '/' and not '.'
|
||||
QAndroidJniObject ring = QAndroidJniObject::callStaticObjectMethod("android/media/RingtoneManager",
|
||||
"getRingtone",
|
||||
"(Landroid/content/Context;Landroid/net/Uri;)Landroid/media/Ringtone;",
|
||||
activity.object<jobject>(),
|
||||
notification.object<jobject>());
|
||||
if ( ring.isValid() )
|
||||
{
|
||||
ring.callMethod<void>("play", "()V");
|
||||
}
|
||||
}
|
||||
#else
|
||||
Q_UNUSED(milliseconds);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user