거치대 감지
단말기 기능 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 클래스를 사용하여 거치대 유형 및 속성을 감지할 수 있습니다. CradleProtocol은 net.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 클래스에서 필드로 정의됩니다.
거치대 핸들러로 등록하면 영구적으로 적용됩니다. 단말기에 설치한 후 프로그램을 한 번만 등록하면 됩니다.
거치대 유형에 대해 등록된 핸들러가 여러 개 있으면 해당 유형의 거치대가 연결될 때 사용자에게 대화 상자가 표시됩니다.

사용자는 사용할 핸들러를 선택할 수 있고, 선택된 핸들러 프로그램이 시작됩니다. 사용자는 선택한 핸들러 프로그램이 다음에 지정된 유형의 거치대가 연결될 때 자동으로 시작되도록 할 수도 있습니다.
사용자는 홈 스크린에서 옵션 > 타사 프로그램을 클릭하여 단말기의 거치대 핸들러 설정을 변경할 수 있습니다.