Android Automotive OS의 알림

알림은 사용하고 있지 않은 앱의 이벤트에 관한 짧고 시기적절한 정보를 운전자에게 제공합니다. 알림은 알림 센터에 표시될 수도 있고 화면에 헤드업 알림으로 표시될 수도 있습니다. Android Automotive OS에 사용할 알림을 만드는 데는 다른 기기에 사용하는 것과 같은 NotificationBuilder API를 사용합니다. 그러나 운전자의 안전을 보장하고 방해 요소를 최소화하기 위해 일부 API 메서드와 클래스는 제한되거나 다르게 동작합니다.

자동차에서 알림의 차이점

방해 요소가 없는 안전한 운전 환경을 만들기 위해 Android Automotive OS의 알림은 다음과 같은 방식으로 다른 기기의 알림과 다릅니다.

  • 간소화된 사용자 상호작용
  • 운전 상태에 기반한 UX 제한

간소화된 사용자 상호작용

운전자가 도로에 집중할 수 있도록 자동차 알림에는 다음 기능이 포함된 간소화된 사용자 상호작용 모델이 있습니다.

복잡한 컨트롤 없음
알림에서는 탭하여 알림 확장, 알림을 길게 눌러 추가 옵션 보기, 스와이프 길이 동작에 기반한 컨트롤 사용과 같은 복잡한 컨트롤을 허용하지 않습니다.
알림음
알림은 헤드업 알림을 트리거할 때만 소리를 재생합니다.
메시지 알림의 자동 재생 및 음소거 버튼

Android Automotive OS에서는 재생음소거 버튼을 모든 자동차 호환 메시지 알림에 자동으로 추가합니다.

  • 재생: Google 어시스턴트와 같은 사용자의 기본 디지털 어시스턴트 또는 차량의 기본 텍스트 음성 변환 시스템을 사용하여 운전자에게 알림을 읽습니다.
  • 음소거: 남은 운전 시간 동안 대화에서 앞으로 있을 메시지에 헤드업 알림이 표시되지 않도록 합니다. 음소거된 대화의 메시지 알림은 여전히 알림 센터에 표시되며 운전자는 알림 센터에서 대화를 음소거 해제할 수도 있습니다.

간소화된 알림 표시 옵션

RemoteViews 및 맞춤 콘텐츠 뷰는 지원되지 않습니다. 다음과 같은 알림 스타일도 지원되지 않습니다.

  • BigPictureStyle
  • BigTextStyle
  • InboxStyle

앱에서 이와 같은 알림 스타일 중 하나를 사용하여 Android Automotive OS에 알림을 전송하면 요약 텍스트만 표시됩니다.

간소화된 알림 채널 관리

Automotive 기기에서 리치 관리 작업의 보급률을 줄이기 위해 Android Automotive OS는 알림 채널과 관련 UI 어포던스를 지원하지 않습니다.

운전 상태에 기반한 UX 제한

Android Automotive OS에는 UX 제한 엔진이 포함되어 있습니다. 자동차 제조업체는 이 엔진을 사용하여 자동차의 운전 상태에 기반해 다음과 같은 방식으로 알림을 제한할 수 있습니다.

  • 특정 문자 길이에서 알림 문자열 자르기
  • CATEGORY_MESSAGE 알림의 메시지 요약 숨기기
  • 알림 센터에서 표시할 수 있는 알림 수 제한

지원되는 리소스 유형

기본적으로 Android Automotive OS에서는 다른 기기에서 알림에 사용될 수 있는 제한된 일부 리소스 유형을 지원합니다. 다음과 같은 리소스 유형이 지원됩니다.

  • 드로어블
  • 아이콘
  • 이미지

메시지 알림 호환성 요구사항

일관성 있고 방해 요소가 최소화된 사용자 환경을 제공하려면 메시지 알림에서 Android Automotive OS에 관한 특별한 요구사항을 충족해야 합니다.

메시지 알림이 다음 요구사항을 충족하면 자동차 호환 상태입니다.

  • CATEGORY_MESSAGE 카테고리에 속합니다.
  • Notification.MessagingStyle 스타일을 사용합니다.
  • 읽지 않은 메시지만 포함됩니다.
  • 다음 요구사항을 충족하는 읽음으로 표시 Action가 있습니다.

  • 알림에 응답 Action이 있는 경우 Action이 다음 요구사항을 충족합니다.

    • 시맨틱 작업이 Action.SEMANTIC_ACTION_REPLY로 설정됩니다.
    • Action는 실행 시 사용자 인터페이스를 표시하지 않음을 나타냅니다.
    • Action에는 단일 RemoteInput가 포함됩니다.

알림 센터

헤드업 알림으로 트리거된 알림을 비롯하여 거의 모든 알림이 알림 센터에 표시됩니다. 알림은 운전 중에 알림 센터에 유지됩니다.

운전자는 알림 센터에서 알림과 상호작용할 수 있습니다. 자동차 제조업체에 따라 운전자는 다음 중 하나 또는 두 가지 방식으로 알림 센터에 액세스합니다.

  • 다른 기기의 알림 창과 비슷하게 화면 상단에서 아래로 스와이프합니다.
  • 시스템 인터페이스의 버튼 탭하기

그룹화된 알림

관련 알림은 다른 기기의 알림 창과 같이 알림 센터에서 자동으로 그룹화됩니다. 하지만 운전자가 알림 센터에서 그룹 요약을 탭하면 PendingIntent를 실행하는 것이 아니라 그룹이 확장되고 모든 알림을 표시합니다.

알림 센터에 표시되지 않는 알림

다음 알림은 알림 센터에 표시되지 않습니다.

  • Media playback 알림 진행 중인 미디어 재생에 관한 정보는 Android Automotive OS에서 수집되어 사용자 인터페이스의 전용 위치에 표시됩니다. 알림이 미디어 재생으로 인식되려면 null이 아닌 토큰으로 setMediaSession를 호출해야 합니다.
  • CATEGORY_NAVIGATION의 세부 경로 안내 내비게이션 알림
  • 시스템 권한 앱과 중요도 레벨이 IMPORTANCE_DEFAULT보다 낮은 플랫폼 키로 서명된 앱의 포그라운드 서비스 알림

헤드업 알림

헤드업 알림은 화면 상단에 알림 카드로 표시됩니다. 헤드업 알림은 운전자의 주의를 끌기 때문에 정보가 운전에 중요하고 시간에 민감하며 실행 가능할 때만 헤드업 알림을 트리거합니다. 특정 카테고리의 알림만 헤드업 알림을 트리거할 수 있습니다.

자동차 제조업체는 알림 센터가 열려 있는 동안 헤드업 알림을 표시할지 결정할 수 있습니다.

앱에서 헤드업 알림을 트리거하는 방법

앱에는 시스템 권한이 있는지에 따라 헤드업 알림을 트리거하기 위한 요구사항이 다릅니다.

시스템 권한 앱 및 플랫폼 키로 서명된 앱
앱에서 알림 채널 중요도를 IMPORTANCE_HIGH 이상으로 설정하여 헤드업 알림을 트리거할 수 있습니다.
다른 모든 앱

앱은 알림 채널 중요도를 IMPORTANCE_HIGH 이상으로 설정하고 알림이 다음 카테고리 중 하나에 속하도록 하여 헤드업 알림을 트리거할 수 있습니다.

헤드업 알림의 수명 주기

앱에서 헤드업 알림을 트리거하면 알림이 자동차 화면에 즉시 표시됩니다. 운전자가 조치를 취하지 않으면 다음과 같은 경우를 제외하고 8초 후에 헤드업 알림이 자동으로 닫힙니다.

  • 특정 수신 전화의 헤드업 알림은 닫을 수 없으며 운전자가 전화를 수락하거나 통화가 종료될 때까지 헤드업 알림이 유지됩니다. 수신 전화의 헤드업 알림이 닫히지 않을 수 있는 자격을 얻으려면 알림이 다음 요구사항을 충족해야 합니다.

  • 헤드업 알림은 앱에서 8초 이내에 알림을 업데이트하면 유지됩니다.

헤드업 알림이 닫히면 해당 알림은 CATEGORY_NAVIGATION 알림이 아닌 한 알림 센터에 나열됩니다.

자동차의 알림 API 변경 및 제한사항

이 섹션에는 알림 API가 Android Automotive OS에서 다르게 동작하거나 알림 API에 제한사항이 있는 각 클래스의 차이점이 요약되어 있습니다.

Notification.Builder

표 1과 2에서는 Notification.Builder 클래스의 API 변경사항 및 제한사항을 설명합니다.

표 1. Notification.Builder의 공개 메서드 변경사항

공개 메서드 효과 설명

addAction()

조건부 무작동 Notification.MessagingStyle 알림은 호환성 요구사항에 지정된 작업을 추가해야 합니다. 추가되는 작업은 알림 버튼으로 렌더링되지 않습니다.

createBigContentView()

createContentView()

createHeadsUpContentView()

setContent()

setCustomBigContentView()

setCustomContentView()

setCustomHeadsUpContentView()

무작동 RemoteViews 및 맞춤 콘텐츠 뷰는 지원되지 않습니다.

setBadgeIconType()

setNumber()

무작동 알림 배지는 지원되지 않습니다.

setChronometerCountDown()

setUsesChronometer()

무작동 카운트다운 타이머는 지원되지 않습니다.
setColorized() 제약 조건 변경

플랫폼 서명 앱: 구성 가능하며 기본적으로 허용됩니다.

시스템 권한 앱: 플랫폼에서 구성되고 기본적으로 허용되지 않습니다.

기타 모든 앱: 플랫폼에서 구성되고 기본적으로 허용되지 않습니다.

setFullScreenIntent() 동작 변경 인텐트를 자동 실행하지 않습니다.
setLargeIcon() 동작 변경 큰 아이콘은 알림의 오른쪽에 표시됩니다.
setLights() 무작동 Android Automotive OS 기기에는 LED 표시등이 없습니다.
setOngoing() 동작 변경

알림이 헤드업 알림도 트리거하는 경우 동작이 다릅니다.

setOngoing()는 헤드업 알림이 수신 전화용인 경우에만 헤드업 알림을 닫을 수 없게 합니다. 수신 전화에 대해 닫을 수 없는 헤드업 알림 자격을 얻으려면 알림이 setPublicVersion()을 충족해야 합니다.

setVisibility()

무작동 비공개 모드는 지원되지 않습니다.
setSettingsText() 무작동 알림에서는 앱 설정과 연결되는 어포던스를 지원하지 않습니다. 운전자는 대신 앱을 통해 앱 설정에 액세스합니다.
setTicker() 무작동 티커 텍스트는 지원되지 않습니다.

표 2. Notification.Builder의 중첩된 클래스 변경사항

중첩된 클래스 효과 설명

Notification.BigPictureStyle

Notification.BigTextStyle

Notification.InboxStyle

사용되지 않음 요약 텍스트만 표시됩니다. 이러한 스타일에 관한 상세 알림은 지원되지 않습니다.
Notification.BubbleMetadata 사용되지 않음 버블은 지원되지 않습니다.
Notification.MediaStyle 숨김 이 스타일의 알림은 숨겨집니다. Android Automotive OS에서 미디어 알림 및 재생을 위한 사용자 인터페이스 상호작용을 관리합니다.
Notification.MessagingStyle 동작 변경

이 스타일의 알림에는 다음과 같은 차이점이 있습니다.

Notification.CarExtender

Notification.WearableExtender

사용되지 않음 익스텐더는 지원되지 않습니다.

Notification.Action.Builder

표 3에서는 Notification.Action.Builder 클래스의 API 변경사항 및 제한사항을 설명합니다.

표 3. Notification.Action.Builder의 공개 메서드 변경사항

공개 메서드 효과 설명
공개 생성자 동작 변경 공개 생성자에서 지정된 아이콘은 무시됩니다.
addRemoteInput 동작 변경 운전자 주의 분산 행동을 최소화하기 위해 Google 어시스턴트와 같은 디지털 어시스턴트가 사용자를 위해 메시지에 대한 응답을 삽입합니다. 사용자가 메시지를 입력할 수 없습니다.
setAllowGeneratedReplies 무작동 스마트 답장은 지원되지 않습니다.