Anzeigen von Inhalten auf einem Telefonbildschirm

Im folgenden Codebeispiel wird dem Bildschirm für eingehende Anrufe durch Überschreiben von AbstractPhoneListener.callIncoming() benutzerdefinierter Inhalt hinzugefügt. Sie können Inhalt in anderen Anrufbildschirmen durch Überschreiben von callWaiting(), callInitiated() und callAnswered() anzeigen.

Vor Beginn erforderliche Aktion: Stellen Sie sicher, dass die folgende Beispielanwendung im Hintergrund ausgeführt wird, wenn das BlackBerry-Gerät startet. Ändern Sie im BlackBerry Java Plug-in für Eclipse den BlackBerry-Anwendungsdeskriptor für die Beispielanwendung. Weitere Informationen finden Sie im Handbuch für Entwickler für das BlackBerry Java Plug-in für Eclipse.
  1. Importieren Sie die erforderlichen Klassen und Schnittstellen.
    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. Erstellen Sie das Anwendungsframework durch Erweitern der Application-Klasse. Rufen Sie Phone.addPhoneListener() im Konstruktor auf, um den in Schritt 3 erstellten Listener zu registrieren. Rufen Sie enterEventDispatcher() in main() auf, um die Anwendung zum Empfangen von Ereignissen zu aktivieren.
    public final class MyPhoneScreen extends Application
    {
        public MyPhoneScreen()
        {
            Phone.addPhoneListener(new MyPhoneScreenContent());
        }
        public static void main(String[] args)
        {
            new MyPhoneScreen().enterEventDispatcher();
        }
    }
  3. Erstellen Sie eine Klasse, die die AbstractPhoneListener-Klasse erweitert. Erstellen Sie einen Konstruktor für diese neue Klasse.
    final class MyPhoneScreenContent extends AbstractPhoneListener
    {
        public MyPhoneScreenContent()
        {
        }
    }
  4. Überschreiben Sie AbstractPhoneListener.callIncoming() in der Klasse, die AbstractPhoneListener erweitert. Erstellen Sie eine Instanz der ScreenModel-Klasse. Rufen Sie durch Aufrufen von ScreenModel.getPhoneScreen() eine Instanz des Bildschirms für eingehende Anrufe ab. Übergeben Sie Parameter, um die Ausrichtung des Bildschirms für eingehende Anrufe und den Typ festzulegen, den Sie abrufen möchten. Im folgenden Codebeispiel wird die Hochformatausrichtung des Bildschirms für eingehende Anrufe abgerufen. Da Geräte mit Touchscreens Hoch- und Querformat unterstützen, übergeben Sie den Parameter PhoneScreen.LANDSCAPE, um den Bildschirm für eingehende Anrufe im Querformat zu verwenden.
    public void callIncoming(int callId)
    {
        ScreenModel screenModel = new ScreenModel(callId);
        PhoneScreen phoneScreenPortrait = screenModel.getPhoneScreen(PhoneScreen.PORTRAIT, PhoneScreen.INCOMING);
    }
  5. Erstellen Sie unter callIncoming() benutzerdefinierten Inhalt, der dem Anrufbildschirm hinzugefügt werden soll. Im folgenden Codebeispiel wird Text über Bezeichnungsfelder zum Bildschirm für eingehende Anrufe hinzugefügt. Überschreiben Sie LabelField.paint(), um die Farbe des Bezeichnungsfelds zu ändern.
    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. Legen Sie unter callIncoming() die Schriftart für den benutzerdefinierten Inhalt fest. Im folgenden Codebeispiel wird die Schriftart des Anrufbildschirms verwendet. Rufen Sie PhoneScreen.getCallerInfoFont() auf, um die Schriftart zu erhalten, die vom Anrufbildschirm verwendet wird. Rufen Sie Field.setFont() auf, und übergeben Sie die Anrufbildschirmschriftart, um die Schriftart für die in Schritt 5 erstellten Bezeichnungsfelder festzulegen. Rufen Sie PhoneScreen.add() auf, um dem Anrufbildschirm die Bezeichnungsfelder hinzuzufügen.
    labelField1.setFont(phoneScreenPortrait.getCallerInfoFont());
    labelField2.setFont(phoneScreenPortrait.getCallerInfoFont());
    phoneScreenPortrait.add(labelField1);
    phoneScreenPortrait.add(labelField2);
  7. Rufen Sie unter callIncoming() ScreenModel.sendAllDataToScreen() auf, um dem Bildschirm für eingehende Anrufe den benutzerdefinierten Inhalt hinzuzufügen.
    screenModel.sendAllDataToScreen();

Codebeispiel: Anzeigen von Inhalten auf einem Telefonbildschirm

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

Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.