-
Notifications
You must be signed in to change notification settings - Fork 2
/
qmlbanner.cpp
88 lines (75 loc) · 1.96 KB
/
qmlbanner.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "qmlbanner.h"
#ifdef Q_OS_ANDROID
#include <QAndroidJniObject>
#include <qpa/qplatformnativeinterface.h>
#include <QGuiApplication>
#ifdef __cplusplus
extern "C" {
#endif
// Listener when Java calls onBannerLoaded signal
JNIEXPORT void JNICALL Java_org_qtproject_SimpleWeather_QtAdMobActivity_onBannerLoaded(JNIEnv *env, jobject thiz)
{
Q_UNUSED(env)
Q_UNUSED(thiz)
// Emit to QML app by calling bannerLoaded signal
emit QmlBanner::Instances()->bannerLoaded();
}
#ifdef __cplusplus
}
#endif
#endif
// Global variable to keep instance of class
static QmlBanner *mQMLBanner = NULL;
// Implement Instances() method
QmlBanner* QmlBanner::Instances()
{
return mQMLBanner;
}
// Implement initialize method
QmlBanner::QmlBanner()
{
// Update global instance
mQMLBanner = this;
#ifdef Q_OS_ANDROID
// Create Android Activity on Qt
QPlatformNativeInterface* interface = QGuiApplication::platformNativeInterface();
jobject activity = (jobject)interface->nativeResourceForIntegration("QtActivity");
if (activity)
{
m_Activity = new QAndroidJniObject(activity);
}
// Call InitializeBanner method of Java
m_Activity->callMethod<void>("InitializeBanner");
#endif
}
void QmlBanner::setUnitId(const QString& unitId)
{
#ifdef Q_OS_ANDROID
if(m_Activity != 0)
{
QAndroidJniObject param1 = QAndroidJniObject::fromString(unitId);
// Call SetBannerUnitId method of Java
m_Activity->callMethod<void>("SetBannerUnitId", "(Ljava/lang/String;)V", param1.object<jstring>());
}
#endif
}
void QmlBanner::setBannerSize(BannerSizes size)
{
#ifdef Q_OS_ANDROID
if(m_Activity != 0)
{
// Call SetBannerSize method of Java
m_Activity->callMethod<void>("SetBannerSize", "(I)V", (int)size);
}
#endif
}
void QmlBanner::loadBanner()
{
#ifdef Q_OS_ANDROID
if(m_Activity != 0)
{
// Call LoadBanner method of Java
m_Activity->callMethod<void>("LoadBanner");
}
#endif
}