전화 화면에 콘텐츠 표시

다음 코드 샘플에서는 AbstractPhoneListener.callIncoming()을 재정의하여 사용자 정의 콘텐츠를 수신 전화 화면에 추가합니다. callWaiting(), callInitiated()callAnswered()를 재정의하여 다른 통화 화면에 콘텐츠를 표시할 수 있습니다.

시작하기 전에: BlackBerry 단말기가 시작될 때 다음 샘플 프로그램이 백그라운드에서 실행되는지 확인하십시오. BlackBerry Java Plug-in for Eclipse에서 샘플 프로그램의 BlackBerry 프로그램 설명자를 변경하십시오. 자세한 내용은 BlackBerry Java Plug-in for Eclipse 개발 가이드를 참조하십시오.
  1. 필요한 클래스와 인터페이스를 가져옵니다.
    import net.rim.blackberry.api.phone.*;
    import net.rim.blackberry.api.phone.phonegui.*;
    import net.rim.device.api.system.*;
    import net.rim.device.api.ui.*;
    import net.rim.device.api.ui.component.*;
  2. Application 클래스를 확장하여 프로그램 구조를 만듭니다. 생성자에서 Phone.addPhoneListener()를 호출하여 3단계에서 만든 수신기를 등록합니다. main()에서 enterEventDispatcher()를 호출하여 프로그램이 이벤트를 수신할 수 있도록 합니다.
    public final class MyPhoneScreen extends Application
    {
        public MyPhoneScreen()
        {
            Phone.addPhoneListener(new MyPhoneScreenContent());
        }
        public static void main(String[] args)
        {
            new MyPhoneScreen().enterEventDispatcher();
        }
    }
  3. AbstractPhoneListener 클래스를 확장하는 클래스를 만듭니다. 이 새 클래스를 위한 생성자를 만듭니다.
    final class MyPhoneScreenContent extends AbstractPhoneListener
    {
        public MyPhoneScreenContent()
        {
        }
    }
  4. AbstractPhoneListener를 확장하는 클래스에서 AbstractPhoneListener.callIncoming()을 재정의합니다. ScreenModel 클래스의 인스턴스를 만듭니다. ScreenModel.getPhoneScreen()을 호출하여 수신 전화 화면의 인스턴스를 가져옵니다. 매개 변수를 전달하여 가져올 통화 화면 방향 및 유형을 지정합니다. 다음 코드 샘플에서는 수신 전화 화면의 세로 방향을 가져옵니다. 터치 스크린이 있는 단말기는 세로 및 가로 방향을 지원하기 때문에 수신 전화 화면의 가로 방향을 가져오려면 PhoneScreen.LANDSCAPE 매개 변수를 전달하십시오.
    public void callIncoming(int callId)
    {
        ScreenModel screenModel = new ScreenModel(callId);
        PhoneScreen phoneScreenPortrait = screenModel.getPhoneScreen(PhoneScreen.PORTRAIT, PhoneScreen.INCOMING);
    }
  5. callIncoming()에서 통화 화면에 추가할 사용자 정의 콘텐츠를 만듭니다. 다음 코드 샘플에서는 레이블 필드를 사용하여 텍스트를 수신 전화 화면에 추가합니다. LabelField.paint()를 재정의하여 레이블 필드의 색을 변경합니다.
    LabelField labelField1 = new LabelField("Hello") 
    {
        public void paint(Graphics g) 
        {
            g.setColor(Color.GREEN);
            super.paint(g);
        }
    };    
    LabelField labelField2 = new LabelField(" to the World.")
    {
        public void paint(Graphics g)
        {
            g.setColor(Color.RED);
            super.paint(g);
        }
    };
  6. callIncoming()에서 사용자 정의 콘텐츠의 글꼴을 지정합니다. 다음 코드 샘플에서는 통화 화면의 글꼴이 사용됩니다. PhoneScreen.getCallerInfoFont()를 호출하여 통화 화면에 사용하는 글꼴을 가져옵니다. Field.setFont()를 호출하고 통화 화면 글꼴을 전달하여 5단계에서 만든 레이블 필드의 글꼴을 지정합니다. PhoneScreen.add()를 호출하여 레이블 필드를 통화 화면에 추가합니다.
    labelField1.setFont(phoneScreenPortrait.getCallerInfoFont());
    labelField2.setFont(phoneScreenPortrait.getCallerInfoFont());
    phoneScreenPortrait.add(labelField1);
    phoneScreenPortrait.add(labelField2);
  7. callIncoming()에서 ScreenModel.sendAllDataToScreen()을 호출하여 사용자 정의 콘텐츠를 수신 전화 화면에 추가합니다.
    screenModel.sendAllDataToScreen();

코드 샘플: 전화 화면에 콘텐츠 표시

import net.rim.blackberry.api.phone.*;
import net.rim.blackberry.api.phone.phonegui.*;
import net.rim.device.api.system.*;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
public final class MyPhoneScreen extends Application
{
    public MyPhoneScreen()
    {
        Phone.addPhoneListener(new MyPhoneScreenContent());
    }
    public static void main(String[] args)
    {
        new MyPhoneScreen().enterEventDispatcher();
    }
}
final class MyPhoneScreenContent extends AbstractPhoneListener
{
    public MyPhoneScreenContent()
    {
    }
    public void callIncoming(int callId)
    {
        ScreenModel screenModel = new ScreenModel(callId);
        PhoneScreen phoneScreenPortrait = screenModel.getPhoneScreen(PhoneScreen.PORTRAIT, PhoneScreen.INCOMING);
        LabelField labelField1 = new LabelField("Hello")
        {
            public void paint(Graphics g)
            {
                g.setColor(Color.GREEN);
                super.paint(g);
            }
        };    
        LabelField labelField2 = new LabelField(" to the World.")
        {
            public void paint(Graphics g)
            {
                g.setColor(Color.RED);
                super.paint(g);
            }
        };
        labelField1.setFont(phoneScreenPortrait.getCallerInfoFont());
        labelField2.setFont(phoneScreenPortrait.getCallerInfoFont());
        phoneScreenPortrait.add(labelField1);
        phoneScreenPortrait.add(labelField2); 
        screenModel.sendAllDataToScreen();
    }
}

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