Automotive 向けデバイス管理

デバイス管理を使用すると、Android Automotive OS(AAOS)を搭載した車両をリモートで管理できます。たとえば、車両の所有者はインフォテインメント ユニットをリモートで出荷時の設定にリセットできます。

Automotive では、2 種類のデバイス管理が提供されています。

  • 個人デバイス: 消費者が車両を所有する場合です。車両の所有者がリモートで自動車を管理します。たとえば、所有者は車両のモバイルアプリを使用して、インフォテインメント ユニットをリモートで出荷時の設定にリセットします。
  • 企業デバイス: 企業または組織が車両を所有する場合です。管理者がリモートで自動車を管理します。

個人デバイス

個人デバイスのシナリオでは、車両をリモートで管理する場合、運転状態を考慮する必要があります。たとえば、車両の所有者がリモートで出荷時の設定へのリセットをトリガーしたとき、別のドライバーが車両を運転している場合は、車両を出荷時の設定にリセットするべきではありません。

そのために、運転状態の制限と統合されたデバイス管理 API のセットが用意されています。これらの API は、適切な権限があれば、任意のシステムアプリ(システム パーティションにプリインストールされているアプリ)から呼び出すことができます。

個人デバイス管理 API

API 目的
CarDevicePolicyManager.createUser()

バックグラウンドでデバイスに新しいユーザーを作成する。

運転状態に対してどのように反応するか

運転状態にかかわらず、バックグラウンドで新しいユーザーが作成されます。

CarDevicePolicyManager.RemoveUser()

デバイスの既存のユーザーを削除する。

運転状態に対してどのように反応するか

処理対象のユーザーの状態とそれに応じた結果:

  • バックグラウンドの場合、オペレーションは続行されます。
  • フォアグラウンドの場合、自動車が駐車中またはアイドリング中であれば、オペレーションは続行されます。
  • フォアグラウンドの場合、自動車が走行中であれば、例外コードがスローされます。
DevicePolicyManager.lockNow()

デバイスの既存のユーザーをロックする。ユーザーが既存のロック画面認証情報(PIN やパターンなど)を保有している場合、ディスプレイはオンのままです。

運転状態に対してどのように反応するか

処理対象のユーザーの状態とそれに応じた結果:

  • バックグラウンドの場合、オペレーションは続行されます。
  • フォアグラウンドの場合、自動車が駐車中アイドリング中走行中のいずれかであれば、(運転状態にかかわらず)ユーザーがフォアグラウンドの場合はオペレーションが続行され、それ以外の場合は無視されます。lockNow() は、UX の周囲への注意の状態による制限は受けません。
DevicePolicyManager.resetPassword()

ユーザーが既存の認証情報を保有していない場合は、ロック画面認証情報を設定してデバイスの既存のユーザーをロックする。ディスプレイはオンのままです。

運転状態に対してどのように反応するか

処理対象のユーザーの状態とそれに応じた結果:

  • バックグラウンドの場合、オペレーションは続行されます。
  • フォアグラウンドの場合、自動車が駐車中またはアイドリング中であれば、オペレーションは続行されます。
  • フォアグラウンドの場合、自動車が走行中であれば、例外コードがスローされます。
DevicePolicyManager.wipeData()

デバイスに対して出荷時の設定へのリセットをトリガーする。

運転状態に対してどのように反応するか

運転状態(駐車中アイドリング中走行中)にかかわらず、オペレーションは続行されます。システムにより、出荷時の設定へのリセットが必要であることがドライバーに通知されます。

車両が駐車中の場合、ドライバーは通知を操作して、デバイスのリセットを直ちに行うか後で(次にエンジンを始動したときに)行うかを選択できます。

例:

出荷時の設定へのリセットの通知

図 1. 出荷時の設定へのリセットがトリガーされると、システムにより通知が送信される

車両は駐車中

図 2. 車両が駐車中の場合、ドライバーは通知を操作して、デバイスのリセットを直ちに行うか後で(次にエンジンを始動したときに)行うかを選択できる

ドライバーがリセットを選択

図 3. ドライバーが後でリセットすることを選択すると、次にエンジンを始動したときにデバイスが出荷時の設定にリセットされるというトースト メッセージが表示される

企業デバイス

Android 13 以降を搭載した Android Automotive OS デバイスでは、android.software.device_admin 機能のサポートを宣言して、企業デバイス管理 API を有効にできます(詳しくは、DevicePolicyManager をご覧ください)。これにより、組織は Device Policy Controller(DPC)アプリを使用して、ローカル デバイス ポリシーとデバイス上のシステムアプリを制御できます。

Automotive は仕事用プロファイルをサポートしていないので、サポートされる管理ソリューションは、組織が完全に管理を制御する会社所有デバイス向けのフルマネージド デバイス ソリューションのみとなります。

リモートで車両を管理する企業は、自動車の運転状態も考慮する必要があります。そのために、特定のリモート アクションも車両の運転状態と統合されています。たとえば、DevicePolicyManager.setFactoryResetProtectionPolicy()出荷時の設定へのリセットフローは、企業が管理する車両にも適用されます。

DevicePolicyManager のすべての API は、(車両が走行中の場合などに)例外をスローする可能性があります。一部の DevicePolicyManager API のリストを次に示します。詳しくは、デバイス管理の概要をご覧ください。

  • DevicePolicyManager.removeActiveAdmin()
  • DevicePolicyManager.setFactoryResetProtectionPolicy()
  • DevicePolicyManager.installCaCert()
  • DevicePolicyManager.uninstallCaCert()
  • DevicePolicyManager.installKeyPair()
  • DevicePolicyManager.removeKeyPair()

マルチユーザー向け企業デバイス管理

Automotive 向けデバイス管理は、マルチユーザー サポートと連携して機能します。つまり、同じ会社所有車両を複数のドライバーが使用する場合、各ドライバーが独自のユーザーを使用して、データ プライバシーを保持して他のドライバーに知られないように保護できます。

管理者は、Device Policy Controller をビルドするで説明している方法で Device Policy Controller(DPC)アプリを使用して、デバイス全体のポリシーまたはユーザー固有のポリシーを制御できます。

一般的に、Automotive ビルドはヘッドレス システム ユーザー モードを使用します。この場合、Device Policy Controller(DPC)は、システム ユーザーのデバイス所有者(DO)および他のすべてのユーザーのプロファイル所有者(PO)として設定されます。一部の API(requestBugreport() など)はすべてのユーザーが関連付けられている場合にのみ使用可能となるため、リモート管理者は PO ユーザーを関連付ける必要があります。さらに、リモート管理者は適切な DPC を選択してアクションを実行する必要があります。アクションがデバイスに関連付けられている場合(wipeData() で出荷時の設定にリセットする場合など)は、DO DPC を使用する必要があります。アクションがユーザーに関連付けられている場合(addUserRestriction() など)は、PO DPC を使用する必要があります。

DPC アプリでは、DO と PO の間の IPC が必要になります。仕事用アプリと個人用アプリを接続するで説明されている Connect Apps API の使用をおすすめします。

DPC アプリが複数のユーザーを管理する方法について詳しくは、関連付けられたユーザーをご覧ください。