Détection de la station d'accueil

Vous pouvez détecter lorsqu'un terminal BlackBerry est connecté à une station d'accueil, telle qu'un ensemble d'accessoires de voiture, à l'aide du type de fonction DeviceCapability.TYPE_CRADLE, élément de l'API Capacité du terminal.

Vous pouvez utiliser DeviceCapability.isSupported() et DeviceCapability.isAvailable() pour détecter l'état de la station d'accueil. Les terminaux exécutant BlackBerry Device Software 6.0 renvoient true pour isSupported(DeviceCapability.TYPE_CRADLE). Lorsqu'un terminal exécutant BlackBerry Device Software 6.0 est connecté à une station d'accueil, isAvailable(DeviceCapability.TYPE_CRADLE) renvoie true.

Lorsque vous détectez une connexion à une station d'accueil, vous pouvez utiliser la classe CradleProtocol pour détecter le type de station d'accueil et ses propriétés.La classe CradleProtocol est fournie dans le package net.rim.device.api.accessory. La classe fournit des champs pour un type de station d'accueil (par exemple, station d'accueil d'ensemble d'accessoires de voiture, étui ou station de chargement) et des propriétés de station d'accueil (par exemple, si la station d'accueil a une lumière ou des boutons pouvant être modifiés par programmation).

CradleProtocol.getCradleType() renvoie le type de station d'accueil indiqué par la station d'accueil même. Une station d'accueil peut ne pas pouvoir indiquer son type précis. Par exemple, une station d'accueil d'ensemble d'accessoires de voiture pourrait renvoyer CradleProtocol.TYPE_SIMPLE, au lieu de CradleProtocol.TYPE_CAR_KIT.

Échantillon de code : détection de la connexion d'un terminal à une station d'accueil

L'échantillon de code suivant teste si le terminal est connecté une station d'accueil. Si c'est le cas, le type de station d'accueil s'affiche.

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

Gestion de la station d'accueil

Vous pouvez enregistrer votre application comme gestionnaire de station d'accueil. Un gestionnaire de station d'accueil est une application qui peut démarrer lorsqu'un terminal BlackBerry est connecté à une station d'accueil d'un type spécifié. Par exemple, si votre application fournit les informations de transport locales, vous voudrez peut-être l'enregistrer comme gestionnaire pour une station d'accueil d'ensemble d'accessoires de voiture, pour qu'elle démarre automatiquement lorsque le terminal est connecté à une station d'accueil d'ensemble d'accessoires de voiture.

Pour enregistrer votre application en tant que gestionnaire de station d'accueil, utilisez CradleHandlerRegistry.registerHandler(). La classe CradleHandlerRegistry est fournie dans le package net.rim.blackberry.api.cradle. Lorsque vous enregistrez votre application, vous indiquez le type de station d'accueil que vous voulez gérer et votre descripteur d'application. Les types de station d'accueil sont définis en tant que champs dans la classe CradleProtocol fournie dans le package net.rim.device.api.accessory.

L'enregistrement comme gestionnaire de station d'accueil est persistant. Vous devez enregistrer votre application une seule fois une fois qu'elle a été installée sur le terminal.

Le cas échéant les gestionnaires sont enregistrés pour un type de station d'accueil, une boîte de dialogue s'affiche dans lorsque ce type de station d'accueil est connecté.

Ce schéma montre un exemple de boîte de dialogue.

L'utilisateur peut sélectionner le gestionnaire à utiliser, le cas échéant, et l'application de gestionnaire sélectionnée est lancée. L'utilisateur peut indiquer également que l'application de gestionnaire sélectionnée doit démarrer automatiquement à la prochaine connexion de la station d'accueil du type spécifié.

L'utilisateur peut modifier les paramètres de gestionnaire de station d'accueil sur le terminal en cliquant sur Options > Applications tierces sur l'écran d'accueil.

Échantillon de code : enregistrement d'un gestionnaire de station d'accueil

L'échantillon de code suivant enregistre l'application actuelle comme gestionnaire pour les stations d'accueil d'ensemble d'accessoires de voiture.

CradleHandlerRegistry.registerHandler(
   CradleProtocol.TYPE_CAR_KIT, 
   ApplicationDescriptor.currentApplicationDescriptor());
Sujet précédent: API Capacité du terminal

Ces informations vous ont-elles été utiles ? Envoyez-nous vos commentaires.