diff options
Diffstat (limited to 'examples')
112 files changed, 0 insertions, 6812 deletions
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt deleted file mode 100644 index b6c43ae..0000000 --- a/examples/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Generated from examples.pro. - -qt_examples_build_begin() - -if(ANDROID) - add_subdirectory(androidextras) -endif() - -qt_examples_build_end() diff --git a/examples/androidextras/androidextras.pro b/examples/androidextras/androidextras.pro deleted file mode 100644 index 169797a..0000000 --- a/examples/androidextras/androidextras.pro +++ /dev/null @@ -1,19 +0,0 @@ -TEMPLATE = subdirs - -android { - qtHaveModule(quick) { - SUBDIRS += \ - notification \ - jnimessenger \ - services \ - customactivity \ - musiclist - - EXAMPLE_FILES += \ - notification \ - jnimessenger \ - services \ - customactivity \ - musiclist - } -} diff --git a/examples/androidextras/customactivity/activityhandler.cpp b/examples/androidextras/customactivity/activityhandler.cpp deleted file mode 100644 index 2d7b172..0000000 --- a/examples/androidextras/customactivity/activityhandler.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "activityhandler.h" - -#include <QAndroidIntent> - -const int REQUEST_CODE = 123; -const jint RESULT_OK = QAndroidJniObject::getStaticField<jint>("android/app/Activity", "RESULT_OK"); -ActivityHandler *ActivityHandler::m_instance = nullptr; - -ActivityHandler::ActivityHandler(QObject *parent) : QObject(parent) -{ - m_instance = this; -} - -void ActivityHandler::showSecondActivity() -{ - QAndroidIntent activityIntent(QtAndroid::androidActivity().object(), - "org/qtproject/example/activityhandler/CustomActivity"); - - QtAndroid::startActivity( - activityIntent.handle(), REQUEST_CODE, - [this](int requestCode, int resultCode, const QAndroidJniObject &data) { - activityReceiver(requestCode, resultCode, data); - }); -} - -void ActivityHandler::activityReceiver(int requestCode, int resultCode, const QAndroidJniObject &data) -{ - if (requestCode == REQUEST_CODE) { - if (resultCode == RESULT_OK) { - const QAndroidJniObject key = QAndroidJniObject::fromString("message"); - const QAndroidJniObject message = data.callObjectMethod( - "getStringExtra", "(Ljava/lang/String;)Ljava/lang/String;", key.object()); - if (message.isValid()) - emit ActivityHandler::instance()->receiveFromActivityResult(message.toString()); - } else { - emit ActivityHandler::instance()->receiveFromActivityResult("Rejected!"); - } - } -} diff --git a/examples/androidextras/customactivity/activityhandler.h b/examples/androidextras/customactivity/activityhandler.h deleted file mode 100644 index 3dba71e..0000000 --- a/examples/androidextras/customactivity/activityhandler.h +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef MULTIACTIVITY_H -#define MULTIACTIVITY_H - -#include <QtAndroid> - -class ActivityHandler : public QObject -{ - Q_OBJECT - -public: - ActivityHandler(QObject *parent = nullptr); - static ActivityHandler *instance() { return m_instance; } - - Q_INVOKABLE void showSecondActivity(); - void activityReceiver(int requestCode, int resultCode, const QAndroidJniObject &data); - -signals: - void receiveFromActivityResult(const QString &message); - -private: - static ActivityHandler *m_instance; -}; - -#endif // MULTIACTIVITY_H diff --git a/examples/androidextras/customactivity/android/AndroidManifest.xml b/examples/androidextras/customactivity/android/AndroidManifest.xml deleted file mode 100644 index 88e910d..0000000 --- a/examples/androidextras/customactivity/android/AndroidManifest.xml +++ /dev/null @@ -1,92 +0,0 @@ -<?xml version="1.0"?> -<manifest package="org.qtproject.example.activityhandler" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto"> - <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/> - - <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. - Remove the comment if you do not require these default permissions. --> - <!-- %%INSERT_PERMISSIONS --> - - <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. - Remove the comment if you do not require these default features. --> - <!-- %%INSERT_FEATURES --> - - <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> - - <application android:hardwareAccelerated="true" android:name="org.qtproject.qt.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --" android:extractNativeLibs="true"> - <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> - </intent-filter> - - <!-- Application arguments --> - <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ --> - <!-- Application arguments --> - - <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Used to specify custom system library path to run with local system libs --> - <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> --> - <!-- Messages maps --> - <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/> - <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/> - <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/> - <meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/> - <!-- Messages maps --> - - <!-- Splash screen --> - <!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation, - then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and - use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you - are done populating your window with content. --> - <!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ --> - <!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ --> - <!-- Splash screen --> - - <!-- Background running --> - <!-- Warning: changing this value to true may cause unexpected crashes if the - application still try to draw after - "applicationStateChanged(Qt::ApplicationSuspended)" - signal is sent! --> - <meta-data android:name="android.app.background_running" android:value="false"/> - <!-- Background running --> - - <!-- auto screen scale factor --> - <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/> - <!-- auto screen scale factor --> - - <!-- extract android style --> - <!-- available android:values : - * default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons - * full - useful QWidget & Quick Controls 1 apps - * minimal - useful for Quick Controls 2 apps, it is much faster than "full" - * none - useful for apps that don't use any of the above Qt modules - --> - <meta-data android:name="android.app.extract_android_style" android:value="minimal"/> - <!-- extract android style --> - </activity> - - <activity android:process=":custom_activity" android:name=".CustomActivity" android:label="-- %%INSERT_APP_NAME%% --"> - <!-- android:process=":qt" is needed to force the service to run on a separate process than the Activity --> - <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> - </activity> - - <!-- For adding service(s) please check: https://wiki.qt.io/AndroidServices --> - - </application> - -</manifest> diff --git a/examples/androidextras/customactivity/android/res/layout/second_activity.xml b/examples/androidextras/customactivity/android/res/layout/second_activity.xml deleted file mode 100644 index 0c07790..0000000 --- a/examples/androidextras/customactivity/android/res/layout/second_activity.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/relativeLayout" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical" - android:padding="20dp"> - - <TextView - android:id="@+id/blackboard_text" - android:layout_width="match_parent" - android:layout_height="350dp" - android:layout_gravity="center" - android:gravity="center" - android:singleLine="false" - android:text="@string/hello_second_activity" - android:textAlignment="center" - android:textSize="60sp" /> - - <Button - android:id="@+id/backButton" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/go_back" - android:layout_gravity="center_vertical|center_horizontal" /> -</LinearLayout> diff --git a/examples/androidextras/customactivity/android/res/values/strings.xml b/examples/androidextras/customactivity/android/res/values/strings.xml deleted file mode 100644 index 0b65e8f..0000000 --- a/examples/androidextras/customactivity/android/res/values/strings.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string name="app_name">Qt Android Multi-Activity</string> - <string name="hello_second_activity">Hello Second Activity</string> - <string name="go_back">Go back</string> -</resources> diff --git a/examples/androidextras/customactivity/android/src/org/qtproject/example/activityhandler/CustomActivity.java b/examples/androidextras/customactivity/android/src/org/qtproject/example/activityhandler/CustomActivity.java deleted file mode 100644 index b2502e9..0000000 --- a/examples/androidextras/customactivity/android/src/org/qtproject/example/activityhandler/CustomActivity.java +++ /dev/null @@ -1,78 +0,0 @@ - /**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -package org.qtproject.example.activityhandler; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.Button; - - public class CustomActivity extends Activity { - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.second_activity); - - Button backButton = (Button) findViewById(R.id.backButton); - backButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View view) { - Intent resultIntent = new Intent(); - resultIntent.putExtra("message", "Back button clicked."); - setResult(Activity.RESULT_OK, resultIntent); - finish(); - } - }); - } -} diff --git a/examples/androidextras/customactivity/customactivity.pro b/examples/androidextras/customactivity/customactivity.pro deleted file mode 100644 index 5c5b1e8..0000000 --- a/examples/androidextras/customactivity/customactivity.pro +++ /dev/null @@ -1,27 +0,0 @@ -QT += quick androidextras - -DEFINES += QT_DEPRECATED_WARNINGS - -CONFIG += c++11 - -HEADERS += \ - activityhandler.h - -SOURCES += \ - activityhandler.cpp \ - main.cpp - -RESOURCES += qml.qrc - -target.path = $$[QT_INSTALL_EXAMPLES]/androidextras/customactivity -INSTALLS += target - -android { - DISTFILES += \ - android/AndroidManifest.xml \ - android/src/org/qtproject/example/activityhandler/CustomActivity.java \ - android/res/layout/second_activity.xml \ - android/res/values/strings.xml - - ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android -} diff --git a/examples/androidextras/customactivity/doc/src/qtandroidextras-example-customactivity.qdoc b/examples/androidextras/customactivity/doc/src/qtandroidextras-example-customactivity.qdoc deleted file mode 100644 index ad075e6..0000000 --- a/examples/androidextras/customactivity/doc/src/qtandroidextras-example-customactivity.qdoc +++ /dev/null @@ -1,134 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \title Android Custom Activity - \ingroup examples-qtandroidextras - \example customactivity - \brief Demonstrates working with custom Android activities. - - \image customactivity.png - - This example demonstrates how to create an Android Activity and run it from - your Qt application. The activity is composed of a Java class and an Android - XML layout which is started from the main app. The activity can send back data - after finishing which can be used in QML. - - When you click the \uicontrol{"Start custom Android activity"} button, the - activity is started, and the activity has a text view and a button to exit. - The activity can either use the button or the back gesture to go back. - - \include examples-run.qdocinc - - \section1 Create Activity Class - - Define an Android class called \c CustomActivity in the CustomActivity.java - file as follows: - - \quotefromfile customactivity/android/src/org/qtproject/example/activityhandler/CustomActivity.java - \skipto package - \printuntil /^\}/ - - The Activity's layout is defined at \e {customactivity/android/res/layout/second_activity.xml}. - - To use this Activity, it must be defined in the \e AndroidManifest.xml file - as follows: - - \quotefromfile customactivity/android/AndroidManifest.xml - \skipto :custom_activity - \printuntil </activity> - - \note To use any native JNI calls, you must extend \c QtActivity instead of - \c Activity. - - \section1 Start the Activity - - To start an Activity from Qt, you need to create an intent using \l{QAndroidIntent}, - then call \l{QtAndroid::startActivity} providing the intent, a custom request - code, and a callback function. The latter is called after the activity has - finished. You can start the activity as follows: - - \quotefromfile customactivity/activityhandler.cpp - \skipto showSecondActivity - \printuntil }); - \printline } - - Then, define the callback function that is called directly after the activity - is done: - - \quotefromfile customactivity/activityhandler.cpp - \skipto ActivityHandler::activityReceiver - \printuntil } - - \note You can first check that the \c requestCode and \c resultCode are correct. - - To connect C++ with QML, add an instance of the C++ class that is handling - the JNI logic as a QML property in the \e main.cpp file: - - \quotefromfile customactivity/main.cpp - \skipto ActivityHandler - \printuntil setContextProperty - - Then, add a \l Connections element to watch for messages from C++ in the - \e main.qml file: - - \quotefromfile customactivity/main.qml - \skipto Connections - \printuntil /^\ {4}\}/ - - And set the \c onClicked for the \uicontrol{"Start custom Android activity"} - button to: - - \quotefromfile services/common/main.qml - \skipto onClicked - \printline onClicked - - \sa {Qt for Android}, {Qt Android Extras} -*/ diff --git a/examples/androidextras/customactivity/main.cpp b/examples/androidextras/customactivity/main.cpp deleted file mode 100644 index 4c1ab3d..0000000 --- a/examples/androidextras/customactivity/main.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "activityhandler.h" - -#include <QGuiApplication> -#include <QQmlApplicationEngine> -#include <QQmlContext> - -int main(int argc, char *argv[]) -{ - QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QGuiApplication app(argc, argv); - QQmlApplicationEngine engine; - const QUrl url(http://code.qt.io/QStringLiteral(%22qrc:/main.qml")); - - ActivityHandler *activityHandler = new ActivityHandler(&app); - engine.rootContext()->setContextProperty(QLatin1String("activityHandler"), activityHandler); - - QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, - &app, [url](QObject *obj, const QUrl &objUrl) { - if (!obj && url == objUrl) - QCoreApplication::exit(-1); - }, Qt::QueuedConnection); - engine.load(url); - - return app.exec(); -} diff --git a/examples/androidextras/customactivity/main.qml b/examples/androidextras/customactivity/main.qml deleted file mode 100644 index 75f8ff3..0000000 --- a/examples/androidextras/customactivity/main.qml +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -import QtQuick 2.14 -import QtQuick.Window 2.14 -import QtQuick.Controls 2.14 - -Window { - id: window - visible: true - width: 640 - height: 480 - title: qsTr("Qt Activity handler") - - property string status: "Return status: " - Text { - id: resultText - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - font.pointSize: 20 - text: status + "not started" - } - - Button { - text: "Start custom Android activity" - anchors.verticalCenterOffset: 100 - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - onClicked: activityHandler.showSecondActivity() - } - - Connections { - target: activityHandler - function onReceiveFromActivityResult(message) { - resultText.text = status + message - } - } -} diff --git a/examples/androidextras/customactivity/qml.qrc b/examples/androidextras/customactivity/qml.qrc deleted file mode 100644 index 5f6483a..0000000 --- a/examples/androidextras/customactivity/qml.qrc +++ /dev/null @@ -1,5 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>main.qml</file> - </qresource> -</RCC> diff --git a/examples/androidextras/jnimessenger/android/AndroidManifest.xml b/examples/androidextras/jnimessenger/android/AndroidManifest.xml deleted file mode 100644 index 75b5369..0000000 --- a/examples/androidextras/jnimessenger/android/AndroidManifest.xml +++ /dev/null @@ -1,87 +0,0 @@ -<?xml version="1.0"?> -<manifest package="org.qtproject.example.jnimessenger" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto"> - <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/> - - <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. - Remove the comment if you do not require these default permissions. --> - <!-- %%INSERT_PERMISSIONS --> - - <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. - Remove the comment if you do not require these default features. --> - <!-- %%INSERT_FEATURES --> - - <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> - - <application android:hardwareAccelerated="true" android:name="org.qtproject.qt.android.bindings.QtApplication" android:label="Qt JNI Messenger" android:extractNativeLibs="true" android:icon="@drawable/icon"> - <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> - </intent-filter> - - <!-- Application arguments --> - <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ --> - <!-- Application arguments --> - - <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Used to specify custom system library path to run with local system libs --> - <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> --> - <!-- Messages maps --> - <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/> - <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/> - <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/> - <meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/> - <!-- Messages maps --> - - <!-- Splash screen --> - <!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation, - then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and - use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you - are done populating your window with content. --> - <!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ --> - <!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ --> - <!-- Splash screen --> - - <!-- Background running --> - <!-- Warning: changing this value to true may cause unexpected crashes if the - application still try to draw after - "applicationStateChanged(Qt::ApplicationSuspended)" - signal is sent! --> - <meta-data android:name="android.app.background_running" android:value="false"/> - <!-- Background running --> - - <!-- auto screen scale factor --> - <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/> - <!-- auto screen scale factor --> - - <!-- extract android style --> - <!-- available android:values : - * default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons - * full - useful QWidget & Quick Controls 1 apps - * minimal - useful for Quick Controls 2 apps, it is much faster than "full" - * none - useful for apps that don't use any of the above Qt modules - --> - <meta-data android:name="android.app.extract_android_style" android:value="default"/> - <!-- extract android style --> - </activity> - - <!-- For adding service(s) please check: https://wiki.qt.io/AndroidServices --> - - </application> - -</manifest> diff --git a/examples/androidextras/jnimessenger/android/res/drawable-hdpi/icon.png b/examples/androidextras/jnimessenger/android/res/drawable-hdpi/icon.png Binary files differdeleted file mode 100644 index d3ccebe..0000000 --- a/examples/androidextras/jnimessenger/android/res/drawable-hdpi/icon.png +++ /dev/null diff --git a/examples/androidextras/jnimessenger/android/res/drawable-ldpi/icon.png b/examples/androidextras/jnimessenger/android/res/drawable-ldpi/icon.png Binary files differdeleted file mode 100644 index 2194be1..0000000 --- a/examples/androidextras/jnimessenger/android/res/drawable-ldpi/icon.png +++ /dev/null diff --git a/examples/androidextras/jnimessenger/android/res/drawable-mdpi/icon.png b/examples/androidextras/jnimessenger/android/res/drawable-mdpi/icon.png Binary files differdeleted file mode 100644 index 31812cc..0000000 --- a/examples/androidextras/jnimessenger/android/res/drawable-mdpi/icon.png +++ /dev/null diff --git a/examples/androidextras/jnimessenger/android/res/drawable-xhdpi/icon.png b/examples/androidextras/jnimessenger/android/res/drawable-xhdpi/icon.png Binary files differdeleted file mode 100644 index 3aeae64..0000000 --- a/examples/androidextras/jnimessenger/android/res/drawable-xhdpi/icon.png +++ /dev/null diff --git a/examples/androidextras/jnimessenger/android/res/drawable-xxhdpi/icon.png b/examples/androidextras/jnimessenger/android/res/drawable-xxhdpi/icon.png Binary files differdeleted file mode 100644 index f754fd1..0000000 --- a/examples/androidextras/jnimessenger/android/res/drawable-xxhdpi/icon.png +++ /dev/null diff --git a/examples/androidextras/jnimessenger/android/res/drawable-xxxhdpi/icon.png b/examples/androidextras/jnimessenger/android/res/drawable-xxxhdpi/icon.png Binary files differdeleted file mode 100644 index d0d043b..0000000 --- a/examples/androidextras/jnimessenger/android/res/drawable-xxxhdpi/icon.png +++ /dev/null diff --git a/examples/androidextras/jnimessenger/android/src/org/qtproject/example/jnimessenger/JniMessenger.java b/examples/androidextras/jnimessenger/android/src/org/qtproject/example/jnimessenger/JniMessenger.java deleted file mode 100644 index e3b7408..0000000 --- a/examples/androidextras/jnimessenger/android/src/org/qtproject/example/jnimessenger/JniMessenger.java +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -package org.qtproject.example.jnimessenger; - -public class JniMessenger -{ - private static native void callFromJava(String message); - - public JniMessenger() {} - - public static void printFromJava(String message) - { - System.out.println("This is printed from JAVA, message is: " + message); - callFromJava("Hello from JAVA!"); - } -} diff --git a/examples/androidextras/jnimessenger/doc/src/qtandroidextras-example-jnimessenger.qdoc b/examples/androidextras/jnimessenger/doc/src/qtandroidextras-example-jnimessenger.qdoc deleted file mode 100644 index 6b5838b..0000000 --- a/examples/androidextras/jnimessenger/doc/src/qtandroidextras-example-jnimessenger.qdoc +++ /dev/null @@ -1,145 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \title Qt JNI Messenger - \ingroup examples-qtandroidextras - \example jnimessenger - \brief Demonstrates communication between Java code and QML or C++ using NJI calls. - - \image jnimessenger.png - - This example demonstrates how to add a custom Java class to an Android application, and - how to both call it from C++ and call C++ functions from Java using the JNI convenience - APIs in the Qt Android Extras module. The application UI is created by using Qt Quick. - - When clicking the send button, a message will be sent from QML to Java class though - the C++ class and a log of that is shown in the screen view. Logs also can be seen - from the Android logcat of the messages being exchanged, which would be similar to: - - \badcode - I System.out: This is printed from JAVA, message is: QML sending to Java: Hello from QML - D libjnimessenger_armeabi-v7a.so: qml: QML received a message: Hello from JAVA! - \endcode - - \include examples-run.qdocinc - - \section1 Calling Java Methods from C++ Code - - We define a custom Java class called \c JniMessenger in the JniMessenger.java file: - - \quotefromfile jnimessenger/android/src/org/qtproject/example/jnimessenger/JniMessenger.java - \skipto org.qtproject.example.jnimessenger - \printuntil /^\}/ - - \note The custom Java class can extend other classes like QtActivity, Activity or any - other Java class. - - In the jnimessenger.cpp file, we call the function \c printFromJava(String message) - by first creating a \c QAndroidJniObject for the Java String that we want to send - and then invoking a JNI call with \c callStaticMethod<>() while providing the method - signature: - - \quotefromfile jnimessenger/jnimessenger.cpp - \skipto void JniMessenger::printFromJava - \printuntil } - - That call will then execute the following from Java side, which would print the - message to the \c System.output. - - \quotefromfile jnimessenger/android/src/org/qtproject/example/jnimessenger/JniMessenger.java - \skipto public static void printFromJava - \printuntil ); - - \section1 Calling QML/C++ Functions from Java Code - - Directly after that, our native function \c callFromJava(String message) will be - called, which would be then handled from C++ side. Note, that this method has - to be defined as \c native at the top of the Java class as: - - \code - private static native void callFromJava(String message); - \endcode - - To be able to call C++ functions from Java, in our C++ class JniMessenger.cpp, - we need to define those functions using \c RegisterNatives() as follows: - - \quotefromfile jnimessenger/jnimessenger.cpp - \skipto JNINativeMethod - \printuntil } - - (See \l{Java Native Methods} for more details). - - We would need to register the functions' signatures in \c methods[], which have - the name in Java class, then its parameters and return types, then the function - pointer in the C++ code. - - \code - JNINativeMethod methods[] {{"callFromJava", "(Ljava/lang/String;)V", reinterpret_cast<void *>(callFromJava)}}; - \endcode - - This would insure that our C++ function is available from within the Java call. - Now, that function could simply print the message it received from Java to - the debug log, but we want to forward the received message to the QML components - so that it gets displayed in our text view, so we get: - - \quotefromfile jnimessenger/jnimessenger.cpp - \skipto static void callFromJava - \printuntil } - - Now, we need to implement the necessary \c Connections in the QML code to receive - the message from C++, which we would print into the \c Text view with the id \c messengerLog: - - \quotefromfile jnimessenger/main.qml - \skipto Connections - \printuntil /^\ {4}\}/ - - \sa {Qt for Android}, {Qt Android Extras} -*/ diff --git a/examples/androidextras/jnimessenger/jnimessenger.cpp b/examples/androidextras/jnimessenger/jnimessenger.cpp deleted file mode 100644 index 3c309ba..0000000 --- a/examples/androidextras/jnimessenger/jnimessenger.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "jnimessenger.h" - -#include <QAndroidJniObject> -#include <QAndroidJniEnvironment> -#include <QtAndroid> - -JniMessenger *JniMessenger::m_instance = nullptr; - -static void callFromJava(JNIEnv *env, jobject /*thiz*/, jstring value) -{ - emit JniMessenger::instance()->messageFromJava(env->GetStringUTFChars(value, nullptr)); -} - -JniMessenger::JniMessenger(QObject *parent) : QObject(parent) -{ - m_instance = this; - - JNINativeMethod methods[] {{"callFromJava", "(Ljava/lang/String;)V", reinterpret_cast<void *>(callFromJava)}}; - QAndroidJniObject javaClass("org/qtproject/example/jnimessenger/JniMessenger"); - - QAndroidJniEnvironment env; - jclass objectClass = env->GetObjectClass(javaClass.object<jobject>()); - env->RegisterNatives(objectClass, - methods, - sizeof(methods) / sizeof(methods[0])); - env->DeleteLocalRef(objectClass); -} - -void JniMessenger::printFromJava(const QString &message) -{ - QAndroidJniObject javaMessage = QAndroidJniObject::fromString(message); - QAndroidJniObject::callStaticMethod<void>("org/qtproject/example/jnimessenger/JniMessenger", - "printFromJava", - "(Ljava/lang/String;)V", - javaMessage.object<jstring>()); -} diff --git a/examples/androidextras/jnimessenger/jnimessenger.h b/examples/androidextras/jnimessenger/jnimessenger.h deleted file mode 100644 index 441e476..0000000 --- a/examples/androidextras/jnimessenger/jnimessenger.h +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef MYCLASS_H -#define MYCLASS_H - -#include <QObject> - -class JniMessenger : public QObject -{ - Q_OBJECT - -public: - explicit JniMessenger(QObject *parent = nullptr); - static JniMessenger *instance() { return m_instance; } - Q_INVOKABLE void printFromJava(const QString &message); - -signals: - void messageFromJava(const QString &message); - -public slots: - -private: - static JniMessenger *m_instance; -}; - -#endif // MYCLASS_H diff --git a/examples/androidextras/jnimessenger/jnimessenger.pro b/examples/androidextras/jnimessenger/jnimessenger.pro deleted file mode 100644 index b1a6326..0000000 --- a/examples/androidextras/jnimessenger/jnimessenger.pro +++ /dev/null @@ -1,21 +0,0 @@ -QT += quick androidextras - -DEFINES += QT_DEPRECATED_WARNINGS - -SOURCES += \ - jnimessenger.cpp \ - main.cpp - -HEADERS += \ - jnimessenger.h - -RESOURCES += qml.qrc - -ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android -DISTFILES += \ - android/src/org/qtproject/example/jnimessenger/JniMessenger.java \ - android/AndroidManifest.xml - - -target.path = $$[QT_INSTALL_EXAMPLES]/androidextras/jnimessenger -INSTALLS += target diff --git a/examples/androidextras/jnimessenger/main.cpp b/examples/androidextras/jnimessenger/main.cpp deleted file mode 100644 index 45e914a..0000000 --- a/examples/androidextras/jnimessenger/main.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "jnimessenger.h" - -#include <QGuiApplication> -#include <QQmlApplicationEngine> -#include <QQmlContext> - -int main(int argc, char *argv[]) -{ - QGuiApplication app(argc, argv); - - QQmlApplicationEngine engine; - const QUrl url(http://code.qt.io/QStringLiteral(%22qrc:/main.qml")); - - JniMessenger *jniMessenger = new JniMessenger(&app); - - engine.rootContext()->setContextProperty(QLatin1String("JniMessenger"), jniMessenger); - - QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, - &app, [url](QObject *obj, const QUrl &objUrl) { - if (!obj && url == objUrl) - QCoreApplication::exit(-1); - }, Qt::QueuedConnection); - engine.load(url); - - return app.exec(); -} diff --git a/examples/androidextras/jnimessenger/main.qml b/examples/androidextras/jnimessenger/main.qml deleted file mode 100644 index 57c90ec..0000000 --- a/examples/androidextras/jnimessenger/main.qml +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.13 -import QtQuick.Window 2.13 -import QtQuick.Controls 2.13 -import QtQuick.Layouts 1.13 - -ApplicationWindow { - id: window - visible: true - - ColumnLayout { - anchors.fill: parent - Text { - id: messengerLog - text: qsTr("") - clip: true - Layout.fillHeight: true - Layout.fillWidth: true - transformOrigin: Item.Center - Layout.alignment: Qt.AlignHCenter | Qt.AlignTop - } - - RowLayout { - id: rowlayout - Layout.bottomMargin: 10 - Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom - anchors.bottom: window.bottom - spacing: 10 - - Button { - text: qsTr("Send to Java via JNI") - onClicked: { - var message = qsTr("QML sending to Java: Hello from QML") - messengerLog.text += "\n" + message - JniMessenger.printFromJava(message) - } - } - - Button { - text: "Clear" - onClicked: messengerLog.text = "" - } - } - } - - Connections { - target: JniMessenger - function onMessageFromJava(message) { - var output = qsTr("QML received a message: %1").arg(message) - print(output) - messengerLog.text += "\n" + output - } - } -} diff --git a/examples/androidextras/jnimessenger/qml.qrc b/examples/androidextras/jnimessenger/qml.qrc deleted file mode 100644 index 5f6483a..0000000 --- a/examples/androidextras/jnimessenger/qml.qrc +++ /dev/null @@ -1,5 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>main.qml</file> - </qresource> -</RCC> diff --git a/examples/androidextras/musiclist/android/AndroidManifest.xml b/examples/androidextras/musiclist/android/AndroidManifest.xml deleted file mode 100644 index eea974e..0000000 --- a/examples/androidextras/musiclist/android/AndroidManifest.xml +++ /dev/null @@ -1,84 +0,0 @@ -<?xml version="1.0"?> -<manifest package="org.qtproject.example.musiclist" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto"> - <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/> - - <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. - Remove the comment if you do not require these default permissions. --> - <!-- %%INSERT_PERMISSIONS --> - - <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. - Remove the comment if you do not require these default features. --> - <!-- %%INSERT_FEATURES --> - - <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> - - <application android:hardwareAccelerated="true" android:name="org.qtproject.qt.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --" android:extractNativeLibs="true"> - <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> - </intent-filter> - - <!-- Application arguments --> - <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ --> - <!-- Application arguments --> - - <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Used to specify custom system library path to run with local system libs --> - <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> --> - <!-- Messages maps --> - <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/> - <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/> - <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/> - <meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/> - <!-- Messages maps --> - - <!-- Splash screen --> - <!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation, - then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and - use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you - are done populating your window with content. --> - <!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ --> - <!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ --> - <!-- Splash screen --> - - <!-- Background running --> - <!-- Warning: changing this value to true may cause unexpected crashes if the - application still try to draw after - "applicationStateChanged(Qt::ApplicationSuspended)" - signal is sent! --> - <meta-data android:name="android.app.background_running" android:value="false"/> - <!-- Background running --> - - <!-- auto screen scale factor --> - <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/> - <!-- auto screen scale factor --> - - <!-- extract android style --> - <!-- available android:values : - * default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons - * full - useful QWidget & Quick Controls 1 apps - * minimal - useful for Quick Controls 2 apps, it is much faster than "full" - * none - useful for apps that don't use any of the above Qt modules - --> - <meta-data android:name="android.app.extract_android_style" android:value="minimal"/> - <!-- extract android style --> - </activity> - </application> - -</manifest> diff --git a/examples/androidextras/musiclist/android/src/org/qtproject/example/musiclist/MusicList.java b/examples/androidextras/musiclist/android/src/org/qtproject/example/musiclist/MusicList.java deleted file mode 100644 index d4dc840..0000000 --- a/examples/androidextras/musiclist/android/src/org/qtproject/example/musiclist/MusicList.java +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -package org.qtproject.example.musiclist; - -import android.content.ContentResolver; -import android.content.Context; -import android.database.Cursor; -import android.net.Uri; -import android.provider.MediaStore; -import java.util.ArrayList; - -public class MusicList { - - static ArrayList<MusicTrack> fetchMusicList(Context context) { - ArrayList<MusicTrack> musicList = new ArrayList<MusicTrack>(); - Cursor songCursor; - - try { - ContentResolver contentResolver = context.getContentResolver(); - Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; - songCursor = contentResolver.query(songUri, null, null, null, null); - } catch (SecurityException e) { - e.printStackTrace(); - return musicList; - } - - if (songCursor != null && songCursor.moveToFirst()) - { - int title = songCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); - int artist = songCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST); - int duration = duration = songCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION); - - do { - String currentTitle = songCursor.getString(title); - String currentArtist = songCursor.getString(artist); - long currentDuration = songCursor.getLong(duration); - musicList.add(new MusicTrack(currentTitle, currentArtist, currentDuration)); - } while (songCursor.moveToNext()); - } - - if (songCursor != null) - songCursor.close(); - - return musicList; - } -} - -class MusicTrack { - - private String title; - private String artist; - private long duration; - - MusicTrack (String title, String artist, long duration) { - this.title = title; - this.artist = artist; - this.duration = duration; - } - - public String getTitle() { return title; } - - public String getArtist() { return artist; } - - public long getDuration() { return duration; } -} diff --git a/examples/androidextras/musiclist/doc/src/qtandroidextras-example-musiclist.qdoc b/examples/androidextras/musiclist/doc/src/qtandroidextras-example-musiclist.qdoc deleted file mode 100644 index 39efb6a..0000000 --- a/examples/androidextras/musiclist/doc/src/qtandroidextras-example-musiclist.qdoc +++ /dev/null @@ -1,128 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! -\title Qt JNI Music List - \ingroup examples-qtandroidextras - \example musiclist - \brief Demonstrates how to exchange data from complex Java objects. - - \image musiclist.png - - This example demonstrates how to move around data from a Java ArrayList of - objects over to Qt. The example uses Android APIs to retrieve a list of music - tracks, and displays some information about them with QML. - - When the application starts, it displays a list of music tracks, showing the - track name, artist, and duration. - - \include examples-run.qdocinc - - \section1 Create the Music Classes - - Let's create a Java class, \c MusicTrack, that defines some of the basic - information about a track. In the Java side, create the following: - - \quotefromfile musiclist/android/src/org/qtproject/example/musiclist/MusicList.java - \skipto class MusicTrack - \printuntil /^\}/ - - Create another class with the same variables or information on the C++ side. - The definition for \c MusicTrack class is the following: - - \quotefromfile musiclist/musiclist.h - \skipto class MusicTrack - \printuntil }; - - \note The \c MusicTrack class must be a \l{QObject}-derived class to be used - with as a QML context property. For more information, see - \l{Overview - QML and C++ Integration}{QML and C++ Integration}. - - \section1 Fetch the Music List - - To retrieve the music list, the Android APIs are used. Add the following method - to find music tracks that are available on the system. This method returns - an ArrayList of \c MusicTrack. - - \quotefromfile musiclist/android/src/org/qtproject/example/musiclist/MusicList.java - \skipto package - \printuntil /^\ {4}\}/ - \printline } - - Using the JNI helpers provided with Qt, call the previous method to - first get an \l{QAndroidJniObject} containing an ArrayList of objects. In the - C++ code, you need to go through the Java ArrayList and create a parallel list - on C++. Add the following lines to do that: - - \quotefromfile musiclist/musiclist.cpp - \skipto QAndroidJniObject - \printuntil /^\ {4}\}/ - - Then, add a function to return the resulted \l{QList}: - - \quotefromfile musiclist/musiclist.cpp - \skipto MusicList::assembledMusicList - \printuntil } - - To display the music list, create a \l{ListView} that uses the \l{QList} - as a property. Register the property as follows: - - \quotefromfile musiclist/main.cpp - \skipto MusicList - \printuntil assembledMusicList - - In the QML code, define the model of the \l{ListView} as follows: - - \quotefromfile musiclist/main.qml - \skipto model - \printline model - - \sa {Qt for Android}, {Qt Android Extras} -*/ diff --git a/examples/androidextras/musiclist/main.cpp b/examples/androidextras/musiclist/main.cpp deleted file mode 100644 index 0c76cc2..0000000 --- a/examples/androidextras/musiclist/main.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "musiclist.h" - -#include <QtAndroid> - -#include <QGuiApplication> -#include <QQmlApplicationEngine> -#include <QQmlContext> - -bool requestStoragePermission() { - using namespace QtAndroid; - - QString permission = QStringLiteral("android.permission.WRITE_EXTERNAL_STORAGE"); - const QHash<QString, PermissionResult> results = requestPermissionsSync(QStringList({permission})); - if (!results.contains(permission) || results[permission] == PermissionResult::Denied) { - qWarning() << "Couldn't get permission: " << permission; - return false; - } - - return true; -} - -int main(int argc, char *argv[]) -{ - QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QGuiApplication app(argc, argv); - QQmlApplicationEngine engine; - const QUrl url(http://code.qt.io/QStringLiteral(%22qrc:/main.qml")); - - if (!requestStoragePermission()) - qDebug() << "Storage permissions denied. This example might not work as intended"; - - MusicList *musicList = new MusicList(&app); - engine.rootContext()->setContextProperty(QLatin1String("musiclist"), - QVariant::fromValue(musicList->assembledMusicList())); - - QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, - &app, [url](QObject *obj, const QUrl &objUrl) { - if (!obj && url == objUrl) - QCoreApplication::exit(-1); - }, Qt::QueuedConnection); - engine.load(url); - - return app.exec(); -} diff --git a/examples/androidextras/musiclist/main.qml b/examples/androidextras/musiclist/main.qml deleted file mode 100644 index 6a04bef..0000000 --- a/examples/androidextras/musiclist/main.qml +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -import QtQuick 2.14 -import QtQuick.Window 2.14 -import QtQuick.Controls 2.14 - -Window { - id: window - visible: true - width: 640 - height: 480 - title: qsTr("Qt Android Music List") - - Text { - id: resultText - height: 40 - text: "Music library list:" - anchors.right: parent.right - anchors.rightMargin: 10 - anchors.left: parent.left - anchors.leftMargin: 10 - anchors.top: parent.top - anchors.topMargin: 10 - font.pointSize: 20 - verticalAlignment: Text.AlignTop - } - - ToolSeparator { - id: toolSeparator - width: parent.width - anchors.bottom: listView.top - anchors.bottomMargin: 10 - anchors.top: resultText.bottom - anchors.topMargin: 6 - anchors.horizontalCenter: parent.horizontalCenter - orientation: Qt.Horizontal - } - - ListView { - id: listView - width: parent.width - clip: true - flickableDirection: Flickable.HorizontalAndVerticalFlick - anchors.bottomMargin: 10 - anchors.right: parent.right - anchors.rightMargin: 10 - anchors.left: parent.left - anchors.leftMargin: 10 - anchors.top: resultText.bottom - anchors.topMargin: 30 - anchors.bottom: parent.bottom - - model: musiclist - delegate: Rectangle { - height: 25 - width: ListView.view.width - color: index % 2 == 0 ? "#EDEDED" : "#FFFFFF" - - function toTimeFormat(sec_num) { - sec_num = Math.floor(sec_num / 1000); - var hours = Math.floor(sec_num / 3600); - var minutes = Math.floor((sec_num - (hours * 3600)) / 60); - var seconds = sec_num - (hours * 3600) - (minutes * 60); - - if (hours < 10) { hours = "0" + hours; } - if (minutes < 10) { minutes = "0" + minutes; } - if (seconds < 10) { seconds = "0" + seconds; } - - return hours+':'+minutes+':'+seconds; - } - - Text { text: model.modelData.title + " | " + model.modelData.artist + " | " + toTimeFormat(model.modelData.duration) } - } - } -} diff --git a/examples/androidextras/musiclist/musiclist.cpp b/examples/androidextras/musiclist/musiclist.cpp deleted file mode 100644 index 97d5cdb..0000000 --- a/examples/androidextras/musiclist/musiclist.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "musiclist.h" - -#include <QAndroidIntent> -#include <QAndroidJniEnvironment> - -MusicList::MusicList(QObject *parent) : QObject(parent) -{ - QAndroidJniObject musicList = QAndroidJniObject::callStaticObjectMethod( - "org/qtproject/example/musiclist/MusicList", - "fetchMusicList", - "(Landroid/content/Context;)Ljava/util/ArrayList;", - QtAndroid::androidContext().object()); - - for (int i = 0; i < musicList.callMethod<jint>("size"); ++i) { - QAndroidJniObject track = musicList.callObjectMethod("get", "(I)Ljava/lang/Object;", i); - const QString title = track.callObjectMethod("getTitle", "()Ljava/lang/String;").toString(); - const QString artist = track.callObjectMethod("getArtist", "()Ljava/lang/String;").toString(); - const long duration = track.callMethod<jlong>("getDuration"); - m_assembledMusicList.append(new MusicTrack(title, artist, duration, this)); - } -} - -QList<MusicTrack *> MusicList::assembledMusicList() const -{ - return m_assembledMusicList; -} diff --git a/examples/androidextras/musiclist/musiclist.h b/examples/androidextras/musiclist/musiclist.h deleted file mode 100644 index 14d487f..0000000 --- a/examples/androidextras/musiclist/musiclist.h +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef MUSICLIST_H -#define MUSICLIST_H - -#include <QtAndroid> - -class MusicTrack : public QObject -{ - Q_OBJECT - Q_PROPERTY(QString title READ title CONSTANT) - Q_PROPERTY(QString artist READ artist CONSTANT) - Q_PROPERTY(long duration READ duration CONSTANT) - -public: - MusicTrack(const QString title, const QString artist, const long duration, QObject *parent = nullptr) - : QObject(parent), m_title(title), m_artist(artist), m_duration(duration) {} - - QString title() const { return m_title; } - QString artist() const { return m_artist; } - long duration() const { return m_duration; } - -private: - QString m_title; - QString m_artist; - long m_duration; -}; - -class MusicList : public QObject -{ - Q_OBJECT - -public: - MusicList(QObject *parent = nullptr); - QList<MusicTrack *> assembledMusicList() const; - -private: - QList<MusicTrack *> m_assembledMusicList; -}; - -#endif diff --git a/examples/androidextras/musiclist/musiclist.pro b/examples/androidextras/musiclist/musiclist.pro deleted file mode 100644 index 0d20de8..0000000 --- a/examples/androidextras/musiclist/musiclist.pro +++ /dev/null @@ -1,23 +0,0 @@ -QT += quick androidextras - -CONFIG += c++11 - -DEFINES += QT_DEPRECATED_WARNINGS - -HEADERS += \ - musiclist.h - -SOURCES += \ - main.cpp \ - musiclist.cpp - -RESOURCES += qml.qrc - -target.path = $$[QT_INSTALL_EXAMPLES]/androidextras/musiclist -INSTALLS += target - -ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android - -DISTFILES += \ - android/AndroidManifest.xml \ - android/src/org/qtproject/example/musiclist/MusicList.java diff --git a/examples/androidextras/musiclist/qml.qrc b/examples/androidextras/musiclist/qml.qrc deleted file mode 100644 index 5f6483a..0000000 --- a/examples/androidextras/musiclist/qml.qrc +++ /dev/null @@ -1,5 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>main.qml</file> - </qresource> -</RCC> diff --git a/examples/androidextras/notification/android/AndroidManifest.xml b/examples/androidextras/notification/android/AndroidManifest.xml deleted file mode 100644 index d3b87bd..0000000 --- a/examples/androidextras/notification/android/AndroidManifest.xml +++ /dev/null @@ -1,87 +0,0 @@ -<?xml version="1.0"?> -<manifest package="org.qtproject.example.notification" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto"> - <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/> - - <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. - Remove the comment if you do not require these default permissions. --> - <!-- %%INSERT_PERMISSIONS --> - - <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. - Remove the comment if you do not require these default features. --> - <!-- %%INSERT_FEATURES --> - - <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> - - <application android:hardwareAccelerated="true" android:name="org.qtproject.qt.android.bindings.QtApplication" android:label="Qt Notifier" android:extractNativeLibs="true" android:icon="@drawable/icon"> - <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> - </intent-filter> - - <!-- Application arguments --> - <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ --> - <!-- Application arguments --> - - <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Used to specify custom system library path to run with local system libs --> - <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> --> - <!-- Messages maps --> - <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/> - <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/> - <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/> - <meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/> - <!-- Messages maps --> - - <!-- Splash screen --> - <!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation, - then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and - use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you - are done populating your window with content. --> - <!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ --> - <!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ --> - <!-- Splash screen --> - - <!-- Background running --> - <!-- Warning: changing this value to true may cause unexpected crashes if the - application still try to draw after - "applicationStateChanged(Qt::ApplicationSuspended)" - signal is sent! --> - <meta-data android:name="android.app.background_running" android:value="false"/> - <!-- Background running --> - - <!-- auto screen scale factor --> - <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/> - <!-- auto screen scale factor --> - - <!-- extract android style --> - <!-- available android:values : - * default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons - * full - useful QWidget & Quick Controls 1 apps - * minimal - useful for Quick Controls 2 apps, it is much faster than "full" - * none - useful for apps that don't use any of the above Qt modules - --> - <meta-data android:name="android.app.extract_android_style" android:value="default"/> - <!-- extract android style --> - </activity> - - <!-- For adding service(s) please check: https://wiki.qt.io/AndroidServices --> - - </application> - -</manifest> diff --git a/examples/androidextras/notification/android/res/drawable-hdpi/icon.png b/examples/androidextras/notification/android/res/drawable-hdpi/icon.png Binary files differdeleted file mode 100644 index d3ccebe..0000000 --- a/examples/androidextras/notification/android/res/drawable-hdpi/icon.png +++ /dev/null diff --git a/examples/androidextras/notification/android/res/drawable-ldpi/icon.png b/examples/androidextras/notification/android/res/drawable-ldpi/icon.png Binary files differdeleted file mode 100644 index 2194be1..0000000 --- a/examples/androidextras/notification/android/res/drawable-ldpi/icon.png +++ /dev/null diff --git a/examples/androidextras/notification/android/res/drawable-mdpi/icon.png b/examples/androidextras/notification/android/res/drawable-mdpi/icon.png Binary files differdeleted file mode 100644 index 31812cc..0000000 --- a/examples/androidextras/notification/android/res/drawable-mdpi/icon.png +++ /dev/null diff --git a/examples/androidextras/notification/android/res/drawable-xhdpi/icon.png b/examples/androidextras/notification/android/res/drawable-xhdpi/icon.png Binary files differdeleted file mode 100644 index 3aeae64..0000000 --- a/examples/androidextras/notification/android/res/drawable-xhdpi/icon.png +++ /dev/null diff --git a/examples/androidextras/notification/android/res/drawable-xxhdpi/icon.png b/examples/androidextras/notification/android/res/drawable-xxhdpi/icon.png Binary files differdeleted file mode 100644 index f754fd1..0000000 --- a/examples/androidextras/notification/android/res/drawable-xxhdpi/icon.png +++ /dev/null diff --git a/examples/androidextras/notification/android/res/drawable-xxxhdpi/icon.png b/examples/androidextras/notification/android/res/drawable-xxxhdpi/icon.png Binary files differdeleted file mode 100644 index d0d043b..0000000 --- a/examples/androidextras/notification/android/res/drawable-xxxhdpi/icon.png +++ /dev/null diff --git a/examples/androidextras/notification/android/src/org/qtproject/example/notification/NotificationClient.java b/examples/androidextras/notification/android/src/org/qtproject/example/notification/NotificationClient.java deleted file mode 100644 index 16789d1..0000000 --- a/examples/androidextras/notification/android/src/org/qtproject/example/notification/NotificationClient.java +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -package org.qtproject.example.notification; - -import android.app.Notification; -import android.app.NotificationManager; -import android.content.Context; -import android.content.Intent; -import android.app.PendingIntent; -import android.graphics.Color; -import android.graphics.BitmapFactory; -import android.app.NotificationChannel; - -public class NotificationClient -{ - private static NotificationManager m_notificationManager; - private static Notification.Builder m_builder; - - public NotificationClient() {} - - public static void notify(Context context, String message) { - try { - m_notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { - int importance = NotificationManager.IMPORTANCE_DEFAULT; - NotificationChannel notificationChannel = new NotificationChannel("Qt", "Qt Notifier", importance); - m_notificationManager.createNotificationChannel(notificationChannel); - m_builder = new Notification.Builder(context, notificationChannel.getId()); - } else { - m_builder = new Notification.Builder(context); - } - - m_builder.setSmallIcon(R.drawable.icon) - .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.icon)) - .setContentTitle("A message from Qt!") - .setContentText(message) - .setDefaults(Notification.DEFAULT_SOUND) - .setColor(Color.GREEN) - .setAutoCancel(true); - - m_notificationManager.notify(0, m_builder.build()); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/examples/androidextras/notification/doc/src/qtandroidextras-example-notification.qdoc b/examples/androidextras/notification/doc/src/qtandroidextras-example-notification.qdoc deleted file mode 100644 index a042af5..0000000 --- a/examples/androidextras/notification/doc/src/qtandroidextras-example-notification.qdoc +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \title Qt Notifier - \ingroup examples-qtandroidextras - \example notification - \brief Demonstrates calling Java code from an Android application. - - \image notification.png - - This example demonstrates how to add a custom Java class to an Android application, and - how to call into this using the JNI convenience APIs in the Qt Android Extras module. - The application UI is created by using Qt Quick. - - Click on either of the smiley faces to put a notification in the status area of the Android - device. - - \include examples-run.qdocinc - - \section1 Calling Java Methods from C++ Code - - We define a custom Java class called \c NotificationClient in the - NotificationClient.java file: - - \quotefromfile notification/android/src/org/qtproject/example/notification/NotificationClient.java - \skipto org.qtproject.example.notification - \printuntil /^\}/ - - In the NotificationClient C++ class header file, notificationclient.h, we - declare a simple C++ API to display notifications on an Android device. It - consists of a single string property, \c notification, and a slot, - \c updateAndroidNotification(), that calls the Java code: - - \quotefromfile notification/notificationclient.h - \skipto Q_PROPERTY - \printuntil ) - \dots - \skipto private slots - \printuntil updateAndroidNotification() - - A NotificationClient object is exposed to the QML in the main source file, - main.cpp: - - \quotefromfile notification/main.cpp - \skipto QQuickView view; - \printuntil notificationClient); - - In the NotificationClient C++ class source file, notificationclient.cpp, we - import the QtAndroid class: - - \quotefromfile notification/notificationclient.cpp - \skipto <QtAndroid - \printuntil > - - This will allow us to use \c QAndroidJniObject for JNI calls, and also allow - us to pass our application's context to the Java methods as in: - - \code - QtAndroid::androidContext().object() - \endcode - - We connect the \c notificationChanged() signal to the - \c updateAndroidNotification() slot to update the notification text when the - \c notification property changes: - - \printuntil } - - The \c NotificationClient::updateAndroidNotification() function calls the - Java method. We construct a Java string from the \c notification string - property: - - \skipto updateAndroidNotification() - \printuntil fromString - - And pass the string object as a parameter to the Java \c notify() method. - Note that we must supply the signature ourselves: - - \printuntil } - - \sa {Qt for Android}, {Qt Android Extras} -*/ diff --git a/examples/androidextras/notification/images/happy.png b/examples/androidextras/notification/images/happy.png Binary files differdeleted file mode 100644 index fd31f8d..0000000 --- a/examples/androidextras/notification/images/happy.png +++ /dev/null diff --git a/examples/androidextras/notification/images/sad.png b/examples/androidextras/notification/images/sad.png Binary files differdeleted file mode 100644 index 74e8f8f..0000000 --- a/examples/androidextras/notification/images/sad.png +++ /dev/null diff --git a/examples/androidextras/notification/main.cpp b/examples/androidextras/notification/main.cpp deleted file mode 100644 index d6c352c..0000000 --- a/examples/androidextras/notification/main.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtGui> -#include <QtQuick> - -#include "notificationclient.h" - -int main(int argc, char **argv) -{ - QGuiApplication app(argc, argv); - - QQuickView view; - - NotificationClient *notificationClient = new NotificationClient(&view); - view.engine()->rootContext()->setContextProperty(QLatin1String("notificationClient"), - notificationClient); - view.setResizeMode(QQuickView::SizeRootObjectToView); - view.setSource(QUrl(QStringLiteral("qrc:/qml/main.qml"))); - view.show(); - - return app.exec(); -} diff --git a/examples/androidextras/notification/main.qrc b/examples/androidextras/notification/main.qrc deleted file mode 100644 index 10190c9..0000000 --- a/examples/androidextras/notification/main.qrc +++ /dev/null @@ -1,7 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>qml/main.qml</file> - <file>images/happy.png</file> - <file>images/sad.png</file> - </qresource> -</RCC> diff --git a/examples/androidextras/notification/notification.pro b/examples/androidextras/notification/notification.pro deleted file mode 100644 index b2fdec8..0000000 --- a/examples/androidextras/notification/notification.pro +++ /dev/null @@ -1,19 +0,0 @@ -QT += quick androidextras - -SOURCES += \ - main.cpp \ - notificationclient.cpp - -RESOURCES += \ - main.qrc - -HEADERS += \ - notificationclient.h - -target.path = $$[QT_INSTALL_EXAMPLES]/androidextras/notification -INSTALLS += target - -ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android -OTHER_FILES += \ - android/src/org/qtproject/example/notification/NotificationClient.java \ - android/AndroidManifest.xml diff --git a/examples/androidextras/notification/notificationclient.cpp b/examples/androidextras/notification/notificationclient.cpp deleted file mode 100644 index 871d889..0000000 --- a/examples/androidextras/notification/notificationclient.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "notificationclient.h" - -#include <QtAndroid> - -NotificationClient::NotificationClient(QObject *parent) - : QObject(parent) -{ - connect(this, SIGNAL(notificationChanged()), this, SLOT(updateAndroidNotification())); -} - -void NotificationClient::setNotification(const QString ¬ification) -{ - if (m_notification == notification) - return; - - m_notification = notification; - emit notificationChanged(); -} - -QString NotificationClient::notification() const -{ - return m_notification; -} - -void NotificationClient::updateAndroidNotification() -{ - QAndroidJniObject javaNotification = QAndroidJniObject::fromString(m_notification); - QAndroidJniObject::callStaticMethod<void>( - "org/qtproject/example/notification/NotificationClient", - "notify", - "(Landroid/content/Context;Ljava/lang/String;)V", - QtAndroid::androidContext().object(), - javaNotification.object<jstring>()); -} diff --git a/examples/androidextras/notification/notificationclient.h b/examples/androidextras/notification/notificationclient.h deleted file mode 100644 index 6540421..0000000 --- a/examples/androidextras/notification/notificationclient.h +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef NOTIFICATIONCLIENT_H -#define NOTIFICATIONCLIENT_H - -#include <QObject> - -class NotificationClient : public QObject -{ - Q_OBJECT - Q_PROPERTY(QString notification READ notification WRITE setNotification NOTIFY notificationChanged) -public: - explicit NotificationClient(QObject *parent = 0); - - void setNotification(const QString ¬ification); - QString notification() const; - -signals: - void notificationChanged(); - -private slots: - void updateAndroidNotification(); - -private: - QString m_notification; -}; - -#endif // NOTIFICATIONCLIENT_H diff --git a/examples/androidextras/notification/qml/main.qml b/examples/androidextras/notification/qml/main.qml deleted file mode 100644 index 97c8cad..0000000 --- a/examples/androidextras/notification/qml/main.qml +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.0 - -Rectangle { - width: 500 - height: 500 - color: "white" - - Column { - anchors.fill: parent - spacing: (height - happyButton.height - sadButton.height - title.height) / 3 - - Text { - id: title - color: "black" - font.pixelSize: parent.width / 20 - text: "How are you feeling?" - width: parent.width - horizontalAlignment: Text.AlignHCenter - } - - Image { - id: happyButton - height: parent.height / 5 - fillMode: Image.PreserveAspectFit - source: "../images/happy.png" - anchors.horizontalCenter: parent.horizontalCenter - smooth: true - - Behavior on scale { - PropertyAnimation { - duration: 100 - } - } - - MouseArea { - anchors.fill: parent - onClicked: notificationClient.notification = "User is happy!" - onPressed: happyButton.scale = 0.9 - onReleased: happyButton.scale = 1.0 - } - } - - Image { - id: sadButton - height: parent.height / 5 - fillMode: Image.PreserveAspectFit - source: "../images/sad.png" - anchors.horizontalCenter: parent.horizontalCenter - smooth: true - - Behavior on scale { - PropertyAnimation { - duration: 100 - } - } - - MouseArea { - anchors.fill: parent - onClicked: notificationClient.notification = "User is sad :(" - onPressed: sadButton.scale = 0.9 - onReleased: sadButton.scale = 1.0 - } - } - } -} diff --git a/examples/androidextras/services/common/common.pri b/examples/androidextras/services/common/common.pri deleted file mode 100644 index 1225f32..0000000 --- a/examples/androidextras/services/common/common.pri +++ /dev/null @@ -1 +0,0 @@ -RESOURCES += $$PWD/qml.qrc diff --git a/examples/androidextras/services/common/common_broadcast.pri b/examples/androidextras/services/common/common_broadcast.pri deleted file mode 100644 index 117f362..0000000 --- a/examples/androidextras/services/common/common_broadcast.pri +++ /dev/null @@ -1,5 +0,0 @@ -INCLUDEPATH += $$PWD - -HEADERS += $$PWD/qtandroidservice.h - -SOURCES += $$PWD/qtandroidservice.cpp diff --git a/examples/androidextras/services/common/common_ro.pri b/examples/androidextras/services/common/common_ro.pri deleted file mode 100644 index eacfc6d..0000000 --- a/examples/androidextras/services/common/common_ro.pri +++ /dev/null @@ -1,3 +0,0 @@ -INCLUDEPATH += $$PWD - -HEADERS += $$PWD/qtandroidservice_ro.h diff --git a/examples/androidextras/services/common/main.qml b/examples/androidextras/services/common/main.qml deleted file mode 100644 index 528212b..0000000 --- a/examples/androidextras/services/common/main.qml +++ /dev/null @@ -1,112 +0,0 @@ - -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -import QtQuick 2.14 -import QtQuick.Window 2.14 -import QtQuick.Controls 2.14 - -Window { - id: window - visible: true - width: 640 - height: 480 - title: qsTr("Hello World") - - Text { - id: pingLabel - y: 100 - text: qsTr("Enter a name:") - anchors.horizontalCenter: parent.horizontalCenter - horizontalAlignment: Text.AlignHCenter - font.pixelSize: 20 - } - - TextInput { - id: pingText - y: 130 - text: "Qt" - anchors.horizontalCenter: parent.horizontalCenter - horizontalAlignment: Text.AlignHCenter - font.pointSize: 24 - } - - Button { - id: sendButton - y: 220 - text: "Send name to Service" - anchors.horizontalCenter: parent.horizontalCenter - onClicked: qtAndroidService.sendToService(pingText.text) - } - - Text { - id: pongLabel - y: 300 - text: qsTr("Android Service replied:") - anchors.horizontalCenter: parent.horizontalCenter - horizontalAlignment: Text.AlignHCenter - font.pixelSize: 20 - } - - Text { - id: pongText - y: 330 - text: qsTr("") - anchors.horizontalCenter: parent.horizontalCenter - horizontalAlignment: Text.AlignHCenter - font.pixelSize: 24 - } - - Connections { - target: qtAndroidService - function onMessageFromService(message) { - pongText.text = message - } - } -} diff --git a/examples/androidextras/services/common/qml.qrc b/examples/androidextras/services/common/qml.qrc deleted file mode 100644 index 5f6483a..0000000 --- a/examples/androidextras/services/common/qml.qrc +++ /dev/null @@ -1,5 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>main.qml</file> - </qresource> -</RCC> diff --git a/examples/androidextras/services/common/qtandroidservice.cpp b/examples/androidextras/services/common/qtandroidservice.cpp deleted file mode 100644 index 0296892..0000000 --- a/examples/androidextras/services/common/qtandroidservice.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qtandroidservice.h" - -#include <QAndroidJniEnvironment> -#include <QAndroidIntent> -#include <QtDebug> - -QtAndroidService *QtAndroidService::m_instance = nullptr; - -static void receivedFromAndroidService(JNIEnv *env, jobject /*thiz*/, jstring value) -{ - emit QtAndroidService::instance()->messageFromService( - env->GetStringUTFChars(value, nullptr)); -} - -QtAndroidService::QtAndroidService(QObject *parent) : QObject(parent) -{ - m_instance = this; - - registerNatives(); - registerBroadcastReceiver(); -} - -void QtAndroidService::sendToService(const QString &name) -{ - QAndroidIntent serviceIntent(QtAndroid::androidActivity().object(), - "org/qtproject/example/qtandroidservice/QtAndroidService"); - serviceIntent.putExtra("name", name.toUtf8()); - QAndroidJniObject result = QtAndroid::androidActivity().callObjectMethod( - "startService", - "(Landroid/content/Intent;)Landroid/content/ComponentName;", - serviceIntent.handle().object()); -} - -void QtAndroidService::registerNatives() -{ - JNINativeMethod methods[] { - {"sendToQt", "(Ljava/lang/String;)V", reinterpret_cast<void *>(receivedFromAndroidService)}}; - QAndroidJniObject javaClass("org/qtproject/example/qtandroidservice/ActivityUtils"); - - QAndroidJniEnvironment env; - jclass objectClass = env->GetObjectClass(javaClass.object<jobject>()); - env->RegisterNatives(objectClass, - methods, - sizeof(methods) / sizeof(methods[0])); - env->DeleteLocalRef(objectClass); -} - -void QtAndroidService::registerBroadcastReceiver() -{ - QAndroidJniEnvironment env; - jclass javaClass = env.findClass("org/qtproject/example/qtandroidservice/ActivityUtils"); - QAndroidJniObject classObject(javaClass); - - classObject.callMethod<void>("registerServiceBroadcastReceiver", - "(Landroid/content/Context;)V", - QtAndroid::androidContext().object()); -} diff --git a/examples/androidextras/services/common/qtandroidservice.h b/examples/androidextras/services/common/qtandroidservice.h deleted file mode 100644 index bee1fd3..0000000 --- a/examples/androidextras/services/common/qtandroidservice.h +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTANDROIDSERVICE_H -#define QTANDROIDSERVICE_H - -#include <QObject> -#include <QtAndroid> -#include <QAndroidIntent> - -class QtAndroidService : public QObject -{ - Q_OBJECT - -public: - QtAndroidService(QObject *parent = nullptr); - - static QtAndroidService *instance() { return m_instance; } - Q_INVOKABLE void sendToService(const QString &name); - -signals: - void messageFromService(const QString &message); - -private: - void registerNatives(); - void registerBroadcastReceiver(); - - static QtAndroidService *m_instance; -}; - -#endif // QTANDROIDSERVICE_H diff --git a/examples/androidextras/services/common/qtandroidservice.rep b/examples/androidextras/services/common/qtandroidservice.rep deleted file mode 100644 index 6b9d676..0000000 --- a/examples/androidextras/services/common/qtandroidservice.rep +++ /dev/null @@ -1,4 +0,0 @@ -class QtAndroidService { - SLOT(void sendToService(const QString &name)); - SIGNAL(messageFromService(const QString &message)); -} diff --git a/examples/androidextras/services/common/qtandroidservice_ro.h b/examples/androidextras/services/common/qtandroidservice_ro.h deleted file mode 100644 index 8e53fb1..0000000 --- a/examples/androidextras/services/common/qtandroidservice_ro.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "rep_qtandroidservice_source.h" - -class QtAndroidService : public QtAndroidServiceSource -{ -public slots: - void sendToService(const QString &name) override { - emit messageFromService("Hello " + name); - }; -}; diff --git a/examples/androidextras/services/servicebinder/android/AndroidManifest.xml b/examples/androidextras/services/servicebinder/android/AndroidManifest.xml deleted file mode 100644 index 1f63179..0000000 --- a/examples/androidextras/services/servicebinder/android/AndroidManifest.xml +++ /dev/null @@ -1,106 +0,0 @@ -<?xml version="1.0"?> -<manifest package="org.qtproject.example.qtandroidservice" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto"> - <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/> - - <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. - Remove the comment if you do not require these default permissions. --> - <!-- %%INSERT_PERMISSIONS --> - - <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. - Remove the comment if you do not require these default features. --> - <!-- %%INSERT_FEATURES --> - - <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> - - <application android:hardwareAccelerated="true" android:name="org.qtproject.qt.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --" android:extractNativeLibs="true"> - <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> - </intent-filter> - - <!-- Application arguments --> - <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ --> - <!-- Application arguments --> - - <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Used to specify custom system library path to run with local system libs --> - <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> --> - <!-- Messages maps --> - <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/> - <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/> - <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/> - <meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/> - <!-- Messages maps --> - - <!-- Splash screen --> - <!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation, - then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and - use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you - are done populating your window with content. --> - <!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ --> - <!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ --> - <!-- Splash screen --> - - <!-- Background running --> - <!-- Warning: changing this value to true may cause unexpected crashes if the - application still try to draw after - "applicationStateChanged(Qt::ApplicationSuspended)" - signal is sent! --> - <meta-data android:name="android.app.background_running" android:value="false"/> - <!-- Background running --> - - <!-- auto screen scale factor --> - <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/> - <!-- auto screen scale factor --> - - <!-- extract android style --> - <!-- available android:values : - * default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons - * full - useful QWidget & Quick Controls 1 apps - * minimal - useful for Quick Controls 2 apps, it is much faster than "full" - * none - useful for apps that don't use any of the above Qt modules - --> - <meta-data android:name="android.app.extract_android_style" android:value="minimal"/> - <!-- extract android style --> - </activity> - -<service android:process=":qt_service" android:name=".QtAndroidService"> - - <meta-data android:name="android.app.lib_name" android:value="service"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Run with local libs --> - - <!-- Background running --> - <meta-data android:name="android.app.background_running" android:value="true"/> - <!-- Background running --> - </service> - </application> -</manifest> diff --git a/examples/androidextras/services/servicebinder/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java b/examples/androidextras/services/servicebinder/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java deleted file mode 100644 index fdbd559..0000000 --- a/examples/androidextras/services/servicebinder/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -package org.qtproject.example.qtandroidservice; - -import android.content.Context; -import android.content.Intent; -import org.qtproject.qt.android.bindings.QtService; -import android.util.Log; - -public class QtAndroidService extends QtService { - - private static final String TAG = "QtAndroidService"; - - @Override - public void onCreate() { - super.onCreate(); - Log.i(TAG, "Creating Service"); - } - - @Override - public void onDestroy() { - super.onDestroy(); - Log.i(TAG, "Destroying Service"); - } -} diff --git a/examples/androidextras/services/servicebinder/androidbinder.cpp b/examples/androidextras/services/servicebinder/androidbinder.cpp deleted file mode 100644 index 87f98b1..0000000 --- a/examples/androidextras/services/servicebinder/androidbinder.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "androidbinder.h" - -#include <QDebug> - -const static char TAG[] = "Service process"; - -bool AndroidBinder::onTransact(int code, - const QAndroidParcel &data, - const QAndroidParcel &reply, - QAndroidBinder::CallType flags) -{ - qDebug() << TAG << ": onTransact(), code " << code << ", flags " << int(flags); - - switch (code) { - case 1: { - QAndroidBinder binder = data.readBinder(); - - const QString name(data.readData()); - qDebug() << TAG << ": onTransact() received name " << name; - - reply.writeVariant("Hello " + name); - } break; - default: - QAndroidBinder binder = data.readBinder(); - - qDebug() << TAG << ": onTransact() received non-name data" << data.readVariant(); - reply.writeVariant(QVariant("Cannot process this!")); - - // send back message - QAndroidParcel sendData, replyData; - sendData.writeVariant(QVariant("Send me only names!")); - binder.transact(0, sendData, &replyData); - qDebug() << TAG << ": onTransact() received " << replyData.readData(); - - break; - } - return true; -} diff --git a/examples/androidextras/services/servicebinder/androidbinder.h b/examples/androidextras/services/servicebinder/androidbinder.h deleted file mode 100644 index d53249b..0000000 --- a/examples/androidextras/services/servicebinder/androidbinder.h +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QAndroidBinder> -#include <QAndroidParcel> - -class AndroidBinder : public QAndroidBinder -{ -public: - bool onTransact(int code, - const QAndroidParcel &data, - const QAndroidParcel &reply, - QAndroidBinder::CallType flags) override; -}; diff --git a/examples/androidextras/services/servicebinder/doc/src/qtandroidextras-example-service-binder.qdoc b/examples/androidextras/services/servicebinder/doc/src/qtandroidextras-example-service-binder.qdoc deleted file mode 100644 index fb503d6..0000000 --- a/examples/androidextras/services/servicebinder/doc/src/qtandroidextras-example-service-binder.qdoc +++ /dev/null @@ -1,182 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \title Android Service with QAndroidBinder - \ingroup examples-qtandroidextras - \example services/servicebinder - \brief Demonstrates how to run an Android service in a separate process, - and how to communicate between the service process and the main process - using QAndroidBinder. - - \image androidservices.png - - This example demonstrates how to create and run an Android service in - a separate process and using a separate \c .so lib file, and then exchange - data between the two processes using \l{QAndroidBinder}. - - When clicking the \uicontrol {Send to Service} button, the name entered in the QML - view, Qt, in this case, is sent to the Android service. Then, the service - replies back with the message \c {Hello Qt} which is printed in the QML view. - - \include examples-run.qdocinc - - \section1 Create the Service - - To start a service in its own process, extend the \c QtService class for - your service. Extending \c QtService allows the service to load the necessary - Qt libraries used for Qt. - - Start by creating the Java service class. The following class extends \c QtService - and acts as your service entry point: - - \quotefromfile services/servicebinder/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java - \skipto package - \printuntil /^\}/ - - This class can have any logic you want using Java code. However, you don't need - any logic to communicate with Qt as that will be done using \l{QAndroidBinder}. - - \section1 Manage the AndroidManifest.xml File - - To use the service, it must be declared in the \c AndroidManifest.xml - file as follows: - - \quotefromfile services/servicebinder/android/AndroidManifest.xml - \skipto <service - \printuntil </service> - - The important part of this service declaration is the \c lib_name part. - It will ensure that the service is run by the service's own lib file: - - \quotefromfile services/servicebinder/android/AndroidManifest.xml - \skipto android:value="service" - \printuntil android:value="service" - - \section1 Handle the Service Start - - Create a sub-project for the service, as follows: - - \quotefromfile services/servicebinder/service.pro - \printuntil androidbinder.cpp - - In \c androidbinder.cpp, implement a class that inherits \l{QAndroidBinder}. - This is the binder that the main application will use to connect to the service - by binding to it. \l{QAndroidBinder::onTransact()} uses a \c code integer to - differentiate between actions. Use a \c switch case or \c if conditions to - handle all expected actions that the binder could expect: - - \quotefromfile services/servicebinder/androidbinder.cpp - \skipto onTransact - \printuntil /^\}/ - - In the service's \c main(), start the \l{QAndroidBinder} along with - \l{QAndroidService}: - - \quotefromfile services/servicebinder/service_main.cpp - \skipto main - \printuntil /^\}/ - - - \section1 Handle the Application Start - - In the main application side, a \l{QAndroidServiceConnection} implementation - is required to bind to the service and exchange data with it. Implement - the functions \l{QAndroidServiceConnection::onServiceConnected()} and - \l{QAndroidServiceConnection::onServiceDisconnected()}: - - \quotefromfile services/servicebinder/qtandroidservice.cpp - \skipto onServiceConnected - \printuntil } - \printuntil } - - Then, create a function to explicitly send messages to the service: - - \quotefromfile services/servicebinder/qtandroidservice.cpp - \skipto sendToService - \printuntil } - - Once you have all that ready, it's time to start the service and bind to it - as follows: - - \quotefromfile services/servicebinder/qtandroidservice.cpp - \skipto :QtAndroidService - \printuntil } - - The \l{QtAndroid::bindService()} is called using \l{QtAndroid::AutoCreate} - which starts the service if it's not already running. - - \note To receive data explicitly sent from the service (i.e. not just a reply), - implement \l{QAndroidBinder} in the main application the same way - it's done on the service. Once you have that, the service could initially - send a message. - - Then, create an instance for the custom \l{QAndroidServiceConnection} class - and connect it to QML. Add the following in \c main.cpp: - - \quotefromfile services/servicebinder/main.cpp - \skipto QtAndroidService - \printuntil setContextProperty - - Then, add a \l Connections element to watch for the incoming messages from - the service in \c main.qml: - - \quotefromfile services/common/main.qml - \skipto Connections - \printuntil /^\ {4}\}/ - - And set the \c onClicked for the sending button to: - - \quotefromfile services/common/main.qml - \skipto onClicked - \printline onClicked - - \sa {Android Services}, {Qt for Android}, {Qt Android Extras} -*/ diff --git a/examples/androidextras/services/servicebinder/main.cpp b/examples/androidextras/services/servicebinder/main.cpp deleted file mode 100644 index 82066df..0000000 --- a/examples/androidextras/services/servicebinder/main.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qtandroidservice.h" - -#include <QGuiApplication> -#include <QQmlApplicationEngine> -#include <QQmlContext> - -int main(int argc, char *argv[]) -{ - QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QGuiApplication app(argc, argv); - QQmlApplicationEngine engine; - - QtAndroidService *qtAndroidService = new QtAndroidService(&app); - engine.rootContext()->setContextProperty(QLatin1String("qtAndroidService"), qtAndroidService); - - engine.load(QUrl(QLatin1String("qrc:/main.qml"))); - - return app.exec(); -} diff --git a/examples/androidextras/services/servicebinder/qtandroidservice.cpp b/examples/androidextras/services/servicebinder/qtandroidservice.cpp deleted file mode 100644 index c984746..0000000 --- a/examples/androidextras/services/servicebinder/qtandroidservice.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qtandroidservice.h" - -#include <QAndroidIntent> -#include <QAndroidParcel> -#include <QDebug> - -const static char TAG[] = "Service app"; -QtAndroidService *QtAndroidService::m_instance = nullptr; - -void AndroidServiceConnection::onServiceConnected(const QString &name, - const QAndroidBinder &serviceBinder) -{ - qDebug() << TAG << ": onServiceConnected() " << name; - m_servieBinder = serviceBinder; -} - -void AndroidServiceConnection::onServiceDisconnected(const QString &name) -{ - qDebug() << TAG << ": onServiceDisconnected() " << name; -} - -void AndroidServiceConnection::sendToService(const QString &name) -{ - // send name - QAndroidParcel sendData, replyData; - sendData.writeBinder(m_servieBinder); - sendData.writeData(name.toUtf8()); - m_servieBinder.transact(1, sendData, &replyData); - const QVariant received(replyData.readVariant()); - qDebug() << received; - emit QtAndroidService::instance()->messageFromService(received.toString()); -} - -QtAndroidService::QtAndroidService(QObject *parent) : QObject(parent) -{ - m_instance = this; - - QAndroidIntent serviceIntent(QtAndroid::androidActivity(), - "org.qtproject.example.qtandroidservice.QtAndroidService"); - - const bool bindResult = QtAndroid::bindService(serviceIntent, - m_serviceConnection, - QtAndroid::BindFlag::AutoCreate); - qDebug() << "Binding to the service..." << bindResult; -} - -void QtAndroidService::sendToService(const QString &name) -{ - m_serviceConnection.sendToService(name); -} diff --git a/examples/androidextras/services/servicebinder/qtandroidservice.h b/examples/androidextras/services/servicebinder/qtandroidservice.h deleted file mode 100644 index 352f6d1..0000000 --- a/examples/androidextras/services/servicebinder/qtandroidservice.h +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QAndroidBinder> -#include <QAndroidServiceConnection> -#include <QtAndroid> - -class AndroidServiceConnection : public QAndroidServiceConnection -{ -public: - void onServiceConnected(const QString &name, const QAndroidBinder &serviceBinder) override; - - void onServiceDisconnected(const QString &name) override; - - void sendToService(const QString &name); - -private: - QAndroidBinder m_servieBinder; -}; - -class QtAndroidService : public QObject -{ - Q_OBJECT - -public: - explicit QtAndroidService(QObject *parent = nullptr); - static QtAndroidService *instance() { return m_instance; } - Q_INVOKABLE void sendToService(const QString &name); - -signals: - void messageFromService(const QString &message); - -private: - static QtAndroidService *m_instance; - AndroidServiceConnection m_serviceConnection; -}; diff --git a/examples/androidextras/services/servicebinder/service.pro b/examples/androidextras/services/servicebinder/service.pro deleted file mode 100644 index 12853ff..0000000 --- a/examples/androidextras/services/servicebinder/service.pro +++ /dev/null @@ -1,13 +0,0 @@ -TEMPLATE = lib -TARGET = service -CONFIG += dll -QT += core androidextras - -HEADERS += androidbinder.h - -SOURCES += \ - service_main.cpp \ - androidbinder.cpp - -target.path = $$[QT_INSTALL_EXAMPLES]/androidextras/services/servicebinder -INSTALLS += target diff --git a/examples/androidextras/services/servicebinder/service_main.cpp b/examples/androidextras/services/servicebinder/service_main.cpp deleted file mode 100644 index 5fefa18..0000000 --- a/examples/androidextras/services/servicebinder/service_main.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "androidbinder.h" - -#include <QAndroidService> -#include <QDebug> - -int main(int argc, char *argv[]) -{ - qDebug() << "Starting service process from C++"; - QAndroidService app(argc, argv, [](const QAndroidIntent &) { - qDebug() << "Android service onBind()"; - return new AndroidBinder{}; - }); - - return app.exec(); -} diff --git a/examples/androidextras/services/servicebinder/servicebinder.pro b/examples/androidextras/services/servicebinder/servicebinder.pro deleted file mode 100644 index f2eeb3c..0000000 --- a/examples/androidextras/services/servicebinder/servicebinder.pro +++ /dev/null @@ -1,5 +0,0 @@ -TEMPLATE = subdirs - -SUBDIRS += \ - servicebinderclient.pro \ - service.pro diff --git a/examples/androidextras/services/servicebinder/servicebinderclient.pro b/examples/androidextras/services/servicebinder/servicebinderclient.pro deleted file mode 100644 index 653e546..0000000 --- a/examples/androidextras/services/servicebinder/servicebinderclient.pro +++ /dev/null @@ -1,25 +0,0 @@ -QT += qml quick androidextras - -CONFIG += c++11 - -HEADERS += \ - qtandroidservice.h - -SOURCES += \ - main.cpp \ - qtandroidservice.cpp - -include(../common/common.pri) - -# Additional import path used to resolve QML modules in Qt Creator's code model -QML_IMPORT_PATH = - -target.path = $$[QT_INSTALL_EXAMPLES]/androidextras/services/servicebinder -INSTALLS += target - -ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android - -DISTFILES += \ - android/AndroidManifest.xml \ - android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java - diff --git a/examples/androidextras/services/servicebroadcast/android/AndroidManifest.xml b/examples/androidextras/services/servicebroadcast/android/AndroidManifest.xml deleted file mode 100644 index ef94a7f..0000000 --- a/examples/androidextras/services/servicebroadcast/android/AndroidManifest.xml +++ /dev/null @@ -1,106 +0,0 @@ -<?xml version="1.0"?> -<manifest package="org.qtproject.example.qtandroidservice" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto"> - <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/> - - <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. - Remove the comment if you do not require these default permissions. --> - <!-- %%INSERT_PERMISSIONS --> - - <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. - Remove the comment if you do not require these default features. --> - <!-- %%INSERT_FEATURES --> - - <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> - - <application android:hardwareAccelerated="true" android:name="org.qtproject.qt.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --" android:extractNativeLibs="true"> - <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> - </intent-filter> - - <!-- Application arguments --> - <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ --> - <!-- Application arguments --> - - <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Used to specify custom system library path to run with local system libs --> - <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> --> - <!-- Messages maps --> - <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/> - <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/> - <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/> - <meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/> - <!-- Messages maps --> - - <!-- Splash screen --> - <!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation, - then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and - use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you - are done populating your window with content. --> - <!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ --> - <!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ --> - <!-- Splash screen --> - - <!-- Background running --> - <!-- Warning: changing this value to true may cause unexpected crashes if the - application still try to draw after - "applicationStateChanged(Qt::ApplicationSuspended)" - signal is sent! --> - <meta-data android:name="android.app.background_running" android:value="false"/> - <!-- Background running --> - - <!-- auto screen scale factor --> - <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/> - <!-- auto screen scale factor --> - - <!-- extract android style --> - <!-- available android:values : - * default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons - * full - useful QWidget & Quick Controls 1 apps - * minimal - useful for Quick Controls 2 apps, it is much faster than "full" - * none - useful for apps that don't use any of the above Qt modules - --> - <meta-data android:name="android.app.extract_android_style" android:value="default"/> - <!-- extract android style --> - </activity> - -<service android:process=":qt_service" android:name=".QtAndroidService"> - - <meta-data android:name="android.app.lib_name" android:value="service"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Run with local libs --> - - <!-- Background running --> - <meta-data android:name="android.app.background_running" android:value="true"/> - <!-- Background running --> - </service> - </application> -</manifest> diff --git a/examples/androidextras/services/servicebroadcast/android/src/org/qtproject/example/qtandroidservice/ActivityUtils.java b/examples/androidextras/services/servicebroadcast/android/src/org/qtproject/example/qtandroidservice/ActivityUtils.java deleted file mode 100644 index d2802d7..0000000 --- a/examples/androidextras/services/servicebroadcast/android/src/org/qtproject/example/qtandroidservice/ActivityUtils.java +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -package org.qtproject.example.qtandroidservice; - -import android.content.Context; -import android.content.Intent; -import android.util.Log; -import android.content.BroadcastReceiver; -import android.content.IntentFilter; - -public class ActivityUtils { - - private static native void sendToQt(String message); - - private static final String TAG = "ActivityUtils"; - public static final String BROADCAST_NAME_ACTION = "org.qtproject.example.qtandroidservice.broadcast.name"; - - public void registerServiceBroadcastReceiver(Context context) { - IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction(BROADCAST_NAME_ACTION); - context.registerReceiver(serviceMessageReceiver, intentFilter); - Log.i(TAG, "Registered broadcast receiver"); - } - - private BroadcastReceiver serviceMessageReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - Log.i(TAG, "In OnReceive broadcast receiver"); - if (BROADCAST_NAME_ACTION.equals(intent.getAction())) { - String name = intent.getStringExtra("name"); - Log.i(TAG, "Service received name: " + name); - String message = "Hello " + name; - sendToQt(message); - Log.i(TAG, "Service sent back message: " + message); - } - } - }; -} diff --git a/examples/androidextras/services/servicebroadcast/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java b/examples/androidextras/services/servicebroadcast/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java deleted file mode 100644 index 75c01be..0000000 --- a/examples/androidextras/services/servicebroadcast/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -package org.qtproject.example.qtandroidservice; - -import android.content.Context; -import android.content.Intent; -import android.util.Log; -import android.os.IBinder; -import org.qtproject.qt.android.bindings.QtService; -import android.content.IntentFilter; - -public class QtAndroidService extends QtService -{ - private static final String TAG = "QtAndroidService"; - - @Override - public void onCreate() { - super.onCreate(); - Log.i(TAG, "Creating Service"); - } - - @Override - public void onDestroy() { - super.onDestroy(); - Log.i(TAG, "Destroying Service"); - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - int ret = super.onStartCommand(intent, flags, startId); - - String name = new String(intent.getByteArrayExtra("name")); - Intent sendToUiIntent = new Intent(); - sendToUiIntent.setAction(ActivityUtils.BROADCAST_NAME_ACTION); - sendToUiIntent.putExtra("name", name); - Log.i(TAG, "Service sending broadcast"); - sendBroadcast(sendToUiIntent); - - return ret; - } - - @Override - public IBinder onBind(Intent intent) { - return super.onBind(intent); - } -} diff --git a/examples/androidextras/services/servicebroadcast/doc/src/qtandroidextras-example-service-broadcastreceiver.qdoc b/examples/androidextras/services/servicebroadcast/doc/src/qtandroidextras-example-service-broadcastreceiver.qdoc deleted file mode 100644 index 781f95a..0000000 --- a/examples/androidextras/services/servicebroadcast/doc/src/qtandroidextras-example-service-broadcastreceiver.qdoc +++ /dev/null @@ -1,152 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \title Android Service with BroadcastReceiver - \ingroup examples-qtandroidextras - \example services/servicebroadcast - \brief Demonstrates how to run an Android service in a separate process using - a separate .so lib file, and how to communicate with Qt using a BroadcastReceiver. - - \image androidservices.png - - This example demonstrates how to create and run an Android service in a - separate process that uses a separate \c .so lib file, and then exchange data - between QML/C++ and the Java service using a - \l{Android: BroadcastReceiver}{BroadcastReceiver}. - - When clicking the \uicontrol {Send to Service} button, the name entered in the QML - view, Qt, in this case, is sent to the Android service. Then, the service - replies back with a message \c {Hello Qt} which is printed in the QML view. - - \include examples-run.qdocinc - - \section1 Create the Service - - When running the app's process, you can extend either \c QtService or \c Service. - Extending \c QtService allows Qt to load all the necessary libraries to load - Qt components correctly and call native methods on Android. However, here - the service is running in the same process, and with the BroadcastReceiver - you don't need native calls to exchange messages with Qt, so extending either - class works. - - Start by creating the Java service class. This is a normal Android \c Service - that receives a name from QML and replies back with \c {Hello <name>}: - - \quotefromfile services/servicebroadcast/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java - \skipto package - \printuntil /^\}/ - - In the owerwritten method - \l{Android: Service onStartCommand}{onStartCommand()}, the service receives - a name from the calling intent, then sends a broadcast to the BroadcastReceiver, - which in turn will call the native method \c {sendToQt(String message)}. For - more information on managing native calls in Qt, see - \l{Calling QML/C++ Functions from Java Code}. - - Since the service is run on a separate \c .so lib file, you must create a - sub-project for the service process which uses \l{QAndroidService}. Start - with a \c .pro file as follows: - - \quotefromfile services/servicebroadcast/service.pro - \printuntil service_main - - Then, create the file \c service_main.cpp: - - \quotefromfile services/servicebroadcast/service_main.cpp - \skipto include - \printuntil /^\}/ - - \section1 Manage the AndroidManifest.xml File - - To use the service, it must be declared in the \c AndroidManifest.xml - file: - - \quotefromfile services/servicebroadcast/android/AndroidManifest.xml - \skipto <service - \printuntil </service> - - \section1 Start the Service - - Take the following steps to set up and start the service: - - \list 1 - \li Register the native method - - \li Create the BroadcastReceiver in a custom Java class: - - \quotefromfile services/servicebroadcast/android/src/org/qtproject/example/qtandroidservice/ActivityUtils.java - \skipto package - \printuntil /^\}/ - - \li Register the BroadcastReceiver: - - \quotefromfile services/common/qtandroidservice.cpp - \skipto :registerBroadcastReceiver - \printuntil /^\}/ - - \li Call the \l{Android: Service startService}{startService()} - method, as follows: - - \quotefromfile services/common/qtandroidservice.cpp - \skipto sendToService - \printuntil /^\}/ - - This function is used to start the Service. If the service is already running, - it will only send the names without starting a new service instance. - - \li Then, you have to add the necessary \l Connections, as described in - \l{Qt JNI Messenger}{Qt JNI Messenger Example}. - - \endlist - - \sa {Android Service with BroadcastReceiver - Same Lib File}, - {Android Services}, {Qt for Android}, {Qt Android Extras} -*/ diff --git a/examples/androidextras/services/servicebroadcast/main.cpp b/examples/androidextras/services/servicebroadcast/main.cpp deleted file mode 100644 index da53bb8..0000000 --- a/examples/androidextras/services/servicebroadcast/main.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qtandroidservice.h" - -#include <QAndroidService> -#include <QGuiApplication> -#include <QQmlApplicationEngine> -#include <QQmlContext> - -int main(int argc, char *argv[]) -{ - QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QGuiApplication app(argc, argv); - QQmlApplicationEngine engine; - - QtAndroidService *qtAndroidService = new QtAndroidService(&app); - engine.rootContext()->setContextProperty(QLatin1String("qtAndroidService"), qtAndroidService); - - const QUrl url(http://code.qt.io/QStringLiteral(%22qrc:/main.qml")); - QObject::connect( - &engine, - &QQmlApplicationEngine::objectCreated, - &app, - [url](QObject *obj, const QUrl &objUrl) { - if (!obj && url == objUrl) - QCoreApplication::exit(-1); - }, - Qt::QueuedConnection); - engine.load(url); - - qtAndroidService->sendToService("Qt"); - - return app.exec(); -} diff --git a/examples/androidextras/services/servicebroadcast/service.pro b/examples/androidextras/services/servicebroadcast/service.pro deleted file mode 100644 index 62b2c9f..0000000 --- a/examples/androidextras/services/servicebroadcast/service.pro +++ /dev/null @@ -1,10 +0,0 @@ -TEMPLATE = lib -TARGET = service -CONFIG += dll -QT += core androidextras - -SOURCES += \ - service_main.cpp - -target.path = $$[QT_INSTALL_EXAMPLES]/androidextras/services/servicebroadcast -INSTALLS += target diff --git a/examples/androidextras/services/servicebroadcast/service_main.cpp b/examples/androidextras/services/servicebroadcast/service_main.cpp deleted file mode 100644 index a7e2e24..0000000 --- a/examples/androidextras/services/servicebroadcast/service_main.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QDebug> -#include <QAndroidService> - -int main(int argc, char *argv[]) -{ - qWarning() << "Service starting with BroadcastReceiver from separate .so file"; - QAndroidService app(argc, argv); - - return app.exec(); -} diff --git a/examples/androidextras/services/servicebroadcast/servicebroadcast.pro b/examples/androidextras/services/servicebroadcast/servicebroadcast.pro deleted file mode 100644 index 4ab511b..0000000 --- a/examples/androidextras/services/servicebroadcast/servicebroadcast.pro +++ /dev/null @@ -1,5 +0,0 @@ -TEMPLATE = subdirs - -SUBDIRS += \ - servicebroadcastclient.pro \ - service.pro diff --git a/examples/androidextras/services/servicebroadcast/servicebroadcastclient.pro b/examples/androidextras/services/servicebroadcast/servicebroadcastclient.pro deleted file mode 100644 index 72ceab6..0000000 --- a/examples/androidextras/services/servicebroadcast/servicebroadcastclient.pro +++ /dev/null @@ -1,21 +0,0 @@ -QT += qml quick androidextras - -CONFIG += c++11 - -SOURCES += main.cpp - -include(../common/common_broadcast.pri) -include(../common/common.pri) - -# Additional import path used to resolve QML modules in Qt Creator's code model -QML_IMPORT_PATH = - -target.path = $$[QT_INSTALL_EXAMPLES]/androidextras/services/servicebroadcast -INSTALLS += target - -ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android - -DISTFILES += \ - android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java \ - android/src/org/qtproject/example/qtandroidservice/ActivityUtils.java \ - android/AndroidManifest.xml diff --git a/examples/androidextras/services/servicebroadcastsamelib/android/AndroidManifest.xml b/examples/androidextras/services/servicebroadcastsamelib/android/AndroidManifest.xml deleted file mode 100644 index 9f9647f..0000000 --- a/examples/androidextras/services/servicebroadcastsamelib/android/AndroidManifest.xml +++ /dev/null @@ -1,110 +0,0 @@ -<?xml version="1.0"?> -<manifest package="org.qtproject.example.qtandroidservice" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto"> - <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/> - - <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. - Remove the comment if you do not require these default permissions. --> - <!-- %%INSERT_PERMISSIONS --> - - <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. - Remove the comment if you do not require these default features. --> - <!-- %%INSERT_FEATURES --> - - <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> - - <application android:hardwareAccelerated="true" android:name="org.qtproject.qt.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --" android:extractNativeLibs="true"> - <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> - </intent-filter> - - <!-- Application arguments --> - <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ --> - <!-- Application arguments --> - - <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Used to specify custom system library path to run with local system libs --> - <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> --> - <!-- Messages maps --> - <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/> - <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/> - <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/> - <meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/> - <!-- Messages maps --> - - <!-- Splash screen --> - <!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation, - then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and - use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you - are done populating your window with content. --> - <!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ --> - <!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ --> - <!-- Splash screen --> - - <!-- Background running --> - <!-- Warning: changing this value to true may cause unexpected crashes if the - application still try to draw after - "applicationStateChanged(Qt::ApplicationSuspended)" - signal is sent! --> - <meta-data android:name="android.app.background_running" android:value="false"/> - <!-- Background running --> - - <!-- auto screen scale factor --> - <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/> - <!-- auto screen scale factor --> - - <!-- extract android style --> - <!-- available android:values : - * default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons - * full - useful QWidget & Quick Controls 1 apps - * minimal - useful for Quick Controls 2 apps, it is much faster than "full" - * none - useful for apps that don't use any of the above Qt modules - --> - <meta-data android:name="android.app.extract_android_style" android:value="default"/> - <!-- extract android style --> - </activity> - -<service android:process=":qt_service" android:name=".QtAndroidService"> - - <!-- Application arguments --> - <meta-data android:name="android.app.arguments" android:value="-service"/> - <!-- Application arguments --> - - <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Run with local libs --> - - <!-- Background running --> - <meta-data android:name="android.app.background_running" android:value="true"/> - <!-- Background running --> - </service> - </application> -</manifest> diff --git a/examples/androidextras/services/servicebroadcastsamelib/android/src/org/qtproject/example/qtandroidservice/ActivityUtils.java b/examples/androidextras/services/servicebroadcastsamelib/android/src/org/qtproject/example/qtandroidservice/ActivityUtils.java deleted file mode 100644 index d2802d7..0000000 --- a/examples/androidextras/services/servicebroadcastsamelib/android/src/org/qtproject/example/qtandroidservice/ActivityUtils.java +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -package org.qtproject.example.qtandroidservice; - -import android.content.Context; -import android.content.Intent; -import android.util.Log; -import android.content.BroadcastReceiver; -import android.content.IntentFilter; - -public class ActivityUtils { - - private static native void sendToQt(String message); - - private static final String TAG = "ActivityUtils"; - public static final String BROADCAST_NAME_ACTION = "org.qtproject.example.qtandroidservice.broadcast.name"; - - public void registerServiceBroadcastReceiver(Context context) { - IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction(BROADCAST_NAME_ACTION); - context.registerReceiver(serviceMessageReceiver, intentFilter); - Log.i(TAG, "Registered broadcast receiver"); - } - - private BroadcastReceiver serviceMessageReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - Log.i(TAG, "In OnReceive broadcast receiver"); - if (BROADCAST_NAME_ACTION.equals(intent.getAction())) { - String name = intent.getStringExtra("name"); - Log.i(TAG, "Service received name: " + name); - String message = "Hello " + name; - sendToQt(message); - Log.i(TAG, "Service sent back message: " + message); - } - } - }; -} diff --git a/examples/androidextras/services/servicebroadcastsamelib/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java b/examples/androidextras/services/servicebroadcastsamelib/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java deleted file mode 100644 index 69ae5a6..0000000 --- a/examples/androidextras/services/servicebroadcastsamelib/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -package org.qtproject.example.qtandroidservice; - -import android.content.Context; -import android.content.Intent; -import android.util.Log; -import android.os.IBinder; -import org.qtproject.qt.android.bindings.QtService; -import android.content.IntentFilter; - - -public class QtAndroidService extends QtService -{ - private static final String TAG = "QtAndroidService"; - - @Override - public void onCreate() { - super.onCreate(); - Log.i(TAG, "Creating Service"); - } - - @Override - public void onDestroy() { - super.onDestroy(); - Log.i(TAG, "Destroying Service"); - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - int ret = super.onStartCommand(intent, flags, startId); - - String name = new String(intent.getByteArrayExtra("name")); - Intent sendToUiIntent = new Intent(); - sendToUiIntent.setAction(ActivityUtils.BROADCAST_NAME_ACTION); - sendToUiIntent.putExtra("name", name); - Log.i(TAG, "Service sending broadcast"); - sendBroadcast(sendToUiIntent); - - return ret; - } - - @Override - public IBinder onBind(Intent intent) { - return super.onBind(intent); - } -} diff --git a/examples/androidextras/services/servicebroadcastsamelib/doc/src/qtandroidextras-example-service-broadcastreceiver-samelib.qdoc b/examples/androidextras/services/servicebroadcastsamelib/doc/src/qtandroidextras-example-service-broadcastreceiver-samelib.qdoc deleted file mode 100644 index 7f1d6b0..0000000 --- a/examples/androidextras/services/servicebroadcastsamelib/doc/src/qtandroidextras-example-service-broadcastreceiver-samelib.qdoc +++ /dev/null @@ -1,153 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \title Android Service with BroadcastReceiver - Same Lib File - \ingroup examples-qtandroidextras - \example services/servicebroadcastsamelib - \brief Demonstrates how to run an Android service in a separate process, - and how to communicate with Qt using a BroadcastReceiver. - - \image androidservices.png - - This example demonstrates how to create and run an Android service in its - own process using the same main \c .so lib file, and then exchange data - between QML/C++ and the Java service using a - \l{Android: BroadcastReceiver}{BroadcastReceiver}. - - When clicking the \uicontrol {Send to Service} button, the name entered in - the QML view, Qt, in this case, is sent to the Android service. Then, the - service replies back with a message \c {Hello Qt} which is printed in the - QML view. - - \include examples-run.qdocinc - - \section1 Create the Service - - When running the app's process, you can extend either \c QtService or \c Service. - Extending \c QtService allows Qt to load all the necessary libraries to load - Qt components correctly and call native methods on Android. However, here - the service is running in the same process, and with the BroadcastReceiver you - don't need native calls to exchange messages with Qt, so extending either - class works. - - Start by creating the Java service class. This is a normal Android \c Service - that receives a name from QML and replies back with \c {Hello <name>}: - - \quotefromfile services/servicebroadcastsamelib/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java - \skipto package - \printuntil /^\}/ - - In the overwritten method - \l{Android: Service onStartCommand}{onStartCommand()}, - the service receives a name from the calling intent, then sends a broadcast - to the BroadcastReceiver, which in turn will call the native method - \c {sendToQt(String message)}. For more information on managing native - calls in Qt, see \l{Calling QML/C++ Functions from Java Code}. - - \section1 Manage the AndroidManifest.xml File - - To use the service, it must be declared in the \c AndroidManifest.xml - file: - - \quotefromfile services/servicebroadcastsamelib/android/AndroidManifest.xml - \skipto <service - \printuntil </service> - - \section1 Start the Service - - Since the service is run using the same \c .so lib file with different arguments - for the service, you must handle the arguments. For the main application use: - - \quotefromfile services/servicebroadcastsamelib/main.cpp - \skipto (argc - \printline (argc - - Then take the following steps: - - \list 1 - \li Register the native method - - \li Create the BroadcastReceiver in a custom Java class: - - \quotefromfile services/servicebroadcastsamelib/android/src/org/qtproject/example/qtandroidservice/ActivityUtils.java - \skipto package - \printuntil /^\}/ - - \li Register the BroadcastReceiver: - - \quotefromfile services/common/qtandroidservice.cpp - \skipto :registerBroadcastReceiver - \printuntil /^\}/ - - \li Call the \l{Android: Service startService}{startService()} - method, as follows: - - \quotefromfile services/common/qtandroidservice.cpp - \skipto sendToService - \printuntil /^\}/ - - This function is used to start the Service. If the service is already running, - it will only send the names without starting a new service instance. - - \li Then, you have to add the necessary \l Connections, as described in - \l{Qt JNI Messenger}{Qt JNI Messenger Example}. - - \endlist - - Handle the service argument as follows: - - \quotefromfile services/servicebroadcastsamelib/main.cpp - \skipto else if - \printuntil app.exec(); - - \sa {Android Service with BroadcastReceiver}, {Android Services}, - {Qt for Android}, {Qt Android Extras} -*/ diff --git a/examples/androidextras/services/servicebroadcastsamelib/main.cpp b/examples/androidextras/services/servicebroadcastsamelib/main.cpp deleted file mode 100644 index 15dfa93..0000000 --- a/examples/androidextras/services/servicebroadcastsamelib/main.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qtandroidservice.h" - -#include <QAndroidService> -#include <QGuiApplication> -#include <QQmlApplicationEngine> -#include <QQmlContext> - -int main(int argc, char *argv[]) -{ - if (argc <= 1) { - QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QGuiApplication app(argc, argv); - QQmlApplicationEngine engine; - - QtAndroidService *qtAndroidService = new QtAndroidService(&app); - engine.rootContext()->setContextProperty(QLatin1String("qtAndroidService"), qtAndroidService); - - const QUrl url(http://code.qt.io/QStringLiteral(%22qrc:/main.qml")); - QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, - &app, [url](QObject *obj, const QUrl &objUrl) { - if (!obj && url == objUrl) - QCoreApplication::exit(-1); - }, Qt::QueuedConnection); - engine.load(url); - - qtAndroidService->sendToService("Qt"); - - return app.exec(); - - } else if (argc > 1 && strcmp(argv[1], "-service") == 0) { - qWarning() << "Service starting with BroadcastReceiver from same .so file"; - QAndroidService app(argc, argv); - - return app.exec(); - - } else { - qWarning() << "Unrecognized command line argument"; - return -1; - } -} diff --git a/examples/androidextras/services/servicebroadcastsamelib/servicebroadcastsamelib.pro b/examples/androidextras/services/servicebroadcastsamelib/servicebroadcastsamelib.pro deleted file mode 100644 index dce9afe..0000000 --- a/examples/androidextras/services/servicebroadcastsamelib/servicebroadcastsamelib.pro +++ /dev/null @@ -1,21 +0,0 @@ -QT += qml quick androidextras - -CONFIG += c++11 - -SOURCES += main.cpp - -include(../common/common_broadcast.pri) -include(../common/common.pri) - -# Additional import path used to resolve QML modules in Qt Creator's code model -QML_IMPORT_PATH = - -target.path = $$[QT_INSTALL_EXAMPLES]/androidextras/services/servicebroadcastsamelib -INSTALLS += target - -ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android - -DISTFILES += \ - android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java \ - android/src/org/qtproject/example/qtandroidservice/ActivityUtils.java \ - android/AndroidManifest.xml diff --git a/examples/androidextras/services/serviceremoteobjects/android/AndroidManifest.xml b/examples/androidextras/services/serviceremoteobjects/android/AndroidManifest.xml deleted file mode 100644 index 5ed4f31..0000000 --- a/examples/androidextras/services/serviceremoteobjects/android/AndroidManifest.xml +++ /dev/null @@ -1,106 +0,0 @@ -<?xml version="1.0"?> -<manifest package="org.qtproject.example.qtandroidservice" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto"> - <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/> - - <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. - Remove the comment if you do not require these default permissions. --> - <!-- %%INSERT_PERMISSIONS --> - - <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. - Remove the comment if you do not require these default features. --> - <!-- %%INSERT_FEATURES --> - - <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> - - <application android:hardwareAccelerated="true" android:name="org.qtproject.qt.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --" android:extractNativeLibs="true"> - <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> - </intent-filter> - - <!-- Application arguments --> - <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ --> - <!-- Application arguments --> - - <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Used to specify custom system library path to run with local system libs --> - <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> --> - <!-- Messages maps --> - <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/> - <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/> - <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/> - <meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/> - <!-- Messages maps --> - - <!-- Splash screen --> - <!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation, - then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and - use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you - are done populating your window with content. --> - <!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ --> - <!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ --> - <!-- Splash screen --> - - <!-- Background running --> - <!-- Warning: changing this value to true may cause unexpected crashes if the - application still try to draw after - "applicationStateChanged(Qt::ApplicationSuspended)" - signal is sent! --> - <meta-data android:name="android.app.background_running" android:value="false"/> - <!-- Background running --> - - <!-- auto screen scale factor --> - <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/> - <!-- auto screen scale factor --> - - <!-- extract android style --> - <!-- available android:values : - * default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons - * full - useful QWidget & Quick Controls 1 apps - * minimal - useful for Quick Controls 2 apps, it is much faster than "full" - * none - useful for apps that don't use any of the above Qt modules - --> - <meta-data android:name="android.app.extract_android_style" android:value="default"/> - <!-- extract android style --> - </activity> - - <service android:process=":qt_service" android:name=".QtAndroidService"> - - <meta-data android:name="android.app.lib_name" android:value="service"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Run with local libs --> - - <!-- Background running --> - <meta-data android:name="android.app.background_running" android:value="true"/> - <!-- Background running --> - </service> - </application> -</manifest> diff --git a/examples/androidextras/services/serviceremoteobjects/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java b/examples/androidextras/services/serviceremoteobjects/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java deleted file mode 100644 index 791b319..0000000 --- a/examples/androidextras/services/serviceremoteobjects/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -package org.qtproject.example.qtandroidservice; - -import android.content.Context; -import android.content.Intent; -import org.qtproject.qt.android.bindings.QtService; -import android.util.Log; - -public class QtAndroidService extends QtService { - - private static final String TAG = "QtAndroidService"; - - @Override - public void onCreate() { - super.onCreate(); - Log.i(TAG, "Creating Service"); - } - - @Override - public void onDestroy() { - super.onDestroy(); - Log.i(TAG, "Destroying Service"); - } -} diff --git a/examples/androidextras/services/serviceremoteobjects/doc/src/qtandroidextras-example-service-remoteobjects.qdoc b/examples/androidextras/services/serviceremoteobjects/doc/src/qtandroidextras-example-service-remoteobjects.qdoc deleted file mode 100644 index 667f31b..0000000 --- a/examples/androidextras/services/serviceremoteobjects/doc/src/qtandroidextras-example-service-remoteobjects.qdoc +++ /dev/null @@ -1,183 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \title Android Service with Qt Remote Objects - \ingroup examples-qtandroidextras - \example services/serviceremoteobjects - \brief Demonstrates how to run an Android service in a separate process, - and how to communicate between the service process and the main process - using Qt Remote Objects. - - \image androidservices.png - - This example demonstrates how to create and run an Android service in - a separate process from the main application process, and then exchange data - between QML/C++ and the Java service using \l{Qt Remote Objects}. - - When clicking the \uicontrol {Send to Service} button, the name entered in the QML - view, Qt, in this case, is sent to the Android service. Then, the service - replies back with a message \c {Hello Qt} which is printed in the QML view. - - \include examples-run.qdocinc - - \section1 Create the Service - - To start a service in its own process, extend the \c QtService class for - your service. Extending \c QtService allows the service to load the necessary - Qt libraries used for Qt, like \l{Qt Remote Objects} libraries. - - Start by creating the Java service class. The following class extends \c QtService - and acts as your service entry point: - - \quotefromfile services/serviceremoteobjects/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java - \skipto package - \printuntil /^\}/ - - This class can have any logic you want using Java code. However, you don't need - any logic to communicate with Qt as that will be done using Qt Remote Objects. - - \section1 Manage the AndroidManifest.xml File - - To use the service, it must be declared in the \c AndroidManifest.xml - file as follows: - - \quotefromfile services/serviceremoteobjects/android/AndroidManifest.xml - \skipto <service - \printuntil </service> - - The important part of this service declaration is the \c lib_name part. - It will ensure that the service is run by the service's own lib file: - - \quotefromfile services/serviceremoteobjects/android/AndroidManifest.xml - \skipto android:value="service" - \printuntil android:value="service" - - \section1 Handle the Application Start - - To start the service, call the following function from the application's - \c main(): - - \quotefromfile services/serviceremoteobjects/main.cpp - \skipto startService - \printuntil /^\}/ - - \section1 Handle the Service Start - - \l{QAndroidService} is used to create the service process. For the service - to start from its own \c .so lib file, create a sub-project with the following - \c .pro file: - - \quotefromfile services/serviceremoteobjects/service.pro - \printuntil CONFIG - - \section1 Communication with Qt Remote Objects - - To use \l{Qt Remote Objects}, define a \c .rep file: - - \quotefromfile services/common/qtandroidservice.rep - \skipto class - \printuntil /^\}/ - - Define the \c .rep source file in the service project \c .pro: - - \quotefromfile services/serviceremoteobjects/service.pro - \skipto REPC_SOURCE - \printline REPC_SOURCE - - And in the application's \c .pro file: - - \quotefromfile services/serviceremoteobjects/serviceremoteobjectsclient.pro - \skipto REPC_REPLICA - \printline REPC_REPLICA - - Then define the class used by Qt Remote Objects, which has a - \c sendToService() slot and a \c messageFromService() signal: - - \quotefromfile services/common/qtandroidservice_ro.h - \skipto include - \printuntil /^\};/ - - Include the class in the previous snippet in \c main.cpp: - - \quotefromfile services/serviceremoteobjects/main.cpp - \skipto _replica.h - \printline _replica.h - - Now, in the service's \c service_main.cpp, create the \l{QRemoteObjectHost} - node and start \l{QAndroidService}: - - \quotefromfile services/serviceremoteobjects/service_main.cpp - \skipto include - \printuntil /^\}/ - - In the application's \c main.cpp, create the client node and connect it - to the source node created in the service and connect it to the QML view: - - \quotefromfile services/serviceremoteobjects/main.cpp - \skipto QRemoteObjectNode - \printuntil sendToService - - Then, add a \l Connections element to watch for the incoming messages from - the service: - - \quotefromfile services/common/main.qml - \skipto Connections - \printuntil /^\ {4}\}/ - - And set the \c onClicked for the sending button to: - - \quotefromfile services/common/main.qml - \skipto onClicked - \printline onClicked - - \sa {Android Service with Qt Remote Objects - Same Lib File}, - {Android Services}, {Qt for Android}, {Qt Android Extras} -*/ diff --git a/examples/androidextras/services/serviceremoteobjects/main.cpp b/examples/androidextras/services/serviceremoteobjects/main.cpp deleted file mode 100644 index b54460a..0000000 --- a/examples/androidextras/services/serviceremoteobjects/main.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "rep_qtandroidservice_replica.h" - -#include <QAndroidIntent> -#include <QtAndroid> - -#include <QGuiApplication> -#include <QQmlApplicationEngine> -#include <QQmlContext> - -void startService() -{ - QAndroidIntent serviceIntent(QtAndroid::androidActivity().object(), - "org/qtproject/example/qtandroidservice/QtAndroidService"); - QAndroidJniObject result = QtAndroid::androidActivity().callObjectMethod( - "startService", - "(Landroid/content/Intent;)Landroid/content/ComponentName;", - serviceIntent.handle().object()); -} - -int main(int argc, char *argv[]) -{ - QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QGuiApplication app(argc, argv); - QQmlApplicationEngine engine; - - startService(); - - QRemoteObjectNode repNode; - repNode.connectToNode(QUrl(QStringLiteral("local:replica"))); - QSharedPointer<QtAndroidServiceReplica> rep(repNode.acquire<QtAndroidServiceReplica>()); - engine.rootContext()->setContextProperty("qtAndroidService", rep.data()); - bool res = rep->waitForSource(); - Q_ASSERT(res); - rep->sendToService("Qt"); - - QObject::connect(rep.data(), &QtAndroidServiceReplica::messageFromService, [](const QString &message){ - qDebug() << "Service sent: " << message; - }); - engine.load(QUrl(QLatin1String("qrc:/main.qml"))); - - return app.exec(); -} diff --git a/examples/androidextras/services/serviceremoteobjects/service.pro b/examples/androidextras/services/serviceremoteobjects/service.pro deleted file mode 100644 index 09a0aaa..0000000 --- a/examples/androidextras/services/serviceremoteobjects/service.pro +++ /dev/null @@ -1,13 +0,0 @@ -TEMPLATE = lib -TARGET = service -CONFIG += dll -QT += core androidextras remoteobjects - -SOURCES += service_main.cpp - -include(../common/common_ro.pri) - -REPC_SOURCE += ../common/qtandroidservice.rep - -target.path = $$[QT_INSTALL_EXAMPLES]/androidextras/services/serviceremoteobjects -INSTALLS += target diff --git a/examples/androidextras/services/serviceremoteobjects/service_main.cpp b/examples/androidextras/services/serviceremoteobjects/service_main.cpp deleted file mode 100644 index dc1ec35..0000000 --- a/examples/androidextras/services/serviceremoteobjects/service_main.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "qtandroidservice_ro.h" - -#include <QDebug> -#include <QAndroidService> - -int main(int argc, char *argv[]) -{ - qWarning() << "QtAndroidService starting from separate .so"; - QAndroidService app(argc, argv); - - QRemoteObjectHost srcNode(QUrl(QStringLiteral("local:replica"))); - QtAndroidService qtAndroidService; - srcNode.enableRemoting(&qtAndroidService); - - return app.exec(); -} diff --git a/examples/androidextras/services/serviceremoteobjects/serviceremoteobjects.pro b/examples/androidextras/services/serviceremoteobjects/serviceremoteobjects.pro deleted file mode 100644 index 8b8b6e0..0000000 --- a/examples/androidextras/services/serviceremoteobjects/serviceremoteobjects.pro +++ /dev/null @@ -1,5 +0,0 @@ -TEMPLATE = subdirs - -SUBDIRS += \ - serviceremoteobjectsclient.pro \ - service.pro diff --git a/examples/androidextras/services/serviceremoteobjects/serviceremoteobjectsclient.pro b/examples/androidextras/services/serviceremoteobjects/serviceremoteobjectsclient.pro deleted file mode 100644 index 75f5a2f..0000000 --- a/examples/androidextras/services/serviceremoteobjects/serviceremoteobjectsclient.pro +++ /dev/null @@ -1,21 +0,0 @@ -QT += qml quick androidextras remoteobjects - -CONFIG += c++11 - -SOURCES += main.cpp - -include(../common/common.pri) - -REPC_REPLICA += ../common/qtandroidservice.rep - -# Additional import path used to resolve QML modules in Qt Creator's code model -QML_IMPORT_PATH = - -target.path = $$[QT_INSTALL_EXAMPLES]/androidextras/services/serviceremoteobjects -INSTALLS += target - -ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android - -DISTFILES += \ - android/AndroidManifest.xml \ - android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java diff --git a/examples/androidextras/services/serviceremoteobjectssamelib/android/AndroidManifest.xml b/examples/androidextras/services/serviceremoteobjectssamelib/android/AndroidManifest.xml deleted file mode 100644 index 190891f..0000000 --- a/examples/androidextras/services/serviceremoteobjectssamelib/android/AndroidManifest.xml +++ /dev/null @@ -1,110 +0,0 @@ -<?xml version="1.0"?> -<manifest package="org.qtproject.example.qtandroidservice" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto"> - <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/> - - <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. - Remove the comment if you do not require these default permissions. --> - <!-- %%INSERT_PERMISSIONS --> - - <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. - Remove the comment if you do not require these default features. --> - <!-- %%INSERT_FEATURES --> - - <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> - - <application android:hardwareAccelerated="true" android:name="org.qtproject.qt.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --" android:extractNativeLibs="true"> - <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> - </intent-filter> - - <!-- Application arguments --> - <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ --> - <!-- Application arguments --> - - <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Used to specify custom system library path to run with local system libs --> - <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> --> - <!-- Messages maps --> - <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/> - <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/> - <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/> - <meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/> - <!-- Messages maps --> - - <!-- Splash screen --> - <!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation, - then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and - use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you - are done populating your window with content. --> - <!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ --> - <!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ --> - <!-- Splash screen --> - - <!-- Background running --> - <!-- Warning: changing this value to true may cause unexpected crashes if the - application still try to draw after - "applicationStateChanged(Qt::ApplicationSuspended)" - signal is sent! --> - <meta-data android:name="android.app.background_running" android:value="false"/> - <!-- Background running --> - - <!-- auto screen scale factor --> - <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/> - <!-- auto screen scale factor --> - - <!-- extract android style --> - <!-- available android:values : - * default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons - * full - useful QWidget & Quick Controls 1 apps - * minimal - useful for Quick Controls 2 apps, it is much faster than "full" - * none - useful for apps that don't use any of the above Qt modules - --> - <meta-data android:name="android.app.extract_android_style" android:value="default"/> - <!-- extract android style --> - </activity> - - <service android:process=":qt_service" android:name=".QtAndroidService"> - - <!-- Application arguments --> - <meta-data android:name="android.app.arguments" android:value="-service"/> - <!-- Application arguments --> - - <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Run with local libs --> - - <!-- Background running --> - <meta-data android:name="android.app.background_running" android:value="true"/> - <!-- Background running --> - </service> - </application> -</manifest> diff --git a/examples/androidextras/services/serviceremoteobjectssamelib/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java b/examples/androidextras/services/serviceremoteobjectssamelib/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java deleted file mode 100644 index fd3bd82..0000000 --- a/examples/androidextras/services/serviceremoteobjectssamelib/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -package org.qtproject.example.qtandroidservice; - -import android.content.Context; -import android.content.Intent; -import org.qtproject.qt.android.bindings.QtService; -import android.util.Log; - -public class QtAndroidService extends QtService -{ - private static final String TAG = "QtAndroidService"; - - @Override - public void onCreate() { - Log.i(TAG, "Creating Service"); - super.onCreate(); - } - - @Override - public void onDestroy() { - Log.i(TAG, "Destroying Service"); - super.onDestroy(); - } -} diff --git a/examples/androidextras/services/serviceremoteobjectssamelib/doc/src/qtandroidextras-example-service-remoteobjects-samelib.qdoc b/examples/androidextras/services/serviceremoteobjectssamelib/doc/src/qtandroidextras-example-service-remoteobjects-samelib.qdoc deleted file mode 100644 index 91feaeb..0000000 --- a/examples/androidextras/services/serviceremoteobjectssamelib/doc/src/qtandroidextras-example-service-remoteobjects-samelib.qdoc +++ /dev/null @@ -1,189 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \target android service with remote object in same lib - \title Android Service with Qt Remote Objects - Same Lib File - \ingroup examples-qtandroidextras - \example services/serviceremoteobjectssamelib - \brief Demonstrates how to run an Android service in a separate process using - the same lib file, and how to communicate between the service process - and the main process using Qt Remote Objects. - - \image androidservices.png - - This example demonstrates how to create and run an Android service in - a separate process from the main application process, and then exchange data - between QML/C++ and the Java service using \l{Qt Remote Objects}. - - When clicking the \uicontrol {Send to Service} button, the name entered in the QML - view, Qt, in this case, is sent to the Android service. Then, the service - replies back with a message \c {Hello Qt} which is printed in the QML view. - - \include examples-run.qdocinc - - \section1 Create the Service - - To start a service in its own process, you can extend the \c QtService class - for your service. Extending \c QtService allows the service to load the - necessary Qt libraries used for Qt, like \l{Qt Remote Objects} libraries. - - Start by creating the Java service class. The following class extends \c QtService - and acts as your service entry point: - - \quotefromfile services/serviceremoteobjectssamelib/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java - \skipto package - \printuntil /^\}/ - - This class can have any logic you want using Java code. However, you don't need - any logic to communicate with Qt as that will be done using Qt Remote Objects. - - \section1 Manage the AndroidManifest.xml File - - To be able to use the service, it must be declared in the \c AndroidManifest.xml - file as follows: - - \quotefromfile services/serviceremoteobjectssamelib/android/AndroidManifest.xml - \skipto <service - \printuntil </service> - - The important parts of this service declaration are the \c arguments and \c lib_name - parts. Those will ensure that the service is run by executing the lib file - of the main activity with the argument \c -service: - - \quotefromfile services/serviceremoteobjectssamelib/android/AndroidManifest.xml - \skipto <service - \skipto <!-- Application arguments --> - \printuntil lib_name - - \section1 Handle the Application Start - - Since the same \c .so lib file is being used for the application and the - service, you need to handle both scenarios in the \c main() function. No - arguments are provided to start the main application, and therefore you must - add the following in the \c main() function: - - \quotefromfile services/serviceremoteobjectssamelib/main.cpp - \skipto (argc - \printline (argc - - Then calling the following function starts the service: - - \quotefromfile services/serviceremoteobjectssamelib/main.cpp - \skipto startService - \printuntil /^\}/ - - \section1 Handle the Service Start - - \l{QAndroidService} is used to create the service process. The main .so lib - file will be called with an argument to start the service if you add the - following code: - - \quotefromfile services/serviceremoteobjectssamelib/main.cpp - \skipto else if - \printline else if - - \section1 Communication with Qt Remote Objects - - To use \l{Qt Remote Objects}, define a \c .rep file: - - \quotefromfile services/common/qtandroidservice.rep - \skipto class - \printuntil /^\}/ - - Define the \c .rep source and replica file in your project \c .pro file as follows: - - \quotefromfile services/serviceremoteobjectssamelib/serviceremoteobjectssamelib.pro - \skipto REPC_SOURCE - \printuntil REPC_REPLICA - - Then define the class used by Qt Remote Objects, which has a - \c sendToService() slot and a \c messageFromService() signal: - - \quotefromfile services/common/qtandroidservice_ro.h - \skipto include - \printuntil /^\};/ - - Include the class in the previous snippet in \c main.cpp: - - \quotefromfile services/serviceremoteobjectssamelib/main.cpp - \skipto _replica.h - \printline _replica.h - - Now, inside the service handling part, create the \l{QRemoteObjectHost} - node: - - \quotefromfile services/serviceremoteobjectssamelib/main.cpp - \skipto QRemoteObjectHost - \printuntil enableRemoting - - Then, in the application handling part, create the client node and connect it - to the source node created in the service and connect it to the QML view: - - \quotefromfile services/serviceremoteobjectssamelib/main.cpp - \skipto QRemoteObjectNode - \printuntil sendToService - - Then, add a \l Connections element to watch for the incoming messages from - the service: - - \quotefromfile services/common/main.qml - \skipto Connections - \printuntil /^\ {4}\}/ - - And set the \c onClicked for the sending button to: - - \quotefromfile services/common/main.qml - \skipto onClicked - \printline onClicked - - \sa {Android Service with Qt Remote Objects}, {Android Services}, - {Qt for Android}, {Qt Android Extras} -*/ diff --git a/examples/androidextras/services/serviceremoteobjectssamelib/main.cpp b/examples/androidextras/services/serviceremoteobjectssamelib/main.cpp deleted file mode 100644 index 8f85cbd..0000000 --- a/examples/androidextras/services/serviceremoteobjectssamelib/main.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "rep_qtandroidservice_replica.h" -#include "qtandroidservice_ro.h" - -#include <QAndroidIntent> -#include <QtAndroid> -#include <QAndroidService> - -#include <QGuiApplication> -#include <QQmlApplicationEngine> -#include <QQmlContext> - -void startService() -{ - QAndroidIntent serviceIntent(QtAndroid::androidActivity().object(), - "org/qtproject/example/qtandroidservice/QtAndroidService"); - QAndroidJniObject result = QtAndroid::androidActivity().callObjectMethod( - "startService", - "(Landroid/content/Intent;)Landroid/content/ComponentName;", - serviceIntent.handle().object()); -} - -int main(int argc, char *argv[]) -{ - if (argc <= 1) { - QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QGuiApplication app(argc, argv); - QQmlApplicationEngine engine; - - startService(); - - QRemoteObjectNode repNode; - repNode.connectToNode(QUrl(QStringLiteral("local:replica"))); - QSharedPointer<QtAndroidServiceReplica> rep(repNode.acquire<QtAndroidServiceReplica>()); - engine.rootContext()->setContextProperty("qtAndroidService", rep.data()); - bool res = rep->waitForSource(); - Q_ASSERT(res); - rep->sendToService("Qt"); - - engine.load(QUrl(QLatin1String("qrc:/main.qml"))); - - return app.exec(); - - } else if (argc > 1 && strcmp(argv[1], "-service") == 0) { - qWarning() << "QtAndroidService starting from same .so"; - QAndroidService app(argc, argv); - - QRemoteObjectHost srcNode(QUrl(QStringLiteral("local:replica"))); - QtAndroidService qtAndroidService; - srcNode.enableRemoting(&qtAndroidService); - - return app.exec(); - - } else { - qWarning() << "Unrecognized command line argument"; - return -1; - } -} diff --git a/examples/androidextras/services/serviceremoteobjectssamelib/serviceremoteobjectssamelib.pro b/examples/androidextras/services/serviceremoteobjectssamelib/serviceremoteobjectssamelib.pro deleted file mode 100644 index 3975a19..0000000 --- a/examples/androidextras/services/serviceremoteobjectssamelib/serviceremoteobjectssamelib.pro +++ /dev/null @@ -1,23 +0,0 @@ -QT += qml quick androidextras remoteobjects - -CONFIG += c++11 - -SOURCES += main.cpp - -include(../common/common_ro.pri) -include(../common/common.pri) - -REPC_SOURCE += ../common/qtandroidservice.rep -REPC_REPLICA += ../common/qtandroidservice.rep - -# Additional import path used to resolve QML modules in Qt Creator's code model -QML_IMPORT_PATH = - -target.path = $$[QT_INSTALL_EXAMPLES]/androidextras/services/serviceremoteobjectssamelib -INSTALLS += target - -ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android - -DISTFILES += \ - android/AndroidManifest.xml \ - android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java diff --git a/examples/androidextras/services/services.pro b/examples/androidextras/services/services.pro deleted file mode 100644 index 0d567d6..0000000 --- a/examples/androidextras/services/services.pro +++ /dev/null @@ -1,13 +0,0 @@ -TEMPLATE = subdirs - -SUBDIRS += \ - servicesameprocess \ - servicebinder \ - servicebroadcast \ - servicebroadcastsamelib - -qtHaveModule(remoteobjects) { - SUBDIRS += \ - serviceremoteobjects \ - serviceremoteobjectssamelib -} diff --git a/examples/androidextras/services/servicesameprocess/android/AndroidManifest.xml b/examples/androidextras/services/servicesameprocess/android/AndroidManifest.xml deleted file mode 100644 index ed72c2d..0000000 --- a/examples/androidextras/services/servicesameprocess/android/AndroidManifest.xml +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0"?> -<manifest package="org.qtproject.example.qtandroidservice" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto"> - <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/> - - <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. - Remove the comment if you do not require these default permissions. --> - <!-- %%INSERT_PERMISSIONS --> - - <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. - Remove the comment if you do not require these default features. --> - <!-- %%INSERT_FEATURES --> - - <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> - - <application android:hardwareAccelerated="true" android:name="org.qtproject.qt.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --" android:extractNativeLibs="true"> - <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> - </intent-filter> - - <!-- Application arguments --> - <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ --> - <!-- Application arguments --> - - <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> - <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> - <meta-data android:name="android.app.repository" android:value="default"/> - <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> - <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> - <!-- Deploy Qt libs as part of package --> - <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> - - <!-- Run with local libs --> - <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> - <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> - <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/> - <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> - <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> - <!-- Used to specify custom system library path to run with local system libs --> - <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> --> - <!-- Messages maps --> - <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/> - <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/> - <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/> - <meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/> - <!-- Messages maps --> - - <!-- Splash screen --> - <!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation, - then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and - use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you - are done populating your window with content. --> - <!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / --> - <!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ --> - <!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ --> - <!-- Splash screen --> - - <!-- Background running --> - <!-- Warning: changing this value to true may cause unexpected crashes if the - application still try to draw after - "applicationStateChanged(Qt::ApplicationSuspended)" - signal is sent! --> - <meta-data android:name="android.app.background_running" android:value="false"/> - <!-- Background running --> - - <!-- auto screen scale factor --> - <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/> - <!-- auto screen scale factor --> - - <!-- extract android style --> - <!-- available android:values : - * default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons - * full - useful QWidget & Quick Controls 1 apps - * minimal - useful for Quick Controls 2 apps, it is much faster than "full" - * none - useful for apps that don't use any of the above Qt modules - --> - <meta-data android:name="android.app.extract_android_style" android:value="default"/> - <!-- extract android style --> - </activity> - - <service android:name=".QtAndroidService"> - <!-- Background running --> - <meta-data android:name="android.app.background_running" android:value="true"/> - <!-- Background running --> - </service> - </application> -</manifest> diff --git a/examples/androidextras/services/servicesameprocess/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java b/examples/androidextras/services/servicesameprocess/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java deleted file mode 100644 index 1a5f5e5..0000000 --- a/examples/androidextras/services/servicesameprocess/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -package org.qtproject.example.qtandroidservice; - -import android.content.Context; -import android.content.Intent; -import android.util.Log; -import android.app.Service; -import android.os.IBinder; - -public class QtAndroidService extends Service -{ - private static native void sendToQt(String message); - private static final String TAG = "QtAndroidService"; - - @Override - public void onCreate() { - super.onCreate(); - Log.i(TAG, "Creating Service"); - } - - @Override - public void onDestroy() { - super.onDestroy(); - Log.i(TAG, "Destroying Service"); - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - int ret = super.onStartCommand(intent, flags, startId); - String name = new String(intent.getByteArrayExtra("name")); - Log.i(TAG, "Service received name: " + name); - String message = "Hello " + name; - sendToQt(message); - Log.i(TAG, "Service sent back message: " + message); - - return ret; - } - - @Override - public IBinder onBind(Intent intent) { - return null; - } -} diff --git a/examples/androidextras/services/servicesameprocess/doc/src/qtandroidextras-example-service-same-process.qdoc b/examples/androidextras/services/servicesameprocess/doc/src/qtandroidextras-example-service-same-process.qdoc deleted file mode 100644 index 7aeef0a..0000000 --- a/examples/androidextras/services/servicesameprocess/doc/src/qtandroidextras-example-service-same-process.qdoc +++ /dev/null @@ -1,116 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \title Native Android Service in Same Process - \ingroup examples-qtandroidextras - \example services/servicesameprocess - \brief Demonstrates how to run an Android service in the main process, - and how to communicate between QML/C++ and a Java service. - - \image androidservices.png - - This example demonstrates how to create and run a simple Android service in - the same process as the main activity \c QtActivity, and then exchange data - between QML/C++ and the Java service. This service is a pure Java - implementation. - - When clicking the \uicontrol {Send to Service} button, the name entered in - the QML view, Qt, in this case, is sent to the Android service. Then, the service - replies back with a message \c {Hello Qt} which is printed in the QML view. - - \include examples-run.qdocinc - - \section1 Create the Service - - When running the app's process, you can extend either \c QtService or \c Service. - Extending \c QtService allows Qt to load all the necessary libraries to load - Qt components correctly and call native methods on Android. However, here - the service is running in the same process, so extending either class works. - - Start by creating the Java service class. This is a normal Android \c Service - that receives a name from QML and replies back with \c {Hello <name>}: - - \quotefromfile services/servicesameprocess/android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java - \skipto package - \printuntil /^\}/ - - In the overwritten method - \l{Android: Service onStartCommand}{onStartCommand()}, the service receives a - name from the calling intent, then calls the native method - \c {sendToQt(String message)}. For more information on managing native - calls in Qt, see \l{Calling QML/C++ Functions from Java Code}. - - \section1 Manage the AndroidManifest.xml File - - To use the service, it must be declared in the \c AndroidManifest.xml - file. When using pure Android Service in the main app process, use the following: - - \quotefromfile services/servicesameprocess/android/AndroidManifest.xml - \skipto <service - \printuntil </service> - - \section1 Start the Service - - Before starting the service, register the native methods, then call the - \l{Android: Service startService}{startService()} method, as follows: - - \quotefromfile services/servicesameprocess/qtandroidservice.cpp - \skipto sendToService - \printuntil /^\}/ - - This function is used to start the Service. If the service is already running, - it will only send the names without starting a new service instance. - - Then, you have to add the necessary \l Connections, as described in - \l{Qt JNI Messenger}{Qt JNI Messenger Example}. - - \sa {Android Services}, {Qt for Android}, {Qt Android Extras} -*/ diff --git a/examples/androidextras/services/servicesameprocess/main.cpp b/examples/androidextras/services/servicesameprocess/main.cpp deleted file mode 100644 index 1d06566..0000000 --- a/examples/androidextras/services/servicesameprocess/main.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qtandroidservice.h" - -#include <QGuiApplication> -#include <QQmlApplicationEngine> -#include <QQmlContext> - -int main(int argc, char *argv[]) -{ - QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QGuiApplication app(argc, argv); - QQmlApplicationEngine engine; - - QtAndroidService *qtAndroidService = new QtAndroidService(&app); - engine.rootContext()->setContextProperty(QLatin1String("qtAndroidService"), qtAndroidService); - - const QUrl url(http://code.qt.io/QStringLiteral(%22qrc:/main.qml")); - QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, - &app, [url](QObject *obj, const QUrl &objUrl) { - if (!obj && url == objUrl) - QCoreApplication::exit(-1); - }, Qt::QueuedConnection); - engine.load(url); - - qtAndroidService->sendToService("Qt"); - - return app.exec(); -} diff --git a/examples/androidextras/services/servicesameprocess/qtandroidservice.cpp b/examples/androidextras/services/servicesameprocess/qtandroidservice.cpp deleted file mode 100644 index 70db380..0000000 --- a/examples/androidextras/services/servicesameprocess/qtandroidservice.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qtandroidservice.h" - -#include <QAndroidJniEnvironment> -#include <QAndroidIntent> -#include <QtDebug> - -QtAndroidService *QtAndroidService::m_instance = nullptr; - -static void receivedFromAndroidService(JNIEnv *env, jobject /*thiz*/, jstring value) -{ - emit QtAndroidService::instance()->messageFromService(env->GetStringUTFChars(value, nullptr)); -} - -QtAndroidService::QtAndroidService(QObject *parent) : QObject(parent) -{ - m_instance = this; - - JNINativeMethod methods[] {{"sendToQt", "(Ljava/lang/String;)V", reinterpret_cast<void *>(receivedFromAndroidService)}}; - QAndroidJniObject javaClass("org/qtproject/example/qtandroidservice/QtAndroidService"); - - QAndroidJniEnvironment env; - jclass objectClass = env->GetObjectClass(javaClass.object<jobject>()); - env->RegisterNatives(objectClass, - methods, - sizeof(methods) / sizeof(methods[0])); - env->DeleteLocalRef(objectClass); -} - -void QtAndroidService::sendToService(const QString &name) -{ - QAndroidIntent serviceIntent(QtAndroid::androidActivity().object(), - "org/qtproject/example/qtandroidservice/QtAndroidService"); - serviceIntent.putExtra("name", name.toUtf8()); - QAndroidJniObject result = QtAndroid::androidActivity().callObjectMethod( - "startService", - "(Landroid/content/Intent;)Landroid/content/ComponentName;", - serviceIntent.handle().object()); -} diff --git a/examples/androidextras/services/servicesameprocess/qtandroidservice.h b/examples/androidextras/services/servicesameprocess/qtandroidservice.h deleted file mode 100644 index 2bed43c..0000000 --- a/examples/androidextras/services/servicesameprocess/qtandroidservice.h +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtAndroidExtras module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTANDROIDSERVICE_H -#define QTANDROIDSERVICE_H - -#include <QObject> -#include <QtAndroid> -#include <QAndroidIntent> - -class QtAndroidService : public QObject -{ - Q_OBJECT - -public: - QtAndroidService(QObject *parent = nullptr); - - static QtAndroidService *instance() { return m_instance; } - Q_INVOKABLE void sendToService(const QString &name); - -signals: - void messageFromService(const QString &message); - -private: - static QtAndroidService *m_instance; -}; - -#endif // QTANDROIDSERVICE_H diff --git a/examples/androidextras/services/servicesameprocess/servicesameprocess.pro b/examples/androidextras/services/servicesameprocess/servicesameprocess.pro deleted file mode 100644 index 643094f..0000000 --- a/examples/androidextras/services/servicesameprocess/servicesameprocess.pro +++ /dev/null @@ -1,24 +0,0 @@ -QT += qml quick androidextras - -CONFIG += c++11 - -HEADERS += \ - qtandroidservice.h - -SOURCES += \ - main.cpp \ - qtandroidservice.cpp - -include(../common/common.pri) - -# Additional import path used to resolve QML modules in Qt Creator's code model -QML_IMPORT_PATH = - -target.path = $$[QT_INSTALL_EXAMPLES]/androidextras/services/servicesameprocess -INSTALLS += target - -ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android - -DISTFILES += \ - android/src/org/qtproject/example/qtandroidservice/QtAndroidService.java \ - android/AndroidManifest.xml diff --git a/examples/examples.pro b/examples/examples.pro deleted file mode 100644 index 467ccc4..0000000 --- a/examples/examples.pro +++ /dev/null @@ -1,2 +0,0 @@ -TEMPLATE = subdirs -android:SUBDIRS += androidextras |