Qtブログ(日本語)

Qt Android Activity View

作成者: Qt Group 日本オフィス|Jun 30, 2022 2:08:00 PM

本稿は「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を使用して横取りすることはできません。

新しいモジュールの詳細については、ドキュメントをご参照ください。