자동차 앱 API 수준 3부터 자동차 앱 라이브러리 API를 사용하여 차량 속성 및 센서에 액세스할 수 있습니다.
요구사항
Android Auto에서 API를 사용하려면 먼저 Android Auto 모듈의 build.gradle 파일에 androidx.car.app:app-projected 종속 항목을 추가합니다. Android Automotive OS의 경우 Android Automotive OS 모듈의 build.gradle 파일에 androidx.car.app:app-automotive 종속 항목을 추가합니다.
또한 AndroidManifest.xml 파일에서 사용하려는 자동차 데이터를 요청하는 데 필요한 관련 권한을 선언해야 합니다. 이러한 권한은 사용자가 개발자에게 부여해야 합니다. 플랫폼에 종속된 흐름을 만들지 않아도 Android Auto와 Android Automotive OS에서 동일한 코드를 사용할 수 있습니다. 하지만 필요한 권한은 다릅니다.
CarInfo
이 표에서는 CarInfo API에 제공된 속성과 이를 사용하기 위해 요청해야 하는 권한을 설명합니다.
| 메서드 | 속성 | 권한: Android Auto |
권한: AAOS |
자동차 앱 API |
|---|---|---|---|---|
fetchModel |
제조업체, 모델, 연도 | android.car.permission.CAR_INFO |
3 | |
fetchEnergyProfile |
EV 커넥터 유형, 연료 유형 | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_INFO |
3 |
fetchExteriorDimensions
API 30 이상을 실행하는 일부 AAOS 차량에서만 데이터를 사용할 수 있습니다. |
외부 크기 | 해당 사항 없음 | android.car.permission.CAR_INFO |
7 |
| 통행료 카드 상태, 통행료 카드 유형 | 3 | |||
| 배터리 잔량, 연료 잔량, 연료 잔량 부족, 남은 주행 거리 | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_ENERGYandroid.car.permission.CAR_ENERGY_PORTSandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| 원시 속도, 디스플레이 속도 (자동차의 클러스터 디스플레이에 표시됨) | com.google.android.gms.permission.CAR_SPEED |
android.car.permission.CAR_SPEEDandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| 주행 거리계 거리 | com.google.android.gms.permission.CAR_MILEAGE |
Google Play에서 설치한 Android Automotive OS 앱에서 데이터를 사용할 수 없습니다. | 3 |
예를 들어 남은 범위를 가져오려면 CarInfo 객체를 인스턴스화한 다음 OnCarDataAvailableListener를 만들어 등록합니다.
Kotlin
val carInfo = carContext.getCarService(CarHardwareManager::class.java).carInfo
val listener = OnCarDataAvailableListener<EnergyLevel> { data ->
if (data.rangeRemainingMeters.status == CarValue.STATUS_SUCCESS) {
val rangeRemaining = data.rangeRemainingMeters.value
} else {
// Handle error
}
}
carInfo.addEnergyLevelListener(carContext.mainExecutor, listener)
…
// Unregister the listener when you no longer need updates
carInfo.removeEnergyLevelListener(listener)
자바
CarInfo carInfo = getCarContext().getCarService(CarHardwareManager.class).getCarInfo();
OnCarDataAvailableListener<EnergyLevel> listener = (data) -> {
if(data.getRangeRemainingMeters().getStatus() == CarValue.STATUS_SUCCESS) {
float rangeRemaining = data.getRangeRemainingMeters().getValue();
} else {
// Handle error
}
};
carInfo.addEnergyLevelListener(getCarContext().getMainExecutor(), listener);
…
// Unregister the listener when you no longer need updates
carInfo.removeEnergyLevelListener(listener);
자동차의 데이터를 항상 사용할 수 있다고 가정하지 마세요. 오류가 발생하면 요청한 값의 상태를 확인하여 요청한 데이터를 가져올 수 없는 이유를 파악하세요. CarInfo 클래스 정의에 관한 자세한 내용은 참조 문서를 확인하세요.
CarSensors
CarSensors 클래스를 사용하면 차량의 가속도계, 자이로스코프, 나침반, 위치 데이터에 액세스할 수 있습니다. 이러한 값의 사용 가능 여부는 OEM에 따라 달라질 수 있습니다. 가속도계, 자이로스코프, 나침반의 데이터 형식은 SensorManager API에서 가져오는 것과 동일합니다.
예를 들어 차량의 방향을 확인하려면 다음을 실행합니다.
Kotlin
val carSensors = carContext.getCarService(CarHardwareManager::class.java).carSensors
val listener = OnCarDataAvailableListener<Compass> { data ->
if (data.orientations.status == CarValue.STATUS_SUCCESS) {
val orientation = data.orientations.value
} else {
// Data not available, handle error
}
}
carSensors.addCompassListener(CarSensors.UPDATE_RATE_NORMAL, carContext.mainExecutor, listener)
…
// Unregister the listener when you no longer need updates
carSensors.removeCompassListener(listener)
자바
CarSensors carSensors = getCarContext().getCarService(CarHardwareManager.class).getCarSensors();
OnCarDataAvailableListener<Compass> listener = (data) -> {
if (data.getOrientations().getStatus() == CarValue.STATUS_SUCCESS) {
List<Float> orientations = data.getOrientations().getValue();
} else {
// Data not available, handle error
}
};
carSensors.addCompassListener(CarSensors.UPDATE_RATE_NORMAL, getCarContext().getMainExecutor(),
listener);
…
// Unregister the listener when you no longer need updates
carSensors.removeCompassListener(listener);
자동차의 위치 데이터에 액세스하려면 android.permission.ACCESS_FINE_LOCATION 권한을 선언하고 요청해야 합니다.
테스트
Android Auto에서 테스트할 때 센서 데이터를 시뮬레이션하려면 데스크톱 헤드 단위 가이드의 센서 및 센서 구성 섹션을 참고하세요. Android Automotive OS에서 테스트할 때 센서 데이터를 시뮬레이션하려면 Android Automotive OS 에뮬레이터 가이드의 하드웨어 상태 에뮬레이션을 참고하세요.