QAndroidApplication Struct
struct QNativeInterface::QAndroidApplicationAndroidのコア・アプリケーションのネイティブ・インターフェース。詳細...
Header: | #include <QCoreApplication> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Since: | Qt 6.2 |
- 継承メンバを含む全メンバ一覧
- QAndroidApplicationは、ネイティブインターフェースの一部です。
静的パブリックメンバー
(since 6.2) QJniObject | context() |
(since 6.2) void | hideSplashScreen(int duration = 0) |
(since 6.2) bool | isActivityContext() |
(since 6.2) QFuture<QVariant> | runOnAndroidMainThread(const std::function<QVariant ()> &runnable, const QDeadlineTimer timeout = QDeadlineTimer::Forever) |
(since 6.2) int | sdkVersion() |
メンバー関数ドキュメント
[static, since 6.2]
QJniObject QAndroidApplication::context()
AndroidコンテキストをQJniObject
。 直近に開始したアクティビティオブジェクトが有効な場合、コンテキストはActivity
。そうでない場合、コンテキストはService
です。
この関数は Qt 6.2 で導入されました。
[static, since 6.2]
void QAndroidApplication::hideSplashScreen(int duration = 0)
与えられたduration のフェード効果を使用して、スプラッシュ画面を隠します。duration が提供されない場合(デフォルトは 0)、スプラッシュスクリーンはアプリの開始直後に非表示になります。
この関数は Qt 6.2 で導入されました。
[static, since 6.2]
bool QAndroidApplication::isActivityContext()
QAndroidApplication::context() がActivity
コンテキストを提供する場合、true
を返します。
この関数は Qt 6.2 で導入されました。
[static, since 6.2]
QFuture<QVariant> QAndroidApplication::runOnAndroidMainThread(const std::function<QVariant ()> &runnable, const QDeadlineTimer timeout = QDeadlineTimer::Forever)
Android スレッドに関数runnable をポストします。この関数はキューに入れられ、Android UIスレッドで実行されます。呼び出しがAndroid UIスレッドで行われた場合、runnable 、直ちに実行されます。Androidアプリが一時停止しているか、メイン・アクティビティがNULLの場合、runnable
、Androidメイン・スレッドのキューに追加されます。
この呼び出しは、QFuture<QVariant>を返すので、同期呼び出しと非同期呼び出しの両方が可能で、どんな戻り値の型も扱える。ただし、QFuture::result ()から結果を返すには、QVariant::value ()を使用する必要がある。
runnable の実行がtimeout の期間よりも長い場合、QFuture::waitForFinished ()とQFuture::result ()のブロッキング呼び出しは、timeout が経過した時点で終了する。ただし、runnable がすでに実行を開始している場合は、キャンセルされない。
以下の例では、戻り値を期待する非同期呼び出しの実行方法を示す:
auto task = QNativeInterface::QAndroidApplication::runOnAndroidMainThread([=]() { QJniObject surfaceView; if (!surfaceView.isValid()) qDebug() << "SurfaceView object is not valid yet"; surfaceView = QJniObject("android/view/SurfaceView", "(Landroid/content/Context;)V", QNativeInterface::QAndroidApplication::context()); return QVariant::fromValue(surfaceView); }).then([](QFuture<QVariant> future) { auto surfaceView = future.result().value<QJniObject>(); if (surfaceView.isValid()) qDebug() << "Retrieved SurfaceView object is valid"; });
次の例は、戻り値の型がvoidの同期呼び出しの実行方法を示している:
QNativeInterface::QAndroidApplication::runOnAndroidMainThread([]() { QJniObject activity = QNativeInterface::QAndroidApplication::context(); // Hide system ui elements or go full screen activity.callObjectMethod("getWindow", "()Landroid/view/Window;") .callObjectMethod("getDecorView", "()Landroid/view/View;") .callMethod<void>("setSystemUiVisibility", "(I)V", 0xffffffff); }).waitForFinished();
注意: Androidのメインスレッドで行う操作の種類には注意してください。長い操作はアプリのUIレンダリングや入力処理をブロックする可能性があります。関数の実行時間が長くなることが予想される場合は、runnable でQDeadlineTimer を使用して実行を管理し、UIスレッドをブロックしないようにするのもよいでしょう。通常、5秒以上の操作はアプリのUIをブロックする可能性があります。詳しくは、Keeping your app responsiveを参照してください。
この関数はQt 6.2で導入されました。
[static, since 6.2]
int QAndroidApplication::sdkVersion()
Android SDKのバージョンを返します。これは API レベルとしても知られています。
この関数は Qt 6.2 で導入されました。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。