Технические подробности

На следующей диаграмме показаны системные компоненты, взаимодействующие с номеронабирателем:

Компоненты, взаимодействующие с номеронабирателем

Рисунок 1. Компоненты, взаимодействующие с номеронабирателем

  • Системный интерфейс. Нижняя навигационная панель для размещения кнопки «Телефон», которая регистрирует intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.android.car.dialer;launchFlags=0x10000000;end намерения. Это запускает основное действие пользователя, TelecomActivity .

  • Средство запуска приложений. Управляет всем списком приложений. Номеронабиратель объявляет TelecomActivity с помощью android.intent.category.LAUNCHER . При выборе приложения для телефона из списка приложений средства запуска отображается TelecomActivity.

  • Домашний виджет. В справочнике AOSP нет виджета Home. OEM-производители могут захотеть добавить виджет «Домой» для номеронабирателя, чтобы отображать состояние текущего подключенного телефона (а также другую информацию).

  • Центр уведомлений

    • Уведомление Heads Up Notification (HUN) отображается для входящих вызовов. Когда номеронабиратель InCallServiceImpl получает входящий вызов, номеронабиратель отправляет сообщение HUN в центр уведомлений, в котором отображаются сведения о вызове, такие как номер телефона или контактная информация. Номеронабиратель также отображает две кнопки действий: «Ответить» и «Отклонить». Нажав кнопку «Ответ», вызов будет принят, а InCallServiceImpl активный вызов, чтобы отобразить пользовательский интерфейс номеронабирателя и отклонить HUN. При нажатии на HUN отображается полноэкранная страница InCall с кнопками «Ответить» и «Отклонить».

    • Появляется уведомление о непрочитанных пропущенных вызовах. При нажатии на уведомление отображается страница «Журнал вызовов» и помечаются пропущенные вызовы как прочитанные. При нажатии кнопки «Обратный вызов» выполняется вызов и отображается пользовательский интерфейс InCall номеронабирателя.

  • Ассистент. Пользователи могут попросить помощника сделать вызов, который может отображать пользовательский интерфейс Dialer InCall.

  • Карты Гугл. Звонок продавцу из Google Maps отправляет намерение DIAL с дополнительными телефонными номерами, которые открывают страницу панели набора номера для быстрого набора.

  • АвтоИнпутСервис. Отслеживает физические клавиши кнопок вызова и завершения вызова на рулевом колесе. Нажатие:

    • Кнопка вызова на рулевом колесе, когда нет входящего вызова, отправляет намерение НАБОР и отображает страницу панели набора номера.

    • Кнопка вызова на рулевом колесе при входящем вызове заставляет TelecomManager ответить на вызов.

    • Кнопка «Завершить вызов» на руле при поступлении входящего вызова TelecomManager завершает вызов.

  • Bluetooth

    • PBAPClient. Качает контакты с телефона и пишет в контакты провайдера. Для каждого подключенного телефона создается учетная запись с MAC-адресом Bluetooth устройства в качестве имени учетной записи и com.android.bluetooth.pbapsink ( @string/pbap_account_type определен в packages/apps/Bluetooth ) в качестве типа учетной записи. Контакты, записанные поставщику контактов, записываются с информацией об учетной записи и очищаются при отключении телефона. PBAPClient не взаимодействует напрямую с номеронабирателем, а вместо этого записывает контакты в поставщик контактов. Номеронабиратель считывает контакты из поставщика контактов.

    • HfpClientConnectionService . Управляет вызовом Bluetooth через HFP и сообщает о вызове телекоммуникационным службам.

  • Телеком. Платформа Android Telecom управляет аудио- и видеовызовами на устройстве Android. Поскольку номеронабиратель является телефонным приложением по умолчанию, он реализует API-интерфейсы InCallService , а InCallController привязывает реализацию InCallService набора номера для обработки вызовов. Дополнительные сведения см. в разделах Создание нового приложения для телефона и Становление приложением для телефона по умолчанию .

  • Системные настройки. Номеронабиратель отслеживает список устройств, подключенных к HFP, и отображает сообщение об ошибке, если ни один телефон не подключен к номеронабирателю через Bluetooth. В справочнике AOSP кнопка «Подключиться к Bluetooth» перенаправляет пользователей на страницу настроек Bluetooth системы для сопряжения нового устройства или подключения к сопряженному устройству.

  • Двигатель отвлечения внимания водителя. Этот системный сервис Android налагает ограничения UX в зависимости от состояния вождения автомобиля. Номеронабиратель должен выполнять все ограничения на отвлечение внимания от вождения UX. Для этого номеронабиратель должен прослушивать CarUXRestrictionManager и реализовывать все политики. Диалер должен:

    • Подключитесь к библиотеке автомобилей и получите экземпляр CarUXRestrictionManager .

    • Подпишитесь на обновления в списке CarUxRestrictions и реализуйте их в соответствии с документацией.

    • Особое значение для номеронабирателя:

      • Страница настроек оптимизирована для автомобиля. Пользователь не мог получить доступ к странице настроек номеронабирателя во время вождения. При нажатии на меню «Настройки» на панели действий отображается экран блокировки, чтобы пользователь не мог получить доступ к настройкам во время вождения. Если страница настроек уже открыта, появится экран блокировки, чтобы остановить взаимодействие с пользователем.

      • Доступ к системным настройкам во время вождения недоступен. На странице «Ошибка», если не подключено ни одно устройство Bluetooth, кнопка «Подключиться к Bluetooth» отображает страницу системных настроек Bluetooth. UXR этой кнопки полностью ограничен. Во время вождения нажатие на эту кнопку отображает сообщение об ошибке, информирующее пользователя о необходимости сначала припарковать автомобиль, а затем выполнить действие.

      • Пользователь не может запустить процесс добавления в избранное во время вождения. Кнопка «Добавить в избранное» отключена.

Потоки пользователей

Номеронабиратель Основной

Различные страницы для Dialer приведены ниже.

Главная страница номеронабирателя

Рисунок 2. Главная страница номеронабирателя

Обработка вызовов

Алгоритм обработки вызова представлен ниже:

Обработка вызовов

Рисунок 3. Обработка вызовов

Уведомления

Различные страницы уведомлений показаны ниже:

Уведомления

Рисунок 4. Уведомления

Статус вызова

Поток страницы InCall показан ниже:

Страница вызова

Рисунок 5. Страница InCall

Экраны поиска:

Поиск

Рисунок 6. Поиск

Настройки

Варианты настроек:

Настройки

Рисунок 7. Настройки