Supervisa el estado

Un clúster de instrumentos típico actualiza la información de conducción, llamadas y medios cada vez que se agregan datos nuevos entra en juego. Android proporciona la siguiente API para permitir que el clúster de instrumentos de un OEM reciba a un estado actualizado con facilidad.

Estado de la conducción

Los eventos de dirección en auto se envían mientras la navegación está en curso. El archivo packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java Contiene métodos abstractos para un renderizador de apps de navegación en el clúster de instrumentos.

En una InstrumentClusterRenderingService extendida, estos métodos son los siguientes:

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) {...}
        };
    }
}

Puedes agregar acciones personalizadas (como la renderización) a estos métodos para mostrar información.

Estado de la llamada

Para supervisar el estado de la llamada, sigue estos pasos:

  1. Extiende android.telecom.InCallService.
    public class ClusterInCallService extends InCallService {
    ...
  2. Registra el servicio en AndroidManifest.xml.
    <service android:name="com.android.car.cluster.sample.ClusterInCallService"
        android:permission="android.permission.BIND_INCALL_SERVICE"
        android:exported="false">
  3. Anular onCallAdded y onCallRemoved
    public void onCallAdded(Call call) {
        ...
        call.registerCallback(mPhoneCallback);
        mPhoneCallback.onStateChanged(call, call.getState());
    }
    public void onCallRemoved(Call call) {
        ...
        call.unregisterCallback(mPhoneCallback);
    }
  4. Registra devoluciones de llamada para recibir eventos de cambio de estado de la llamada (Call#registerCallback).
    private static class PhoneCallback extends Callback {
        ...
        public void onStateChanged(Call call, int state) {...}
    }
  5. Utilizar proveedores de contenido para extraer información de contacto:
    ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream).

Para ver el código de muestra del monitor de estado de la llamada, consulta lo siguiente:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java

Para ver el código de muestra del proveedor de contenido, consulta:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java

Estado del contenido multimedia

Puedes configurar el sistema para que actualice el estado del contenido multimedia cuando reciba eventos relacionados con un Cambio en MediaMetadata (como el título del álbum o de la canción o la imagen de portada) o el estado de reproducción (almacenamiento en búfer, pausar, reproducir y detenerse). Para actualizar el estado del contenido multimedia, haz lo siguiente:

  1. Usar MediaSessionManager y obtener el control principal (#getActiveSessions(null)[0])
  2. Registra devoluciones de llamada (MediaController#Callback).
  3. Se cambió la opción de suscripción en una sesión activa MediaSessionManager#addOnActiveSessionsChangedListener(...)

Para obtener detalles, consulta: