summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/android/accessibility/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java9
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java34
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtNative.java10
-rw-r--r--src/plugins/platforms/android/androidjniaccessibility.cpp10
-rw-r--r--src/plugins/platforms/android/androidjniaccessibility.h1
-rw-r--r--src/plugins/platforms/android/qandroidplatformaccessibility.cpp5
-rw-r--r--src/plugins/platforms/android/qandroidplatformintegration.cpp6
7 files changed, 49 insertions, 26 deletions
diff --git a/src/android/accessibility/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java b/src/android/accessibility/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java
index 56e7543415..6f95675597 100644
--- a/src/android/accessibility/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java
+++ b/src/android/accessibility/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java
@@ -107,10 +107,6 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate
if (m_manager.isEnabled())
accServiceListener.onAccessibilityStateChanged(true);
}
-
-
- // Enable Qt Accessibility so that notifications are enabled
- QtNativeAccessibility.setActive(true);
}
private class AccessibilityManagerListener implements AccessibilityManager.AccessibilityStateChangeListener
@@ -119,8 +115,6 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate
public void onAccessibilityStateChanged(boolean enabled)
{
if (enabled) {
- // The accessibility code depends on android API level 16, so dynamically resolve it
- if (android.os.Build.VERSION.SDK_INT >= 16) {
try {
View view = m_view;
if (view == null) {
@@ -147,13 +141,14 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate
// Unknown exception means something went wrong.
Log.w("Qt A11y", "Unknown exception: " + e.toString());
}
- }
} else {
if (m_view != null) {
m_layout.removeView(m_view);
m_view = null;
}
}
+
+ QtNativeAccessibility.setActive(enabled);
}
}
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
index d6cd49f44c..f4d2645e9a 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
@@ -794,7 +794,25 @@ public class QtActivityDelegate
m_surfaces = new HashMap<Integer, QtSurface>();
m_nativeViews = new HashMap<Integer, View>();
m_activity.registerForContextMenu(m_layout);
+ m_activity.setContentView(m_layout,
+ new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT));
+ int orientation = m_activity.getResources().getConfiguration().orientation;
+ int rotation = m_activity.getWindowManager().getDefaultDisplay().getRotation();
+ boolean rot90 = (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270);
+ boolean currentlyLandscape = (orientation == Configuration.ORIENTATION_LANDSCAPE);
+ if ((currentlyLandscape && !rot90) || (!currentlyLandscape && rot90))
+ m_nativeOrientation = Configuration.ORIENTATION_LANDSCAPE;
+ else
+ m_nativeOrientation = Configuration.ORIENTATION_PORTRAIT;
+
+ QtNative.handleOrientationChanged(rotation, m_nativeOrientation);
+ m_currentRotation = rotation;
+ }
+
+ public void initializeAccessibility()
+ {
// Initialize accessibility
try {
final String a11yDelegateClassName = "org.qtproject.qt5.android.accessibility.QtAccessibilityDelegate";
@@ -810,22 +828,6 @@ public class QtActivityDelegate
// Unknown exception means something went wrong.
Log.w("Qt A11y", "Unknown exception: " + e.toString());
}
-
- m_activity.setContentView(m_layout,
- new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT));
-
- int orientation = m_activity.getResources().getConfiguration().orientation;
- int rotation = m_activity.getWindowManager().getDefaultDisplay().getRotation();
- boolean rot90 = (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270);
- boolean currentlyLandscape = (orientation == Configuration.ORIENTATION_LANDSCAPE);
- if ((currentlyLandscape && !rot90) || (!currentlyLandscape && rot90))
- m_nativeOrientation = Configuration.ORIENTATION_LANDSCAPE;
- else
- m_nativeOrientation = Configuration.ORIENTATION_PORTRAIT;
-
- QtNative.handleOrientationChanged(rotation, m_nativeOrientation);
- m_currentRotation = rotation;
}
public void onConfigurationChanged(Configuration configuration)
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
index b2480618f8..040eba5e42 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
@@ -571,6 +571,16 @@ public class QtNative
});
}
+ private static void initializeAccessibility()
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ m_activityDelegate.initializeAccessibility();
+ }
+ });
+ }
+
// screen methods
public static native void setDisplayMetrics(int screenWidthPixels,
int screenHeightPixels,
diff --git a/src/plugins/platforms/android/androidjniaccessibility.cpp b/src/plugins/platforms/android/androidjniaccessibility.cpp
index f8c3e26229..69f8bdbad7 100644
--- a/src/plugins/platforms/android/androidjniaccessibility.cpp
+++ b/src/plugins/platforms/android/androidjniaccessibility.cpp
@@ -42,6 +42,7 @@
#include "QtGui/qaccessible.h"
#include <QtCore/qmath.h>
#include <QtCore/private/qjnihelpers_p.h>
+#include <QtCore/private/qjni_p.h>
#include "qdebug.h"
@@ -65,6 +66,15 @@ namespace QtAndroidAccessibility
static jmethodID m_setTextSelectionMethodID = 0;
static jmethodID m_setVisibleToUserMethodID = 0;
+ void initialize()
+ {
+ // API level > 16 is required.
+ if (QtAndroidPrivate::androidSdkVersion() < 16)
+ return;
+
+ QJNIObjectPrivate::callStaticMethod<void>(QtAndroid::applicationClass(),
+ "initializeAccessibility");
+ }
static void setActive(JNIEnv */*env*/, jobject /*thiz*/, jboolean active)
{
diff --git a/src/plugins/platforms/android/androidjniaccessibility.h b/src/plugins/platforms/android/androidjniaccessibility.h
index 9201353118..a4cbab7834 100644
--- a/src/plugins/platforms/android/androidjniaccessibility.h
+++ b/src/plugins/platforms/android/androidjniaccessibility.h
@@ -40,6 +40,7 @@ QT_BEGIN_NAMESPACE
namespace QtAndroidAccessibility
{
+ void initialize();
bool registerNatives(JNIEnv *env);
}
diff --git a/src/plugins/platforms/android/qandroidplatformaccessibility.cpp b/src/plugins/platforms/android/qandroidplatformaccessibility.cpp
index e3a8b1a8f4..339023bd9f 100644
--- a/src/plugins/platforms/android/qandroidplatformaccessibility.cpp
+++ b/src/plugins/platforms/android/qandroidplatformaccessibility.cpp
@@ -33,11 +33,14 @@
#include "qandroidplatformaccessibility.h"
+#include "androidjniaccessibility.h"
QT_BEGIN_NAMESPACE
QAndroidPlatformAccessibility::QAndroidPlatformAccessibility()
-{}
+{
+ QtAndroidAccessibility::initialize();
+}
QAndroidPlatformAccessibility::~QAndroidPlatformAccessibility()
{}
diff --git a/src/plugins/platforms/android/qandroidplatformintegration.cpp b/src/plugins/platforms/android/qandroidplatformintegration.cpp
index eb96bf11f0..2a127f5c3c 100644
--- a/src/plugins/platforms/android/qandroidplatformintegration.cpp
+++ b/src/plugins/platforms/android/qandroidplatformintegration.cpp
@@ -148,6 +148,10 @@ QAndroidPlatformIntegration::QAndroidPlatformIntegration(const QStringList &para
m_androidSystemLocale = new QAndroidSystemLocale;
+#ifndef QT_NO_ACCESSIBILITY
+ m_accessibility = new QAndroidPlatformAccessibility();
+#endif // QT_NO_ACCESSIBILITY
+
QJNIObjectPrivate javaActivity(QtAndroid::activity());
if (javaActivity.isValid()) {
QJNIObjectPrivate resources = javaActivity.callObjectMethod("getResources", "()Landroid/content/res/Resources;");
@@ -348,8 +352,6 @@ void QAndroidPlatformIntegration::setScreenOrientation(Qt::ScreenOrientation cur
#ifndef QT_NO_ACCESSIBILITY
QPlatformAccessibility *QAndroidPlatformIntegration::accessibility() const
{
- if (!m_accessibility)
- m_accessibility = new QAndroidPlatformAccessibility();
return m_accessibility;
}
#endif