Monitorar status, Monitorar status

Um painel de instrumentos típico atualiza informações de direção, chamada e mídia sempre que novos dados chegam. O Android fornece a seguinte API para permitir que o painel de instrumentos de um OEM receba facilmente o status atualizado.

Estado de condução

Os eventos de direção de direção são enviados enquanto a navegação está em andamento. O packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java contém métodos abstratos para um renderizador de aplicativo 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
) {...}
       
};
   
}
}

Você pode adicionar ações personalizadas (como renderização) a esses métodos para exibir as informações desejadas.

Status da chamada

Para monitorar o status da chamada, siga as seguintes etapas:

  1. Estenda android.telecom.InCallService .
    public class ClusterInCallService extends InCallService {
    ...
  2. 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">
  3. Substitua onCallAdded e onCallRemoved.
    public void onCallAdded(Call call) {
       
    ...
        call
    .registerCallback(mPhoneCallback);
        mPhoneCallback
    .onStateChanged(call, call.getState());
    }
    public void onCallRemoved(Call call) {
       
    ...
        call
    .unregisterCallback(mPhoneCallback);
    }
  4. Registre retornos de chamada para receber eventos de mudança de status de chamada ( Call#registerCallback ).
    private static class PhoneCallback extends Callback {
       
    ...
       
    public void onStateChanged(Call call, int state) {...}
    }
  5. Use provedores de conteúdo para obter informações de contato:
    ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream ).

Para obter o código de exemplo do monitor de status de chamada, consulte:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java

Para ver o código de exemplo 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 ao receber eventos relacionados a uma alteração no MediaMetadata (como título de álbum ou música ou imagem de capa) ou estado de reprodução (armazenamento em buffer, pausa, reprodução e parada). Para atualizar o status da mídia:

  1. Use MediaSessionManager e obtenha o controlador primário ( #getActiveSessions(null)[0] ).
  2. Registre retornos de chamada ( MediaController#Callback ).
  3. Inscrever-se na sessão ativa alterada MediaSessionManager#addOnActiveSessionsChangedListener(...) .

Para obter detalhes, consulte: