Mostrar contenido en una pantalla de teléfono

En el ejemplo de código siguiente, se agregó contenido personalizado a la pantalla de llamada entrante anulando AbstractPhoneListener.callIncoming(). Puede mostrar el contenido en otras pantallas de llamada anulando callWaiting(), callInitiated() y callAnswered().

Antes de comenzar: Asegúrese de que la siguiente aplicación de ejemplo se ejecute en segundo plano cuando se inicie el dispositivo BlackBerry. En el BlackBerry Java Plug-in para Eclipse, cambie el descriptor de aplicación de BlackBerry para la aplicación de ejemplo. Para obtener más información, consulte la Guía de desarrollo de BlackBerry Java Plug-in para Eclipse .
  1. Importe las clases y las interfaces necesarias.
    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. Cree el marco de la aplicación ampliando la clase Application. En el constructor, invoque Phone.addPhoneListener() para registrar el servicio de escucha que se creó en el paso 3. En main(), invoque enterEventDispatcher() para activar la aplicación para recibir eventos.
    public final class MyPhoneScreen extends Application
    {
        public MyPhoneScreen()
        {
            Phone.addPhoneListener(new MyPhoneScreenContent());
        }
        public static void main(String[] args)
        {
            new MyPhoneScreen().enterEventDispatcher();
        }
    }
  3. Cree una clase que amplíe la clase AbstractPhoneListener. Cree a un constructor para esta nueva clase.
    final class MyPhoneScreenContent extends AbstractPhoneListener
    {
        public MyPhoneScreenContent()
        {
        }
    }
  4. En la clase que amplía AbstractPhoneListener, anule AbstractPhoneListener.callIncoming(). Cree una instancia de la clase ScreenModel. Obtenga una instancia de la pantalla de llamada entrante invocando ScreenModel.getPhoneScreen(). Pase los parámetros para especificar la orientación y tipo de pantalla de llamada que quiere obtener. En el siguiente ejemplo de código, se obtiene la orientación vertical de la pantalla de llamada entrante. Debido a que los dispositivos con pantallas táctiles admiten la orientación vertical y horizontal, pase el parámetro PhoneScreen.LANDSCAPE para obtener la orientación horizontal de la pantalla de llamada entrante.
    public void callIncoming(int callId)
    {
        ScreenModel screenModel = new ScreenModel(callId);
        PhoneScreen phoneScreenPortrait = screenModel.getPhoneScreen(PhoneScreen.PORTRAIT, PhoneScreen.INCOMING);
    }
  5. En callIncoming(), cree contenido personalizado para agregar a la pantalla de llamada. En el ejemplo de código siguiente, el texto se agregó a la pantalla de llamada entrante utilizando campos de etiqueta. Anule LabelField.paint() para cambiar el color del campo de etiqueta.
    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. En callIncoming(), especifique el tipo de letra para el contenido personalizado. En el siguiente ejemplo de código, se utiliza el tipo de letra de la pantalla de llamada. Invoque PhoneScreen.getCallerInfoFont() para obtener el tipo de letra que se utilizará en la pantalla de llamada. Invoque Field.setFont() y pase el tipo de letra de la pantalla de llamada para especificar el tipo de letra para los campos de etiqueta que se crearon en el paso 5. Invoque PhoneScreen.add() para agregar los campos de etiqueta a la pantalla de llamada.
    labelField1.setFont(phoneScreenPortrait.getCallerInfoFont());
    labelField2.setFont(phoneScreenPortrait.getCallerInfoFont());
    phoneScreenPortrait.add(labelField1);
    phoneScreenPortrait.add(labelField2);
  7. En callIncoming(), invoque ScreenModel.sendAllDataToScreen() para agregar el contenido personalizado a la pantalla de llamada entrante.
    screenModel.sendAllDataToScreen();

Ejemplo de código: Mostrar contenido en una pantalla de teléfono

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

¿Le ha resultado útil esta información? Envíenos sus comentarios.