Um cluster de instrumentos típico atualiza informações de direção, chamada e mídia sempre que novos dados novos dados chegam. O Android oferece a API abaixo para permitir que o cluster de instrumentos de um OEM receba o status atualizado facilmente.
Status de direção
Os eventos de rota de carro são enviados enquanto a navegação está em andamento. O arquivo
packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java
contém métodos abstratos para um renderizador de app de navegação no cluster de instrumentos.
Em um InstrumentClusterRenderingService
estendido, esses métodos são os seguintes:
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) {...} }; } }
É possível adicionar ações personalizadas (como renderização) a esses métodos para exibir anúncios informações imprecisas ou inadequadas.
Status da ligação
Para monitorar o status da chamada, siga estas etapas:
- Estenda
android.telecom.InCallService
.public class ClusterInCallService extends InCallService { ...
- Registre o serviço em
AndroidManifest.xml
.<service android:name="com.android.car.cluster.sample.ClusterInCallService" android:permission="android.permission.BIND_INCALL_SERVICE" android:exported="false">
- Substitui onCallAdded e onCallRemoved.
public void onCallAdded(Call call) { ... call.registerCallback(mPhoneCallback); mPhoneCallback.onStateChanged(call, call.getState()); } public void onCallRemoved(Call call) { ... call.unregisterCallback(mPhoneCallback); }
- Registrar callbacks para receber eventos de mudança de status da chamada (
Call#registerCallback
).private static class PhoneCallback extends Callback { ... public void onStateChanged(Call call, int state) {...} }
- Use provedores de conteúdo para extrair dados de contato:
ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream
).
Para conferir o exemplo de código do monitor de status de chamadas, consulte:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java
Para conferir um exemplo de código do provedor de conteúdo, consulte:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java
.
Status da mídia
Você pode configurar o sistema para atualizar o status da mídia quando receber eventos relacionados a um alteração em MediaMetadata (como título do álbum ou da música ou imagem da capa) ou no estado de reprodução (armazenamento em buffer, pausar, reproduzir e parar). Para atualizar o status da mídia:
- Usar
MediaSessionManager
e conseguir o controle principal#getActiveSessions(null)[0]
). - Registrar callbacks (
MediaController#Callback
). - A opção "Inscrever-se em na sessão ativa" foi alterada
MediaSessionManager#addOnActiveSessionsChangedListener(...)
:
Para obter informações, consulte: