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 .
- 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.*;
- 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();
}
}
- Crie uma classe que estenda a classe AbstractPhoneListener. Crie um construtor para essa nova classe.
final class MyPhoneScreenContent extends AbstractPhoneListener
{
public MyPhoneScreenContent()
{
}
}
- 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);
}
- 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);
}
};
- 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);
- 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.