Week 21

Progress summary for Week 21 (October 12-18, 2026) of the AGL Bluetooth Integration project.

This week, I integrated the HFP telephony and phone-contact flows into the Flutter AGL homescreen and fully tested the UI and Bluetooth call flows on AGL running on the Raspberry Pi 5.

Status#

  • Status: Completed
  • Timeline: October 12, 2026 to October 18, 2026
  • Target: AGL Raspberry Pi 5

The implementation supports phone connection status, recent calls, contacts, dialling, active-call controls, and phone messages through the native HFP and OBEX libraries.

AGL UI Validation#

The AGL launcher exposes the Phone and Messages applications alongside the other homescreen applications. The shared left-side controls provide volume, playback, and mute access, while the bottom navigation keeps Home, HVAC, Media, Settings, and Apps available throughout the flow.

AGL homescreen Applications view showing Phone, Messages, Bluetooth Telephony, and other application tiles with shared vehicle controls and bottom navigation.
Homescreen application launcher with the Phone, Messages, and Bluetooth Telephony entry points.

The Phone screen shows the connected Pixel 9a, a Ready Bluetooth status, and three modes: Recents, Contacts, and Dial. The Dial view provides the full keypad for entering a number and starting a call.

AGL Phone screen in Dial mode showing a connected Pixel 9a, Ready status, full numeric keypad, clear and delete controls, and call button.
Dial mode with number entry, clear/delete actions, and the call button.

The Recents view presents incoming and outgoing call history in separate cards. Each entry shows the contact or number, direction, timestamp, and a call-back button.

AGL Phone Recents view showing recent incoming and outgoing calls with contact names, numbers, timestamps, and call-back buttons.
Recent-call history with direction indicators and one-touch call-back actions.

The Contacts view loads the phone book alphabetically and includes contact search, refresh, messaging, and calling actions for each contact row.

AGL Phone Contacts view showing a searchable alphabetical contact list with message and call actions.
Phone-book contacts loaded from the connected device.

The active-call screen displays the number and call state in the center. Mute, keypad, hold, and end-call controls are presented as large touch targets for in-vehicle use.

AGL active-call screen showing a calling number and large Mute, Keypad, Hold, and End call controls.
Active HFP call screen with the primary call-control actions.

The in-call keypad can be opened without leaving the call. The center action changes to Hide keypad while Mute, Hold, and End call remain available.

AGL in-call keypad showing DTMF keys, Mute, Hide keypad, Hold, and End call controls.
DTMF keypad available during an active call.

The Messages detail view displays the message thread for a selected number, with the conversation history and a message composer at the bottom.

AGL Messages detail view showing an SMS conversation with a selected number, message history, and message composer.
SMS conversation detail with message history and compose field.

The Messages overview lists synchronized conversations and exposes refresh and compose actions from the header.

AGL Messages overview showing synchronized conversations from the connected phone with refresh and compose actions.
Messages overview synchronized from the connected phone.

Testing#

The HFP calling, SCO audio controls, phone-book loading, recent calls, DTMF keypad, and message screens were fully tested on AGL Raspberry Pi 5 hardware.

Next Week#

Next week, I will document the completed HFP and phone-contact integration and push the corresponding code changes for review.