Detecção da base

Você pode detectar quando um aparelho BlackBerry está conectado a uma base (como uma base de kit para carro) usando o tipo de recurso DeviceCapability.TYPE_CRADLE que faz parte da API de recursos do aparelho.

Você pode usar DeviceCapability.isSupported() e DeviceCapability.isAvailable() para detectar o status da base. Os aparelhos que executam o BlackBerry Device Software 6.0 retornam true para isSupported(DeviceCapability.TYPE_CRADLE). Quando um aparelho que executa oBlackBerry Device Software 6.0 está conectado a uma base, isAvailable(DeviceCapability.TYPE_CRADLE) retorna true.

Quando você detecta uma conexão de base, é possível usar a classe CradleProtocol para detectar o tipo de base e as propriedades.A CradleProtocol é fornecida no pacote net.rim.device.api.accessory. A classe fornece campos para um tipo de base (como uma base de kit para carros, um estojo ou um pod de carregamento) e as propriedades da base (como se a base tem luzes ou botões que podem ser alterados automaticamente).

CradleProtocol.getCradleType() retorna o tipo de base que a própria base fornece. Pode ser que uma base não forneça seu tipo preciso. Por exemplo, pode ser que uma base de kit para carros retorne CradleProtocol.TYPE_SIMPLE, em vez de CradleProtocol.TYPE_CAR_KIT.

Exemplo de código: Detectar se um aparelho está conectado a uma base

O exemplo de código a seguir testa se o aparelho está conectado a uma base. Se estiver, o tipo de base será exibido.

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

Gerenciamento de base

Você pode registrar seu aplicativo como um gerenciador de bases. Gerenciador de bases é um aplicativo que pode ser iniciado quando um aparelho BlackBerry é conectado a uma base de um tipo especificado. Por exemplo, se o seu aplicativo fornecer informações locais de viagem, você talvez deseje registrá-lo como um gerenciador para uma base de kit para carros, para que possa ser iniciado automaticamente quando o aparelho for conectado a uma base de kit para carros.

Para registrar seu aplicativo como um gerenciador de bases, use CradleHandlerRegistry.registerHandler(). A classe CradleHandlerRegistry é fornecida no pacote net.rim.blackberry.api.cradle. Ao registrar seu aplicativo, você especifica o tipo de base que deseja gerenciar e o descritor do seu aplicativo. Os tipos de base são definidos como campos na classe CradleProtocol que é fornecida no pacote net.rim.device.api.accessory.

O registro como um gerenciador de bases é persistente. Você deve registrar seu aplicativo apenas uma vez depois que ele é instalado no aparelho.

Se algum gerenciador estiver registrado para um tipo de base, o usuário verá uma caixa de diálogo quando tal base for conectada.

Esse diagrama mostra um exemplo da caixa de diálogo.

O usuário pode selecionar o gerenciador a ser usado, se aplicável, e o aplicativo gerenciador selecionado é iniciado. O usuário também pode indicar que o aplicativo gerenciador selecionado seja automaticamente iniciado na próxima vez que a base do tipo especificado for conectada.

O usuário pode alterar as configurações do gerenciador de bases no aparelho clicando em Opções > Aplicativos de terceiros, na tela inicial.

Exemplo de código: Registrar um gerenciador de bases

O exemplo de código a seguir registra o aplicativo atual como um gerenciador para bases de kit para carros.

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

Estas informações foram úteis? Gostaríamos de receber seus comentários.