Fehler beheben und testen

Der Dialer ist mit einem integrierten Debugging- und Test-Framework ausgestattet, mit dem Sie die Funktionen der Dialer App validieren können, ohne dass Sie Geräte benötigen, die für Anrufe bereit sind. So sind weder Bluetooth noch verbundene Smartphones mit Mobilfunkdienst erforderlich. Dieses DTF (Dialer Testing Framework) vereinfacht diese Prozesse:

  • Die Einrichtung eines echten Geräts, um Ideen schnell zu validieren, nimmt in der Regel Zeit in Anspruch.
  • Für den Test von Funktionen für mehrere Anrufe sind mindestens drei Smartphones mit SIM-Karte erforderlich, von denen zwei nur zum Telefonieren verwendet werden.
  • Debuggen des Dialers und seiner Abhängigkeiten

Da die Funktionalität des Dialers von mehreren Technologiestacks abhängt, darunter Telekommunikation, Telefonie und Bluetooth-Freisprechprofil (HFP), können Fehler und Probleme, die in diesen Abhängigkeiten auftreten, zu Instabilitäten des Dialers führen. Mit dem DTF kann der Dialer unabhängig von diesen Abhängigkeiten ausgeführt werden.

Funktionen

Die DTF bietet folgende Funktionen:

  • Anruf-Placement Anrufe starten und empfangen, ohne dass ein für Anrufe geeignetes Gerät erforderlich ist, über das Terminal mit einer Android Debug Bridge (adb)-Broadcast.
  • Mock-Anrufe: Die Anruffunktion wird simuliert. Dazu gehören das Halten, Stummschalten, Zusammenführen und Trennen von Anrufen.

DTF verwenden

Hinweis : Der DTF ist nur unter Android 11 oder höher verfügbar.

So verwenden Sie die DTF:

  1. Erstelle und installiere die Buildvariante CarDialerAppForTesting so:
    cd %rRepoRoot%/packages/apps/Car/Dialer
    
    m CarDialerAppForTesting
    
    adb install %rRepoRoot%/out/target/product/%buildTarget%/system/priv-app/CarDialerAppForTesting/CarDialerAppForTesting.apk
    

    Daher ersetzt CarDialerAppForTesting die ursprüngliche Telefon App auf dem Testgerät.

    CarDialerAppForTesting funktioniert nicht auf echten Geräten. Wenn Sie mit einem echten Gerät testen möchten, müssen Sie die CarDialerApp.apk neu installieren.

Befehle

Die folgenden adb-Befehle funktionieren nur, nachdem die Telefon App zum ersten Mal gestartet wurde, und erfordern die Initialisierung des Broadcast-Empfängers. Nach dem Starten des Dialers muss ein gefälschtes Bluetooth-Gerät verbunden sein. Verwenden Sie dazu den Befehl „(Einrichtung) Gerät verbinden“.

(Einrichten) Gerät verbinden

Stellt eine gefälschte Bluetooth-Verbindung zum Telefon her und muss zuerst aufgerufen werden, um den Zugriff auf alle anrufbezogenen Befehle zu ermöglichen.

So verbinden Sie ein Gerät:

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

Hinweis : Die folgenden Befehle können erst verwendet werden, nachdem ein gefälschtes Bluetooth-Gerät verbunden wurde.

Ausgehende Anrufe starten

So starten Sie einen ausgehenden Anruf:

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

Eingehenden Anruf erhalten

So nehmen Sie einen Anruf entgegen:

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

Anruf beenden

So beenden Sie einen Anruf:

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

Aktuellen Anruf halten

So halten Sie den aktuellen Anruf:

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

Aktuellen Anruf fortsetzen

So beenden Sie die Warteschleife für den aktuellen Anruf:

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

Anrufe zusammenführen

Den primären und sekundären Anruf zu einer Telefonkonferenz zusammenführen. Dieser Befehl funktioniert nur, wenn sowohl der primäre als auch der sekundäre Aufruf vorhanden sind. Eine bestehende Telefonkonferenz wird als einzelne Entität betrachtet.

So führen Sie Anrufe zusammen:

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

Alle Anrufe löschen

So entfernen Sie alle Anrufe aus der Anrufliste:

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

Emulator-Build

Manchmal möchten Entwickler UI-Änderungen in einem Emulator testen. In solchen Fällen bietet CarDialerAppEmulatorBuild eine vereinfachte Einrichtung und eingeschränkte Funktionen im Vergleich zur leistungsfähigeren DTF.

Testdaten

Wenn der Dialer gestartet wird, wird die Bluetooth-Fehlerseite umgangen und der Hauptinhalt von TelecomActivity wird angezeigt. Kontakte und Anruflisten werden auf dem lokalen Gerät angezeigt. Entwickler können die Standard-App „Kontakte“ verwenden, um Testkontakte zu erstellen oder eine .vcf-Datei zu importieren.

Anruf-Mockup

Wenn Sie eingehende Anrufe simulieren möchten, verwenden Sie den Android-Emulator, um Telnet-Befehle zu senden. Weitere Informationen finden Sie unter Apps im Android-Emulator ausführen und Emulator-Konsolenbefehle senden.

telnet localhost 5554
gsm call xxx-xxx-xxxx

Wenn Sie in der Telefon App einen Anruf starten oder einen Anruf-Intent senden, wird ein ausgehender Anruf gestartet.

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