Exibir conteúdo em uma tela do telefone

No exemplo de código a seguir, conteúdo personalizado é adicionado à tela de chamada recebida substituindo AbstractPhoneListener.callIncoming(). Você pode exibir conteúdo em outras telas de chamada substituindo callWaiting(), callInitiated() e callAnswered().

Antes de começar: Certifique-se de que o seguinte aplicativo de exemplo seja executado em segundo plano quando o aparelho BlackBerry for iniciado. No BlackBerry Java Plug-in para Eclipse, altere o descritor do aplicativo BlackBerry para o aplicativo de exemplo. Para obter mais informações, consulte o Guia de desenvolvimento do BlackBerry Java Plug-in para Eclipse .
  1. Importe as classes e interfaces necessárias.
    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. Crie a estrutura do aplicativo estendendo a classe Application. No construtor, invoque Phone.addPhoneListener() para registrar o ouvinte que é criado na etapa 3. Em main(), invoque enterEventDispatcher() para habilitar o aplicativo para receber eventos.
    public final class MyPhoneScreen extends Application
    {
        public MyPhoneScreen()
        {
            Phone.addPhoneListener(new MyPhoneScreenContent());
        }
        public static void main(String[] args)
        {
            new MyPhoneScreen().enterEventDispatcher();
        }
    }
  3. Crie uma classe que estenda a classe AbstractPhoneListener. Crie um construtor para essa nova classe.
    final class MyPhoneScreenContent extends AbstractPhoneListener
    {
        public MyPhoneScreenContent()
        {
        }
    }
  4. Na classe que estende AbstractPhoneListener, substitua AbstractPhoneListener.callIncoming(). Crie uma instância da classe ScreenModel. Obtenha uma instância da tela de chamada recebida invocando ScreenModel.getPhoneScreen(). Passe parâmetros para especificar a orientação e o tipo da tela de chamada que você deseja obter. No exemplo de código a seguir, a orientação de retrato da tela de chamada recebida é obtida. Como os aparelhos com telas sensíveis ao toque suportam as orientações de retrato e paisagem, você passa o parâmetro PhoneScreen.LANDSCAPE para obter a orientação de paisagem da tela de chamada recebida.
    public void callIncoming(int callId)
    {
        ScreenModel screenModel = new ScreenModel(callId);
        PhoneScreen phoneScreenPortrait = screenModel.getPhoneScreen(PhoneScreen.PORTRAIT, PhoneScreen.INCOMING);
    }
  5. Em callIncoming(), crie conteúdo personalizado para adicionar à tela de chamada. No exemplo de código a seguir, texto é adicionado à tela de chamada recebida usando campos de rótulo. Substitua LabelField.paint() para alterar a cor do campo de rótulo.
    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. Em callIncoming(), especifique a fonte para o conteúdo personalizado. No exemplo de código a seguir, a fonte da tela de chamada é usada. Invoque PhoneScreen.getCallerInfoFont() para obter a fonte que é usada pela tela de chamada. Invoque Field.setFont() e passe a fonte da tela de chamada para especificar a fonte para os campos de rótulo que foram criados na etapa 5. Invoque PhoneScreen.add() para adicionar os campos de rótulo à tela de chamada.
    labelField1.setFont(phoneScreenPortrait.getCallerInfoFont());
    labelField2.setFont(phoneScreenPortrait.getCallerInfoFont());
    phoneScreenPortrait.add(labelField1);
    phoneScreenPortrait.add(labelField2);
  7. Em callIncoming(), invoque ScreenModel.sendAllDataToScreen() para adicionar o conteúdo personalizado à tela de chamada recebida.
    screenModel.sendAllDataToScreen();

Exemplo de código: Exibir conteúdo em uma tela de telefone

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();
    }
}

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