거치대 감지

단말기 기능 API에 속하는 DeviceCapability.TYPE_CRADLE 기능 유형을 사용하여 BlackBerry 단말기가 거치대(예: 차량 키트 거치대)에 연결되어 있을 때 이를 감지할 수 있습니다.

DeviceCapability.isSupported()DeviceCapability.isAvailable()을 사용하여 거치대 상태를 감지할 수 있습니다. BlackBerry Device Software 6.0을 실행하는 단말기는 isSupported(DeviceCapability.TYPE_CRADLE)에 대해 true를 반환합니다. BlackBerry Device Software 6.0을 실행하는 단말기가 거치대에 연결되어 있는 경우 isAvailable(DeviceCapability.TYPE_CRADLE)true를 반환합니다.

거치대 연결이 감지되면 CradleProtocol 클래스를 사용하여 거치대 유형 및 속성을 감지할 수 있습니다. CradleProtocolnet.rim.device.api.accessory 패키지에 제공됩니다. 이 클래스는 거치대 유형(차량 키트 거치대, 홀스터, 충전용 거치대 등)과 거치대 속성(거치대에 프로그래밍 방식으로 변경할 수 있는 표시등이나 버튼이 있는지 여부 등)에 대한 필드를 제공합니다.

CradleProtocol.getCradleType()은 거치대 자체가 알리는 거치대 유형을 반환합니다. 거치대가 정확한 유형을 알리지 않을 수도 있습니다. 예를 들어, 차량 키트 거치대가 CradleProtocol.TYPE_CAR_KIT 대신 CradleProtocol.TYPE_SIMPLE을 반환할 수 있습니다.

코드 샘플: 단말기가 거치대에 연결되어 있는지 감지

다음 코드 샘플은 단말기가 거치대에 연결되어 있는지를 테스트합니다. 연결되어 있으면 거치대 유형이 표시됩니다.

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

거치대 처리

프로그램을 거치대 핸들러로 등록할 수 있습니다. 거치대 핸들러는 BlackBerry 단말기가 지정된 유형의 거치대에 연결될 때 시작될 수 있는 프로그램입니다. 예를 들어, 지역 여행 정보를 제공하는 프로그램을 차량 키트 거치대의 핸들러로 등록할 수 있습니다. 그러면 단말기가 차량 키트 거치대에 연결될 때 이 프로그램이 자동으로 시작될 수 있습니다.

프로그램을 거치대 핸들러로 등록하려면 CradleHandlerRegistry.registerHandler()를 사용하십시오. CradleHandlerRegistry 클래스는 net.rim.blackberry.api.cradle 패키지에 제공됩니다. 프로그램을 등록할 때 처리할 거치대 유형 그리고 프로그램 설명자를 지정합니다. 거치대 유형은 net.rim.device.api.accessory 패키지에 제공되는 CradleProtocol 클래스에서 필드로 정의됩니다.

거치대 핸들러로 등록하면 영구적으로 적용됩니다. 단말기에 설치한 후 프로그램을 한 번만 등록하면 됩니다.

거치대 유형에 대해 등록된 핸들러가 여러 개 있으면 해당 유형의 거치대가 연결될 때 사용자에게 대화 상자가 표시됩니다.

이 다이어그램은 대화 상자의 예를 보여 줍니다.

사용자는 사용할 핸들러를 선택할 수 있고, 선택된 핸들러 프로그램이 시작됩니다. 사용자는 선택한 핸들러 프로그램이 다음에 지정된 유형의 거치대가 연결될 때 자동으로 시작되도록 할 수도 있습니다.

사용자는 홈 스크린에서 옵션 > 타사 프로그램을 클릭하여 단말기의 거치대 핸들러 설정을 변경할 수 있습니다.

코드 샘플: 거치대 핸들러 등록

다음 코드 샘플은 현재 프로그램을 차량 키트 거치대의 핸들러로 등록합니다.

CradleHandlerRegistry.registerHandler(
   CradleProtocol.TYPE_CAR_KIT, 
   ApplicationDescriptor.currentApplicationDescriptor());
이전 주제: 단말기 기능 API

이 정보가 도움이 되었습니까? 의견을 보내 주십시오.