Benachrichtigen einer Anwendung über den Zustand von Sensoränderungen

  1. Importieren Sie die erforderlichen Klassen und Schnittstellen.
    import net.rim.device.api.system.Sensor;
    import net.rim.device.api.system.SensorListener;
  2. Erstellen Sie eine Klasse, die die SensorListener-Schnittstelle implementiert.
    class SensorDemoScreen extends MainScreen implements SensorListener
    {
    }
  3. Implementieren Sie die SensorListener.onSensorUpdate()-Klasse, und führen Sie Aktionen basierend auf dem Sensortyp (der erste Parameter der Methode) und dem neuen Zustand des Sensors (der zweite Parameter) aus. Das folgende Codebeispiel prüft den Zustand des Schiebereglers an einem BlackBerry-Gerät.
    public void onSensorUpdate(int sensorID, int update)
    {
        if (sensorID == Sensor.SLIDE)
        {
            if (update == Sensor.STATE_SLIDE_OPEN)
            {
                // do something if slider is now open
                statusField.setText("Slider is now open.");
            }
            else if (update == Sensor.STATE_SLIDE_IN_TRANSITION) 
            {
                // do something if slider is now in transition
                statusField.setText("Slider state is now in transition.");
            }
            else if (update == Sensor.STATE_SLIDE_CLOSED)
            {
                // do something if slider is now closed
                statusField.setText("Slider is now closed.");
            }
        }
    }
  4. Rufen Sie SensorListener.addListener() auf, um den Listener zu Ihrer Anwendung hinzuzufügen. Legen Sie die Anwendung, den hinzuzufügenden Listener und die Art der Sensoränderungen fest, die abgefragt werden sollen. Das folgende Codebeispiel fügt einen Listener für Schieberegleränderungen zur aktuellen Anwendung hinzu. Sie können Sensor.removeListener() aufrufen, um einen Listener zu entfernen.
    Sensor.addListener(Application.getApplication(), this, Sensor.SLIDE);
  5. Um für Änderungen an mehreren Sensoren abzufragen, aktualisieren Sie das dritte Argument für addListener(), um zusätzliche Sensorzustandskennzeichnungen hinzuzufügen. Das folgende Codebeispiel fragt Änderungen zum Flipcoversensor oder Schiebereglersensor ab.
    Sensor.addListener(Application.getApplication(), this, Sensor.FLIP | Sensor.SLIDE);

Codebeispiel: Abfragen von Zustandsänderungen des Schiebereglers des Geräts

class SensorDemoScreen extends MainScreen implements SensorListener
{
    private RichTextField statusField;
    public SensorDemoScreen()
    {   
        setTitle("Sensor Demo");
        statusField = new RichTextField();
        add(statusField);
        Sensor.addListener(Application.getApplication(), this, Sensor.SLIDE);
    }
    public void onSensorUpdate(int sensorID, int update)
    {
        if (sensorID == Sensor.SLIDE)
        {
            if (update == Sensor.STATE_SLIDE_OPEN)
            {
                // do something if slider is now open
                statusField.setText("Slider is now open.");
            }
            else if (update == Sensor.STATE_SLIDE_IN_TRANSITION) 
            {
                // do something if slider is now in transition
                statusField2.setText("Slider state is now in transition.");
            }
            else if (update == Sensor.STATE_SLIDE_CLOSED)
            {
                // do something if slider is now closed
                statusField.setText("Slider is now closed.");
            }
        }
    }
}

Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.