本稿は「Qt Android Activity View」の抄訳です。
Qt for Android Automotiveは、Qtの世界とAndroid Automotive環境を結びつける役割を果たします。自動車データへのアクセスにおいて優れた柔軟性を提供します。ニーズに応じて、高レベルな記述に基づいた自動コード生成ツールや、使いやすいQMLコンポーネントを使用することができます。
Qt for Android Automotiveには、Qt Android ActivityViewモジュールがバージョン6.3.0で追加されました。現在、Android 10と11をサポートしています。
UIに関しては、Qtのすべての利点を活用することができます。モダンなグラフィカルユーザーインターフェースを迅速かつ効率的に作成するために、QMLとQt Design Studioを使用することが自然な選択肢です。
ただし、既存のAndroidアプリケーションを直接使用したり、カスタマイズ後に使用する必要があることもよくあります。例えば、選択した埋め込みアプリケーションで構成された統合ホーム画面などです。新しいActivity Viewモジュールは、外部のAndroidアプリケーションをQtベースのアプリケーションに埋め込むためのコンポーネントを提供します。この機能は、Qt Design Studio のサポートを含め、他の視覚的な QML コンポーネントと同様に簡単に使用できます。
主な使用例は以下のように簡単です。anchorを使用してコンポーネントの位置を調整できます。また、外部アプリケーションの読み込み中にはビジーインジケータが表示されます。
import QtQuick
import QtQuick.Controls
import QtAndroidAutomotive.ActivityView
ApplicationWindow {
visible: true
BusyIndicator {
anchors.centerIn: parent
visible: activityView.status !== ActivityView.Started
}
ActivityView {
id: activityView
anchors.centerIn: parent
width: 600
height: 800
radius: 25
packageName: "com.google.earth"
}
}
もちろん、ActivityViewをレイアウトコンポーネントと一緒に使うこともできます。以下のコードは、RowLayoutを使用して配置された2つのアプリケーションを起動します。
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtAndroidAutomotive.ActivityView
ApplicationWindow {
visible: true
RowLayout {
anchors.fill: parent
anchors.margins: 25
spacing: 25
ActivityView {
Layout.fillWidth: true
Layout.fillHeight: true
radius: 25
packageName: "com.google.earth"
}
ActivityView {
Layout.fillWidth: true
Layout.fillHeight: true
radius: 25
packageName: "com.android.deskclock"
}
}
}
コンポーネントのサイズと位置を動的に操作することも可能です。モジュールに含まれるサンプルの1つでは、QMLで作成されたウィンドウ内に外部アプリケーションを表示しています。外部アプリケーションの位置やサイズを変更は重い処理です。そのため、このコンポーネントでは、これらの操作中に実際のアプリケーションの代わりに表示されるプレースホルダを定義することができます
QMLコンポーネントに加えて、Activity ViewモジュールはQMLに依存しない C++ API も提供しています。このAPIは同じ機能を提供します。
ただし、Activity Viewはシーングラフで管理される標準的なビジュアルQMLコンポーネントではありません。そのため、いくつかの制約があります。各Activity Viewコンポーネントは常にQMLシーンの上に描画されます。また、要素からのイベントを、例えばMouseAreaを使用して横取りすることはできません。
新しいモジュールの詳細については、ドキュメントをご参照ください。