技術的な詳細

次の図は、Dialerと対話するシステムコンポーネントを示しています。

Dialerと相互作用するコンポーネント

図1.ダイヤラと相互作用するコンポーネント

  • システムUI。 intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.android.car.dialer;launchFlags=0x10000000;endします。これにより、ユーザーのメインアクティビティであるTelecomActivityが開始されます。

  • アプリランチャー。アプリリスト全体を管理します。ダイヤラは、 android.intent.category.LAUNCHERを使用してTelecomActivityを宣言します。ランチャーのアプリリストから電話アプリを選択すると、TelecomActivityが表示されます。

  • ホームウィジェット。 AOSPリファレンスには、ホームウィジェットはありません。 OEMは、現在接続されている電話の状態(およびその他の情報)を表示するために、Dialerのホームウィジェットを追加することを検討する場合があります。

  • 通知センター

    • 着信にはヘッズアップ通知(HUN)が表示されます。 Dialer InCallServiceImplが着信コールを受信すると、Dialerは通知センターにHUNを送信します。通知センターには、電話番号や連絡先情報などのコールの詳細が表示されます。ダイヤラは、応答ボタンと拒否ボタンの2つのアクションボタンも表示しません。 [応答]ボタンをタップすると、コールに応答し、 InCallServiceImplがアクティブなコールを処理して、ダイヤラをコールUIに表示し、HUNを閉じます。 HUNをクリックすると、フルスクリーンのInCallページが表示され、[応答]ボタンと[拒否]ボタンが表示されます。

    • 未読の不在着信の通知が表示されます。通知をクリックすると、[通話履歴]ページが表示され、不在着信に既読のマークが付けられます。 [コールバック]ボタンをタップすると、電話がかけられ、ダイヤラのInCallユーザーインターフェイスが表示されます。

  • アシスタント。ユーザーは、DialerInCallユーザーインターフェイスを表示する可能性のある電話をかけるようにアシスタントに依頼できます。

  • グーグルマップ。 Googleマップから販売者に電話をかけると、追加の電話番号を含むDIALインテントが送信され、Dialpadページが起動してすばやくダイヤルできるようになります。

  • CarInputService。ステアリングホイールの[通話]ボタンと[通話終了]ボタンの物理キーを監視します。を押す:

    • 着信がないときにハンドルからボタンを呼び出すと、DIALインテントが送信され、DialerのDialpadページが表示されます。

    • 着信があるときにハンドルからボタンを呼び出すと、TelecomManagerが呼び出しに応答します。

    • 着信があるときにハンドルから[通話終了]ボタンをクリックすると、TelecomManagerは通話を終了します。

  • ブルートゥース

    • PBAPClient。電話から連絡先をダウンロードし、連絡先プロバイダーに書き込みます。接続されている電話ごとに、アカウント名としてデバイスのBluetooth MACアドレス、アカウントタイプとしてcom.android.bluetooth.pbapsinkpackages/apps/Bluetoothで定義されている@string/pbap_account_type )を使用してアカウントが作成されます。連絡先プロバイダーに書き込まれる連絡先にはアカウント情報が書き込まれ、電話が切断されるとクリアされます。 PBAPClientはDialerと直接対話しませんが、代わりに連絡先プロバイダーに連絡先を書き込みます。ダイヤラは、連絡先プロバイダーから連絡先を読み取ります。

    • HfpClientConnectionService HFPを介してBluetooth通話を管理し、通話をテレコムサービスに報告します。

  • テレコム。 Android Telecomフレームワークは、Androidデバイスでの音声通話とビデオ通話を管理します。 Dialerはデフォルトの電話アプリであるため、 InCallService APIを実装し、 InCallControllerはDialerのInCallService実装をバインドして通話を処理します。詳細については、「交換用の電話アプリを作成する」および「デフォルトの電話アプリになる」を参照してください。

  • システム設定。ダイヤラはHFP接続デバイスリストを監視し、Bluetoothを介してダイヤラに電話が接続されていない場合はエラーメッセージを表示します。 AOSPリファレンスでは、[Bluetoothに接続]ボタンは、ユーザーをシステムの[Bluetooth設定]ページにリンクして、新しいデバイスをペアリングするか、ペアリングされたデバイスに接続します。

  • ドライバー注意散漫エンジン。このAndroidシステムサービスは、車の運転状態に基づいてUX制限を課します。ダイヤラは、すべてのUX駆動の注意散漫制限を実行する必要があります。そのためには、ダイヤラはCarUXRestrictionManagerをリッスンし、すべてのポリシーを実装する必要があります。ダイヤラは次のことを行う必要があります。

    • Carライブラリに接続し、 CarUXRestrictionManagerのインスタンスを取得します。

    • CarUxRestrictionsのリストにある更新をサブスクライブし、文書化されているように実装します。

    • ダイヤラにとって特に重要なもの:

      • 設定ページは車両に最適化されています。運転中、ユーザーはダイヤラ設定ページにアクセスできませんでした。アクションバーから[設定]メニューをタップすると、ブロック画面が表示され、ユーザーが運転中に[設定]にアクセスできないようにします。 [設定]ページがすでに表示されている場合は、ブロック画面がポップアップしてユーザーの操作を停止します。

      • 運転中はシステム設定にアクセスできません。 [エラー]ページで、Bluetoothデバイスが接続されていない場合、[Bluetoothに接続]ボタンをクリックすると、システムのBluetooth設定ページが表示されます。このボタンのUXRは完全に制限されています。運転中にこのボタンをクリックすると、エラーメッセージが表示され、最初に車を駐車してからアクションを実行するようにユーザーに通知します。

      • ユーザーは、運転中にお気に入りへの追加フローを開始することはできません。 [お気に入りの追加]ボタンが無効になっています。

ユーザーフロー

ダイヤラメイン

Dialerのさまざまなページを以下に示します。

メインダイヤラページ

図2.メインダイヤラページ

通話処理

コールハンドリングのプロセスフローを以下に示します。

通話処理

図3.通話処理

通知

さまざまな通知ページが以下に表示されます。

通知

図4.通知

InCallステータス

InCallページのフローを以下に示します。

InCallページ

5.InCallページ

検索表示は次のとおりです。

探す

図6.検索

設定

設定オプションは次のとおりです。

設定

図7.設定