forked from benlau/quickandroid
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathquickandroid.cpp
More file actions
41 lines (34 loc) · 1.12 KB
/
quickandroid.cpp
File metadata and controls
41 lines (34 loc) · 1.12 KB
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
#include <QtQml>
#include <QVariantMap>
#include "quickandroid.h"
#ifdef Q_OS_ANDROID
#include <QAndroidJniEnvironment>
#include <QAndroidJniObject>
#endif
//static QVariantMap data;
static qreal m_dp = 1;
static qreal m_dpi = 72;
static QJSValue aProvider(QQmlEngine *engine, QJSEngine *scriptEngine)
{
Q_UNUSED(engine);
QJSValue value = scriptEngine->newObject();
value.setProperty("dp",m_dp);
value.setProperty("dpi",m_dpi);
return value;
}
void QuickAndroid::registerTypes()
{
Q_UNUSED(m_dpi);
#ifdef Q_OS_ANDROID
QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");
QAndroidJniObject resource = activity.callObjectMethod("getResources","()Landroid/content/res/Resources;");
QAndroidJniObject metrics = resource.callObjectMethod("getDisplayMetrics","()Landroid/util/DisplayMetrics;");
m_dp = metrics.getField<float>("density");
m_dpi = metrics.getField<int>("densityDpi");
#endif
qmlRegisterSingletonType("QuickAndroid", 0, 1, "A", aProvider);
}
qreal QuickAndroid::dp()
{
return m_dp;
}