일반적인 계기판은 새 데이터가 들어올 때마다 운전, 통화, 미디어 정보를 업데이트합니다. Android는 OEM의 계기판을 통해 최신 상태를 쉽게 수신할 수 있도록 다음 API를 제공합니다.
운전 상태
내비게이션이 진행 중일 때 운전 경로 이벤트가 전송됩니다. packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java
파일에는 계측 클러스터에서 내비게이션 앱 렌더러의 추상 메서드가 포함됩니다.
확장된 InstrumentClusterRenderingService
에서 이러한 메서드는 다음과 같습니다.
public class MyClusterRenderingService extends InstrumentClusterRenderingService { ... @Override protected NavigationRenderer getNavigationRenderer() { return new NavigationRenderer() { @Override CarNavigationInstrumentCluster getNavigationProperties() {...} @Override void onStartNavigation() {...} @Override void onStopNavigation() {...} @Override void onNextTurnChanged(int event, String road, int turnAngle, int turnNumber, Bitmap image, int turnSide) {...} @Override void onNextTurnDistanceChanged(int distanceMeters, int timeSeconds) {...} }; } }
이러한 메서드에 렌더링과 같은 맞춤 작업을 추가하여 원하는 정보를 표시할 수 있습니다.
통화 상태
통화 상태를 모니터링하려면 다음 단계를 따릅니다.
android.telecom.InCallService
를 확장합니다.public class ClusterInCallService extends InCallService { ...
AndroidManifest.xml
에 서비스를 등록합니다.<service android:name="com.android.car.cluster.sample.ClusterInCallService" android:permission="android.permission.BIND_INCALL_SERVICE" android:exported="false">
- onCallAdded 및 onCallRemoved를 재정의합니다.
public void onCallAdded(Call call) { ... call.registerCallback(mPhoneCallback); mPhoneCallback.onStateChanged(call, call.getState()); } public void onCallRemoved(Call call) { ... call.unregisterCallback(mPhoneCallback); }
- 콜백을 등록하여 통화 상태 변경 이벤트(
Call#registerCallback
)를 수신합니다.private static class PhoneCallback extends Callback { ... public void onStateChanged(Call call, int state) {...} }
- 콘텐츠 제공업체를 사용하여 연락처 정보를 가져옵니다.
ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream
).
통화 상태 모니터 샘플 코드는 다음을 참조하세요.
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java
콘텐츠 제공자 샘플 코드는 다음을 참고하세요.
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java
미디어 상태
MediaMetadata(예: 앨범, 노래 제목 또는 표지 이미지) 또는 재생 상태(버퍼링, 일시중지, 재생, 중지)의 변경과 관련된 이벤트를 수신하면 미디어 상태를 업데이트하도록 시스템을 구성할 수 있습니다. 미디어 상태를 업데이트하려면:
MediaSessionManager
를 사용하여 기본 컨트롤러(#getActiveSessions(null)[0]
)를 가져옵니다.- 콜백(
MediaController#Callback
)을 등록합니다. - 활성 세션 변경된
MediaSessionManager#addOnActiveSessionsChangedListener(...)
를 구독합니다.
자세한 내용을 보려면 다음을 참조하세요.
packages/services/Car/+/android-8.1.0_r9/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/MediaStateMonitor.java
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/InstrumentClusterController.java