Android Automotive OS를 사용하면 자동차가 주차되어 있는 동안 사용자가 자동차의 인포테인먼트 시스템에서 동영상 앱을 실행할 수 있습니다.
Android Automotive OS 에뮬레이터에서 기존 앱 테스트
Android Automotive OS용 앱 빌드를 시작하려면 먼저 Android Automotive OS 에뮬레이터에서 기존 모바일 앱을 테스트해야 합니다. 에뮬레이터를 설정하려면 자동차용 Android 앱 테스트의 단계를 따르세요. 그런 다음 에뮬레이터에서 앱 실행 안내에 따라 앱을 실행하면 됩니다.
앱을 실행할 때 다음과 같은 호환성 문제가 있는지 확인해야 합니다.
- 인포테인먼트 화면은 방향이 고정되어 있습니다. 자동차 앱 품질 가이드라인을 충족하려면 앱이 세로 모드 방향과 가로 모드 방향을 모두 지원해야 합니다.
- 다른 기기에서 사용할 수 있는 API도 Android Automotive OS에서는 사용하지 못할 수 있습니다. 예를 들어 일부 Google Play 서비스 API는 Android Automotive OS에서 사용할 수 없습니다. 이러한 문제를 해결하는 방법에 관한 자세한 내용은 기능 사용 중지 섹션을 참고하세요.
앱의 매니페스트 파일 구성
Android Automotive OS를 타겟팅하려면 앱에 특정 매니페스트 항목이 있어야 합니다. 이러한 항목을 사용하여 Android Automotive OS를 타겟팅하는 앱은 별도의 Automotive 출시 유형으로 Play 스토어에 제출됩니다. 자동차에서 사용하기에 안전한지 확인하기 위해 수동 검토 절차를 거칩니다. 자세한 내용은 자동차용 Android 앱 배포를 참고하세요.
Android Automotive OS 필수 기능
자동차의 Play 스토어에 표시되기 위해서는 Android Automotive OS용으로 빌드된 동영상 앱의 AndroidManifest.xml
파일 내에 <uses-feature>
와 <uses-library>
요소가 포함되어야 합니다.
<manifest ...>
...
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
...
<application ...>
...
<uses-library
android:name="android-automotive-video"
android:required="true"/>
...
</application>
</manifest>
자동차가 아닌 트랙에 제출된 앱은 자동차 관련 하드웨어에 종속될 수 없으므로 이전 코드 샘플에 표시된 <uses-feature>
요소를 선언할 수 없습니다. 따라서 자동차 기기와 자동차가 아닌 기기 모두에 동일한 앱을 출시하려면 적어도 두 가지 버전의 앱을 생성해야 합니다. 하나는 자동차 기기용이고 다른 하나는 휴대기기용입니다. 이처럼 서로 다른 버전을 만드는 방법을 자세히 알아보려면 다음 문서를 참고하세요.
앱의 두 버전은 동일한 패키지 이름을 공유할 수 있지만, Play 스토어 트랙에 각각 업로드되므로 다른 버전 코드를 사용해야 합니다.
또는 앱에서 별도의 버전을 사용하는 대신 모바일과 자동차 APK에 별도의 패키지 이름을 사용하거나 App Bundle을 사용하면 됩니다. 각 방법의 장단점을 알아보려면 미디어 앱 개발자 가이드의 패키지 이름을 참고하세요.
이전 코드 샘플에 표시된 요소 외에도 Android Automotive OS용으로 빌드된 앱은 루트 <manifest>
요소에 다음과 같이 <uses-feature>
요소를 포함해야 합니다.
<uses-feature
android:name="android.hardware.wifi"
android:required="false"/>
<uses-feature
android:name="android.hardware.screen.portrait"
android:required="false"/>
<uses-feature
android:name="android.hardware.screen.landscape"
android:required="false"/>
이러한 기능을 필수가 아닌 것으로 명시적으로 설정하면 앱이 Android Automotive OS 기기에서 사용할 수 있는 하드웨어 기능과 충돌하지 않습니다.
앱을 동영상 앱으로 표시
자동차 앱이 동영상을 지원한다고 나타내려면 automotive_app_desc.xml
이라는 XML 파일을 프로젝트의 res/xml/
디렉터리에 추가합니다.
이 파일에는 다음 콘텐츠가 포함되어야 합니다.
<automotiveApp>
<uses name="video"/>
</automotiveApp>
그런 다음, 매니페스트의 <application>
요소 내에 XML 파일을 참조하는 다음 <meta-data>
요소를 추가합니다.
<meta-data
android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
주의 분산 행동 최적화 활동을 포함하지 않음
동영상 앱은 주차 중에만 사용할 수 있습니다. 따라서 <activity>
요소에 다음의 <meta-data>
요소를 포함하면 안 됩니다.
<!-- NOT ALLOWED -->
<meta-data
android:name="distractionOptimized"
android:value="true"/>
이 메타데이터가 없으면 운전자의 주의가 분산되는 것을 줄이기 위해 자동차가 운전 모드로 전환될 때 OS에서 앱의 활동을 자동으로 차단합니다.
이 작업은 onPause
수명 주기 콜백으로 발생하며 이 기간에는 앱에서 동영상 및 오디오 재생을 모두 일시중지해야 합니다.
Android Automotive OS에서 앱 최적화
사용자에게 최상의 환경을 제공하려면 앱이 자동차에서 실행 중인지 여부에 따라 특정 기능을 사용 설정하거나 중지해야 할 수 있습니다.
기능 사용 중지
기존 모바일 앱을 Android Automotive OS에서 사용할 수 있도록 만들고 있다면 일부 기능은 관련이 없거나 사용할 수 없을 수도 있습니다. 예를 들어 자동차는 일반적으로 카메라 액세스를 제공하지 않습니다. 또한 Android Automotive OS에서는 Google Play 서비스 중 일부만 사용할 수 있습니다. 자세한 내용은 자동차용 Google Play 서비스를 참고하세요.
FEATURE_AUTOMOTIVE
기능을 확인하여 Android Automotive OS에서 앱이 실행되는지 감지하려면 다음 예에서 보는 바와 같이 PackageManager.hasSystemFeature
API를 사용하면 됩니다.
Kotlin
val packageManager: PackageManager = ... // Get a PackageManager from a Context val isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
Java
PackageManager packageManager = ... // Get a PackageManager from a Context boolean isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
또는 앱에 Android Auto 구성요소도 있다면 자동차용 Android 앱 라이브러리의 CarConnection API를 사용하여 앱이 Android Automotive OS나 Android Auto에서 실행 중인지 또는 자동차에 전혀 연결되어 있지 않은지 확인할 수 있습니다.
PIP 모드의 경우 설정된 권장사항에 따라 기능을 사용할 수 있는지 확인하고 적절하게 대응합니다.
오프라인 시나리오 처리
자동차의 인터넷 연결이 증가하고 있지만, 앱은 다음과 같이 인터넷 연결이 없는 경우에도 실행을 처리할 수 있습니다.
- 사용자는 자동차 제조업체에서 구독 패키지의 일부로 제공하는 모바일 데이터를 수신 해제할 수 있습니다.
- 특정 지역에서는 모바일 데이터에 대한 액세스가 제한될 수 있습니다.
- Wi-Fi 무선 기능이 있는 자동차가 Wi-Fi 범위를 벗어났거나 OEM에서 셀룰러 네트워크를 위해 Wi-Fi를 사용 중지할 수도 있습니다.
인터넷 액세스에 의존하는 기능의 성능을 단계적으로 저하하여 앱에서 이러한 시나리오를 처리할 수 있도록 준비해야 합니다(예: 오프라인 콘텐츠 제공). 자세한 내용은 네트워킹 최적화를 위한 권장사항을 참고하세요.
대체 리소스 사용
자동차에 맞게 앱을 조정하려면 Android Automotive OS 차량에서 실행할 때 대체 리소스를 제공하는 car
리소스 한정자를 사용하면 됩니다. 예를 들어 크기 리소스를 사용하여 패딩 값을 저장한다면 car
리소스 세트에 더 큰 값을 사용하여 터치 영역을 더 크게 만들 수 있습니다.
Android Automotive OS에서 동영상 앱 테스트
일반적으로 자동차용 Android 앱 테스트에서 제공하는 안내를 따릅니다. Android 스튜디오를 통해 제공되는 SDK 30 및 32 에뮬레이터만 android-automotive-video
라이브러리가 포함되어 있으므로 앱의 Automotive OS 빌드를 테스트하려면 이러한 에뮬레이터를 사용해야 합니다. 하위 SDK 에뮬레이터에는 라이브러리가 없으므로 라이브러리가 필요한 앱의 adb
설치가 실패합니다. 이 라이브러리는 OS 수준이 낮은 프로덕션 차량에 포함될 수 있습니다.
자주 묻는 질문(FAQ)
Widevine DRM이 지원되나요?
예, Android Automotive OS에서는 Widevine DRM L3이 지원됩니다.