詳細な技術情報

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

Dialer と対話するコンポーネント

図 1. Dialer と対話するコンポーネント

  • システムUI。電話ボタンをホストする下部ナビゲーション ファセット。 intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.android.car.dialer;launchFlags=0x10000000;end意図。これにより、ユーザーのメイン アクティビティであるTelecomActivityが開始されます。

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

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

  • 通知センター

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

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

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

  • グーグルマップ。 Google マップから販売者に電話すると、追加の電話番号を含む DIAL インテントが送信され、クイック ダイヤル用の Dialpad ページが開始されます。

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

    • 着信がないときにステアリング ホイールの通話ボタンを押すと、DIAL インテントが送信され、ダイヤラーのダイヤルパッド ページが表示されます。

    • 着信時にステアリングホイールの通話ボタンを押すと、TelecomManager が通話に応答します。

    • 着信中にステアリングホイールの「通話終了」ボタンを押すと、TelecomManager が通話を終了します。

  • ブルートゥース

    • PBAPCクライアント。電話機から連絡先をダウンロードし、連絡先プロバイダーに書き込みます。接続されている電話機ごとに、デバイスの Bluetooth MAC アドレスをアカウント名として、 com.android.bluetooth.pbapsink ( packages/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のリストで更新を購読し、文書に従って実装します。

    • Dialer にとって特に重要なことは次のとおりです。

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

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

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

ユーザーフロー

ダイヤラメイン

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

メインダイヤラーページ

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

通話処理

通話処理のプロセス フローを以下に示します。

通話処理

図 3.通話処理

通知

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

通知

図 4.通知

通話中ステータス

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

通話中ページ

図 5. InCall ページ

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

検索

図 6.検索

設定

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

設定

図 7.設定