Add more config changes needed for API 13+
API 13+ is mandatory to build any Qt for Android application.
Change-Id: I595f7174dd2fc8a0865772f9780ce606e1f1fcf1
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
We would spam the debug output on devices with api < 16 with some
warnings that the super class a11y delegate could not be found and
others.
Instead check the runtime version before trying to load the JNI code and
only load the delegate if api is new enough.
Change-Id: I52286cb99924b034b9b58c53566f15030939b0c9
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
emitInputPanelVisibleChanged when virtual keyboard visibility is changed.
Task-number: QTBUG-34347
Change-Id: Iab7374db42ff8ce6f33dcc793b23f84d3c8692d5
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Make sure the back key event is not sent to applicaton as long as the keyboard
is still visible.
Task-number: QTBUG-30803
Change-Id: I8063981a96ddb8e065c1281b1bdc0fb4a2895bc2
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Cleanup the theme handling.
Set default theme, needed by native dialogs.
Needs Ministro v9.6+.
Change-Id: Ia131edd8712b7737d3118d714c7772adb8f27acd
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
The order of "android:value" and "android:name" attributes can be changed when
saving the XML document. Use placeholders instead.
Change-Id: I9a97bb0df2d2d16c8a9443a21ce7d3290e0ab466
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
strings.xml file is used to store strings that can/should be internationalized.
Change-Id: I2fc305b6917752e9f502bd4beb172205ba4f9fba
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Needed for autotest script, so that we can pass command line
arguments to Qt Test.
This can now be done by:
% adb shell am start \
-e applicationArguments "argument1 argument2" \
<INTENT>
Change-Id: I772209f66da055c6a0b01b709f36e33fdb5c2ed6
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
The Android 4.3 keyboard will cause setComposingRegion() to be called when
backspacing over an existing word. If we don't implement that, the editor
will be out of sync with the input method.
Task-number: QTBUG-32955
Change-Id: I6c4ff786269a4e74c70a093c5f03c4c5a5727dd5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
When targeting API level 13 or higher, you need to explicitly
subscribe to configuration changes for screen size, otherwise
surfaceChanged() will not be called when you change the
orientation of the screen.
Task-number: QTBUG-33140
Change-Id: I48fd1d298c408802d1743736f62128cd0eec8983
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
When doing slow, precise movements, some devices will report
differences of less than 1 pixel. This would mark the points
as stationary, meaning that Qt would discard them without reporting.
On the three devices I have tested, stationary points are reported with
a 0.0 difference. If any devices are reporting noisy values, it is
still safer to test for equality, since it is much better to report
too many move events than to not report any.
Task-number: QTBUG-33729
Change-Id: If20f2758f5a5ec0917184345b558f55a3d383807
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
The InputMethodHint enum values were changed between Qt 4.8 and 5.1, and
the hardcoded copies were not updated. Thanks to Lasconic for finding
the solution to this problem.
Task-number: QTBUG-32072
Task-number: QTBUG-32710
Change-Id: I3eb1192911a9c48d7720e85b91bee1af693a669d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
A common problem is that examples and other apps are unusable on
Android when they are inside the Qt directory. There doesn't
really seem to be any good reason for having a special case in
place, since this will only affect applications which are not built
with the host toolchain, and we aren't building any command line
apps for the target devices. So the only thing this will affect are
the examples and we want those to be installed into the correct
path.
Change-Id: Ibae365e06eb77944f11e596c16c3c5baf798848c
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Make it possible for the androiddeployqt tool to replace certain
parts of the template with data from the .pro file.
Task-number: QTBUG-32856
Change-Id: Iaedd2076bc1ea5dac0b94624c0ba3a755d2a08f3
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
The application state is tied to the QtActivity lifecycle.
Mapping of states between Android and Qt is as follows:
onResume --> ApplicationActive
onPause --> ApplicationInactive
onStop --> ApplicationSuspended
Change-Id: Iefef08d6c7a7fde28fba1f4886882458cda6a0c0
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
This enables both modes for TalkBack,
explore-by-touch and the normal swiping mode.
It is partially inspired by the BarGraphView example
of the Google/Android Eyes-Free project.
Note that for any accessibility to work you'll need
a device with api level 16 at least.
Using reflection we should be able to dynamically pick up
the classes if we have the high enough api level.
Change-Id: I11b93bead451483782a1711434d45c8f9a35996f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
The minimum SDK version supported should be set to 9, since this
is required by Qt. We also set the target SDK version to 14, since
this will remove certain compatibility features, like the overflow
button in the action bar.
Task-number: QTBUG-30860
Change-Id: Iddd0eba2e802d03c5fe6e9b5da626808bbbad71d
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
This patch fixes the warning uncoverd by the -Xlint:unchecked option
by parametrising the generics with wildcards.
src/org/qtproject/qt5/android/QtActivityDelegate.java:315:
warning: [unchecked] unchecked call to getMethod(String,Class<?>...) as a member of the raw type Class
Method m = initClass.getMethod("setActivity", Activity.class, Object.class);
Change-Id: I665e9dfd6d64c92a491d68c838ad02bde275d604
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Before this patch we always send mouse events for each
touch event that happens.
This is redundant (we already synthesize in
QGuiApplicatioin) and breaks some touch handling
in QtQuick2.
Change-Id: I4bc1686a7a46039901315619a0acdf2888ad6775
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
On Android, when not using Ministro, we cannot read certificates
from the file system, so we have to get them through Java APIs instead.
Change-Id: I415329fcb45836735c1112dbe832214b3c73dc9a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Even though the documentation says that "This should never normally
happen", we do get a "navigation" change when an external keyboard
is connected or disconnected.
Thanks to BogDan for finding the solution.
Task-number: QTBUG-31806
Change-Id: Id92639800e617821976f842f93e09517529e14ef
Reviewed-by: BogDan Vatra <bogdan@kde.org>
The hack to use the environment variable for turning off the
mouse cursor is broken when running against Ministro, because
Ministro does not pass the environment on.
A better solution is to make it possible to turn the cursor
in the EGLFS plugin off in the hooks instead.
Task-number: QTBUG-30553
Change-Id: Id09b48c350d2c95de9bb174f7480cf0cd2bf8145
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Set up for downloading from the qt-project.org servers instead
of KDE servers.
Change-Id: I6f9e69f91ea956165300d75109e1683d0b1aa5f0
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
For bundling Qt, we need two things:
1. We need to build a regular .jar file out of the Java files,
so that they can be built into the app package. Dexing the
classes first (i.e. compiling the JVM bytecode to Dalvik
bytecode) is required for loading the .jar file at run-time,
but cannot be used for building it into the app, so we need
two different paths.
2. We need to specify which extra files have to be bundled for
each module (this is primarily for plugins and imports). This
is because there is no static dependency on these files, so
it cannot be detected during deployment.
Task-number: QTBUG-30751
Change-Id: I733603ee5d1c64bd7c5b9357eb5d993b9d0298f7
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Add the enablers so that Qt Creator (or another
deployment tool) can add a specification in the app's
meta data of which libraries are bundled and the
Java code required to extract plugins and imports into
the required directory structure inside the app's
data directory.
This is intended to be an alternative to using Ministro
for deployment, and the mechanism of extracting
libraries on first startup is a work-around for the
requirement in Qt of having this directory structure.
For Qt 5.2, the approach should be changed to load
plugins directly from the app's lib directory and
the other files in imports will be bundled as qrcs
in the native plugins.
Task-number: QTBUG-30751
Change-Id: Ibdb3a672548b4802f9bf3ecd05fc194426ac30e7
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
The back button would be non-responsive for 5 seconds after
hiding the software keyboard. This is a minimal change that
does not look into why we need to have a 5 second delay in
the first place.
Task-number: QTBUG-30752
Change-Id: Ied514b77650cea7accc37a03efef2ce861090f65
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Just some code that was commented out and only adds to the
confusion.
Change-Id: Icfdf81de9731eeb2c473a2f6e2723742601a2037
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
This uses explicit handshakes between the application and the
gdbserver start and the host side by using the gdbserver socket
and two files ("ping" file in the application dir, "pong" file
in /data/local/tmp/qt)
The sequence is as follows:
host: adb forward debugsocket :5039
host: adb shell rm pong file
host: adb shell am start
host: loop until ping file appears
app start up: launch gdbserver --multi +debug-socket
app start up: loop until debug socket appear
gdbserver: normal start up including opening debug-socket,
not yet attached to any process
app start up: touch ping file
app start up: loop until pong file appears
host: start gdb
host: gdb: set up binary, breakpoints, path etc
host: gdb: target extended-remote :5039
gdbserver: accepts connection from gdb
host: gdb: attach <application-pid>
gdbserver: attaches to the application
and stops it
app start up: stopped now (it is still waiting for
the pong anyway)
host: gdb: continue
gdbserver: resumes application
app start up: resumed (still waiting for the pong)
host: write pong file
app start up: java code continues now, the process
is already fully under control
of gdbserver. Breakpoints are set etc,
we are before main.
app start up: native code launches
Change-Id: Iaa28b8664dbebc39022d1be7ff5533c52ce39715
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
The Android style is not fully implemented yet, so prefer the
Fusion style by default.
Task-number: QTBUG-29565
Change-Id: Ida413e6b34a41b618b8e2206688922195ffcc519
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
The mathematically correct way would be to set logicalDPi to
160*scaledDensity, but then a 12 pt font would be gigantic. On
iOS, we use a factor of 72 to be compatible with the native APIs,
but that means that a 12 pt font is very small.
A factor of 100 means that desktop apps look reasonable by default.
Task-number: QTBUG-29674
Change-Id: I607f110150fb95685a6980b92f6f92f2b489f959
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
This file is used by QtCreator to decide if the java files
need to be updated.
Change-Id: Ib4875c32a071dd768f89950582c81ccdd420feca
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
The installation of the java files does not depend on Qt,
so it can be built before the rest of Qt, which means we need
to remove the default dependency in qmake, otherwise we can
get an error message:
Project ERROR: Unknown module(s) in QT: gui core
Change-Id: Ibb968acf6ec06c91ccfd5002e08c93c96a209934
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Use persistent data to specify the alternative location
of Qt libraries instead of command line arguments, so that the
application can be run from the launcher and not just from
Qt Creator.
Task-number: QTCREATORBUG-8643
Change-Id: I72df2905f3f35a3b924edd47d3a5387e674c97ac
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
The jar files are deployed on the device. The files in the java directory
are used by creator when making a new project.
Change-Id: Ie59f40edaa9c10044a1ca9949808ee22e6622ea1
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Now that we do not support Android versions below API level 9, we
can use the modern multi-touch functions.
Change-Id: I5887b4c35f9e02089a334526cebecf0cf767bd6c
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Based on the Necessitas project by Bogdan Vatra.
Contributors to the Qt5 project:
BogDan Vatra <bogdan@kde.org>
Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
hjk <hjk121@nokiamail.com>
Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Paul Olav Tvete <paul.tvete@digia.com>
Robin Burchell <robin+qt@viroteck.net>
Samuel Rødal <samuel.rodal@digia.com>
Yoann Lopes <yoann.lopes@digia.com>
The full history of the Qt5 port can be found in refs/old-heads/android,
SHA-1 249ca9ca2c7d876b91b31df9434dde47f9065d0d
Change-Id: Iff1a7b2dbb707c986f2639e65e39ed8f22430120
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>