Visualizzazione del contenuto in una schermata Telefono

Nel seguente esempio di codice, il contenuto personalizzato viene aggiunto alla schermata della chiamata in arrivo sovrascrivendo AbstractPhoneListener.callIncoming(). È possibile visualizzare il contenuto su altre schermate della chiamata, sovrascrivendo callWaiting(), callInitiated() e callAnswered().

Prima di iniziare: All'avvio del dispositivo BlackBerry, accertarsi che la seguente applicazione di prova sia in esecuzione in background. In BlackBerry Java Plug-in per Eclipse, modificare il descrittore dell'applicazione BlackBerry per l'applicazione di prova. Per ulteriori informazioni, consultare la BlackBerry Java Plug-in per Eclipse.
  1. Importare le classi e le interfacce richieste.
    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. Creare il framework dell'applicazione estendendo la classe Application. Nel costruttore, richiamare Phone.addPhoneListener() per registrare il listener creato nel passaggio 3. In main(), richiamare enterEventDispatcher() per consentire all'applicazione di ricevere eventi.
    public final class MyPhoneScreen extends Application
    {
        public MyPhoneScreen()
        {
            Phone.addPhoneListener(new MyPhoneScreenContent());
        }
        public static void main(String[] args)
        {
            new MyPhoneScreen().enterEventDispatcher();
        }
    }
  3. Creare una classe che estenda la classe AbstractPhoneListener. Creare un costruttore per questa nuova classe.
    final class MyPhoneScreenContent extends AbstractPhoneListener
    {
        public MyPhoneScreenContent()
        {
        }
    }
  4. Nella classe che estende AbstractPhoneListener, sostituire AbstractPhoneListener.callIncoming(). Creare un'istanza della classe ScreenModel. Ottenere un'istanza della schermata della chiamata in arrivo, richiamando ScreenModel.getPhoneScreen(). Passare i parametri per specificare l'orientamento della schermata della chiamata e il tipo che si desidera ottenere. Nel seguente esempio di codice, si ottiene l'orientamento verticale della schermata della chiamata in arrivo. Poiché i dispositivi con touchscreen supportano l'orientamento verticale e orizzontale, passare il parametro PhoneScreen.LANDSCAPE per ottenere l'orientamento orizzontale della schermata della chiamata in arrivo.
    public void callIncoming(int callId)
    {
        ScreenModel screenModel = new ScreenModel(callId);
        PhoneScreen phoneScreenPortrait = screenModel.getPhoneScreen(PhoneScreen.PORTRAIT, PhoneScreen.INCOMING);
    }
  5. In callIncoming(), creare il contenuto personalizzato da aggiungere alla schermata della chiamata. Nel seguente esempio di codice, il testo viene aggiunto alla schermata della chiamata in arrivo utilizzando dei campi Etichetta. Per modificare il colore del campo Etichetta, sovrascrivere 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. In callIncoming(), specificare il carattere per il contenuto personalizzato. Nel seguente esempio di codice, viene utilizzato il carattere della schermata della chiamata. Richiamare PhoneScreen.getCallerInfoFont() per ottenere il carattere utilizzato dalla schermata della chiamata. Richiamare Field.setFont() e passare il carattere della schermata della chiamata per specificare il carattere per i campi Etichetta creati nel passaggio 5. Richiamare PhoneScreen.add() per aggiungere i campi Etichetta alla schermata della chiamata.
    labelField1.setFont(phoneScreenPortrait.getCallerInfoFont());
    labelField2.setFont(phoneScreenPortrait.getCallerInfoFont());
    phoneScreenPortrait.add(labelField1);
    phoneScreenPortrait.add(labelField2);
  7. In callIncoming(), richiamare ScreenModel.sendAllDataToScreen() per aggiungere il contenuto personalizzato alla schermata della chiamata in arrivo.
    screenModel.sendAllDataToScreen();

Esempio di codice: visualizzazione del contenuto su una schermata del telefono

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 informazioni sono state utili? Inviateci i vostri commenti.