Rilevamento della base

È possibile rilevare se un dispositivo BlackBerry è connesso a una base (come una base kit per auto) utilizzando il tipo di funzionalità DeviceCapability.TYPE_CRADLE che fa parte dell'API Device Capability.

È possibile utilizzare DeviceCapability.isSupported() e DeviceCapability.isAvailable() per rilevare lo stato della base. I dispositivi con BlackBerry Device Software 6.0 restituiscono true per isSupported(DeviceCapability.TYPE_CRADLE). Se un dispositivo con BlackBerry Device Software 6.0 è connesso a una base, isAvailable(DeviceCapability.TYPE_CRADLE) restituisce true.

Quando viene rilevata una connessione della base, è possibile utilizzare la classe CradleProtocol per rilevare il tipo e le proprietà della base. CradleProtocol è fornito nel pacchetto net.rim.device.api.accessory. La classe fornisce i campi per un tipo di base (come una base di un kit per auto, una custodia o un'unità di ricarica) e per le proprietà di una base (ad esempio, se una base dispone di una spia o di pulsanti che è possibile modificare in maniera programmata).

CradleProtocol.getCradleType() restituisce il tipo di base specificato dalla base stessa. Una base potrebbe non specificare il proprio tipo corretto. Ad esempio, la base di un kit per auto potrebbe restituire CradleProtocol.TYPE_SIMPLE invece di CradleProtocol.TYPE_CAR_KIT.

Esempio di codice: come rilevare se un dispositivo è connesso a una base

Il seguente esempio di codice verifica se il dispositivo è connesso a una base. In caso affermativo, viene visualizzato il tipo di base.

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

Gestione della base

È possibile registrare l'applicazione come handler della base. Un handler della base è un'applicazione che è possibile avviare quando un dispositivo BlackBerry è connesso a una base di un tipo specificato. Ad esempio, se l'applicazione fornisce le informazioni di viaggio locali, è possibile che si desideri registrarla come handler per una base di un kit per auto, in modo da consentirne l'avvio automatico quando il dispositivo è connesso a una base di un kit per auto.

Per registrare l'applicazione come handler della base, utilizzare CradleHandlerRegistry.registerHandler(). La classe CradleHandlerRegistry è fornita nel pacchetto net.rim.blackberry.api.cradle. Quando si registra l'applicazione, viene specificato il tipo di base che si desidera utilizzare e il descrittore dell'applicazione. I tipi di base sono definiti come campi nella classe CradleProtocol fornita nel pacchetto net.rim.device.api.accessory.

La registrazione come handler della base è permanente. È necessario registrare l'applicazione solo una volta dopo averla installata nel dispositivo.

Se sono registrati handler per un tipo di base, l'utente visualizza una finestra di dialogo quando è collegato quel tipo di base.

Questo diagramma mostra una finestra di dialogo di esempio.

L'utente può selezionare l'handler da utilizzare, se disponibile; in questo caso, viene avviata l'applicazione dell'handler selezionato. L'utente può indicare anche l'avvio automatico dell'applicazione dell'handler selezionato al momento del successivo collegamento del tipo di base specificato.

L'utente può modificare le impostazioni dell'handler della base sul dispositivo facendo clic su Opzioni > Applicazioni di terzi nella schermata iniziale.

Esempio di codice: registrazione di un handler della base

Il seguente esempio di codice registra l'applicazione corrente come handler per le basi dei kit per auto.

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

Le informazioni sono state utili? Inviateci i vostri commenti.