デバッグとテスト

電話アプリにはデバッグとテストの統合フレームワークが装備されており、電話対応デバイスを用意しなくても電話アプリの機能を検証できます。つまり、Bluetooth やモバイル サービスに接続されたスマートフォンは必要ありません。電話アプリテスト フレームワーク(DTF)により、次のようなテストプロセスが簡略化されます。

  • 実際のデバイスのセットアップ。アイデアを迅速に検証したくても、通常はこの作業に時間がかかります。
  • マルチ通話機能のテスト。これには少なくとも 3 つの SIM カード対応スマートフォン(そのうち 2 つは発信にのみ使用)が必要です。
  • 電話アプリとその依存関係のデバッグ。

電話アプリの機能は、通信、電話、Bluetooth ハンズフリー プロファイル(HFP)といった複数のテクノロジー スタックに依存するため、これらの依存関係で発生するバグや問題が電話アプリの不安定性の原因になることがあります。DTF を使用すると、電話アプリはこれらの依存関係から独立して動作します。

機能

DTF には次の機能があります。

  • 電話の発信と着信: Android Debug Bridge(adb)ブロードキャストを使用して、ターミナル経由で電話対応デバイスを使用せずに電話の発信と着信を行います。
  • 通話のモッキング: 通話機能をモックします。これには、通話の保留、ミュート、統合、終了が含まれます。

DTF を使用する

注: DTF は Android 11 以降でのみ使用できます。

DTF を使用するには:

  1. 次のように CarDialerAppForTesting ビルド バリアントをビルドしてインストールします。
    cd %rRepoRoot%/packages/apps/Car/Dialer
    
    m CarDialerAppForTesting
    
    adb install %rRepoRoot%/out/target/product/%buildTarget%/system/priv-app/CarDialerAppForTesting/CarDialerAppForTesting.apk
    

    その結果、テストデバイス上の元の電話アプリが CarDialerAppForTesting に置き換えられます。

    CarDialerAppForTesting は実際のデバイスでは動作しません。実際のデバイスでテストするには、CarDialerApp.apk を再インストールします。

コマンド

次の adb コマンドは、電話アプリの初回起動後にのみ動作します。また、ブロードキャスト レシーバの初期化が必要です。電話アプリを起動したら、偽の Bluetooth デバイスを接続する必要があります。そのためには、以下のセットアップ(デバイスの接続)コマンドを使用します。

(セットアップ)デバイスの接続

電話アプリとの偽の Bluetooth 接続を確立します。すべての通話関連コマンドを利用できるようにするため、このコマンドを最初に呼び出す必要があります。

デバイスを接続するには:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "connect"

注: 以下に示す各コマンドは、偽の Bluetooth デバイスが接続された後で初めて使用できます。

電話を発信する

電話を発信するには:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "addCall" --es "id" "4085524874"

着信を受ける

着信を受けるには:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "rcvCall" --es "id" "4085524874"

通話を終了する

通話を終了するには:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "endCall" --es "id" "4085524874"

現在の通話を保留にする

現在の通話を保留にするには:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "holdCall"

現在の通話の保留を解除する

現在の通話の保留を解除するには:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "unholdCall"

通話を統合する

プライマリ通話とセカンダリ通話をグループ通話に統合します。このコマンドは、プライマリ通話とセカンダリ通話の両方が存在する場合にのみ機能します。既存のグループ通話は単一のエンティティと見なされます。

通話を統合するには:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "unholdCall"

すべての通話を消去する

通話リスト内のすべての通話を消去するには:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "clearAll"

エミュレータをビルドする

開発時に、エミュレータで UI の変更をテストしたい場合があります。このような場合は CarDialerAppEmulatorBuild を利用できます。強力な DTF と比べて簡素化された設定と限定された機能が提供されます。

テストデータ

電話アプリを起動すると、Bluetooth エラーページがバイパスされ、TelecomActivity のメイン コンテンツが表示されます。連絡先と通話履歴がローカル デバイスに表示されます。デベロッパーは、ストック連絡先アプリを使用して、テスト連絡先を作成したり、.vcf ファイルをインポートしたりできます。

通話のモッキング

着信をモックするには、Android Emulator を使用して Telnet コマンドを送信します。詳しくは、Android Emulator 上でアプリを実行すると、エミュレータのコンソール コマンドを送信するをご覧ください。

telnet localhost 5554
gsm call xxx-xxx-xxxx

電話アプリで電話をかけるか、通話インテントをブロードキャストすると、発信が開始されます。

adb shell am start -a android.intent.action.CALL tel:xxx-xxx-xxxx