Detectar el soporte

Puede detectar cuándo un dispositivoBlackBerry se conecta a un soporte (como un soporte de manos libres) utilizando el tipo de capacidad DeviceCapability.TYPE_CRADLE que forma parte de la API de capacidad del dispositivo.

Puede utilizar DeviceCapability.isSupported() y DeviceCapability.isAvailable() para detectar el estado del soporte. Los dispositivos que ejecutan BlackBerry Device Software6.0 devuelven true para isSupported(DeviceCapability.TYPE_CRADLE). Cuando un dispositivo que ejecuta BlackBerry Device Software 6.0 se conecta a un soporte, isAvailable(DeviceCapability.TYPE_CRADLE) devuelve true.

Cuando detecta una conexión de soporte, puede utilizar la clase CradleProtocol para detectar el tipo y las propiedades del soporte. CradleProtocol se proporciona en el paquete net.rim.device.api.accessory. La clase proporciona campos para el tipo de soporte (como un soporte de manos libres, una funda o una estación de carga) y sus propiedades (como si un soporte tiene luz o botones que pueden cambiarse mediante programación).

CradleProtocol.getCradleType() devuelve el tipo de soporte que el mismo soporte ofrece. Es posible que un soporte no proporcione su tipo exacto. Por ejemplo, un soporte de manos libres puede devolver CradleProtocol.TYPE_SIMPLE, en vez de CradleProtocol.TYPE_CAR_KIT.

Ejemplo de código: Detectar si un dispositivo está conectado a un soporte

El siguiente ejemplo de código comprueba si el dispositivo está conectado a un soporte. Si lo está, se muestra el tipo de soporte.

import net.rim.device.api.accessory.CradleProtocol;
import net.rim.device.api.system.capability.DeviceCapability;
import net.rim.device.api.ui.component.RichTextField;
import net.rim.device.api.ui.container.MainScreen;
class CradleDemoScreen extends MainScreen 
{
    public CradleDemoScreen()
    {   
        setTitle("Cradle Demo");
        RichTextField statusField = new RichTextField();
        add(statusField);
        boolean isConnected = 
            DeviceCapability.isAvailable(DeviceCapability.TYPE_CRADLE);
        if (isConnected)
        {
            CradleProtocol myCradle = CradleProtocol.getInstance();
            int cradleType = myCradle.getCradleType();
            switch (cradleType)
            {
                case CradleProtocol.TYPE_CAR_KIT:
                    statusField.setText("Device is connected to a car kit cradle.");
                    break;
                case CradleProtocol.TYPE_AUDIO:
                    statusField.setText("Device is connected to an audio cradle.");
                    break;
                case CradleProtocol.TYPE_BEDSIDE:
                    statusField.setText("Device is connected to a charging pod cradle.");
                    break;
                case CradleProtocol.TYPE_CHARGER:
                    statusField.setText("Device is connected to a charger cradle.");
                    break;
                case CradleProtocol.TYPE_DESKTOP:
                    statusField.setText("Device is connected to a desktop cradle.");
                    break;
                case CradleProtocol.TYPE_HOLSTER:
                    statusField.setText("Device is connected to a holster cradle.");
                    break;
                case CradleProtocol.TYPE_MULTIMEDIA:
                    statusField.setText("Device is connected to a multimedia cradle.");
                    break;
                case CradleProtocol.TYPE_SIMPLE:
                    statusField.setText("Device is connected to a simple cradle.");
                    break;
                default:
                    statusField.setText("Can't determine type of cradle.");
            }
        }
        else
        {
            statusField.setText("Device is not connected.");
        }
    }            
}

Gestionar soportes

Puede registrar su aplicación como gestor de soportes. Un gestor de soportes es una aplicación que puede iniciar cuando un dispositivo BlackBerry se conecta a un soporte específico. Por ejemplo, si su aplicación ofrece información sobre viajes locales quizá le convendría registrarlo como gestor para soportes de manos libres, para que pueda iniciarse automáticamente cuando el dispositivo se conecte a un soporte de ese tipo.

Para registrar su aplicación como un controlador de soporte, use CradleHandlerRegistry.registerHandler(). La clase CradleHandlerRegistry se proporciona en el paquete net.rim.blackberry.api.cradle. Cuando registre su aplicación, especifique el tipo de soporte que quiere gestionar y su descriptor de aplicación. Los tipos de soporte se definen como campos en la clase CradleProtocol que se ofrece en el paquete net.rim.device.api.accessory.

El registro como gestor de soportes es persistente. Sólo necesita registrar su aplicación una vez después de que se haya instalado en el dispositivo.

Si hay algún gestor registrado para algún tipo de soporte, al usuario le aparecerá un cuadro de diálogo cuando el dispositivo se conecte a ese tipo de soporte.

Este diagrama muestra un cuadro de diálogo de ejemplo.

El usuario puede seleccionar qué gestor desea utilizar, si es que quiere utilizar alguno, y se inicia la aplicación gestora seleccionada. El usuario también puede indicar que la aplicación gestora seleccionada debe iniciarse automáticamente la próxima vez que se conecte el soporte del tipo especificado.

El usuario puede cambiar la configuración del gestor de soportes del dispositivo haciendo clic en Opciones> Aplicaciones de terceros en la pantalla de inicio.

Ejemplo de código: Registrar a un gestor de soportes

El siguiente ejemplo de código registra la aplicación actual como gestor de soportes de manos libres.

CradleHandlerRegistry.registerHandler(
   CradleProtocol.TYPE_CAR_KIT, 
   ApplicationDescriptor.currentApplicationDescriptor());

¿Le ha resultado útil esta información? Envíenos sus comentarios.