2016-12-13 4 views

Antwort

4

Bmx280 können Sie direkt mit dem Sensor peripheren interagieren, so dass Sie manuell Temperaturproben aus lesen kann:

private Bmx280 bmx280; 

try { 
    bmx280 = new Bmx280(i2cBusName); 
    bmx280.setTemperatureOversampling(Bmx280.OVERSAMPLING_1X); 
    float temperature = bmx280.readTemperature(); 
} catch (IOException e) { 
    // handle errors 
} 

// remember to close bmx280 later 

Bmx280SensorDriver soll mit dem System registriert sein. In diesem Fall interagieren Sie nicht mit der Hardware direkt, anstatt Sie den Standard-Android verwenden SensorManager APIs für Temperaturmessungen zu hören:

private Bmx280SensorDriver sensorDriver; 
private SensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 

try { 
    sensorDriver = new Bmx280SensorDriver(BoardDefaults.getI2cBus()); 
    sensorManager.registerDynamicSensorCallback(mDynamicSensorCallback); 
    sensorDriver.registerTemperatureSensor(); 
} catch (IOException e) { 
    // handle errors 
} 

private SensorManager.DynamicSensorCallback mDynamicSensorCallback 
     = new SensorManager.DynamicSensorCallback() { 
    @Override 
    public void onDynamicSensorConnected(Sensor sensor) { 
     if (sensor.getType() == Sensor.TYPE_AMBIENT_TEMPERATURE) { 
      // Our sensor is connected. Start receiving temperature data. 
      sensorManager.registerListener(mTemperatureListener, sensor, 
        SensorManager.SENSOR_DELAY_NORMAL); 
     } 
    } 

    /* other callbacks omitted */ 
}; 

// remember to unregister and close sensorDriver later 

Der Vorteil der letzteren Methode ist, dass das Gerät andere Möglichkeiten haben könnte Sensorwerte zu generieren , so müssen Sie sich nicht nur auf die Bmx280 verlassen, falls etwas anderes bessere Messwerte liefert, oder die Bmx280 funktioniert nicht mehr. (Sie können sich das wie den fusionierten Location-Provider von Android vorstellen; Standortdaten können von verschiedenen Anbietern unter anderen Bedingungen, und das System versucht, zu jedem Zeitpunkt die besten Informationen zu melden.) Außerdem kümmert sich das System um die Abfrage der Sensordaten, sodass Sie keine eigene Logik dafür erstellen müssen.

TL; DR - Wenn Sie Sensordaten bei Bedarf manuell lesen möchten, können Sie Bmx280 direkt verwenden. Wenn Sie regelmäßige Abfragen der Sensorwerte wünschen und sich nicht darum kümmern, was die Daten generiert, verwenden Sie Bmx280SensorDriver und die SensorManager APIs.

Verwandte Themen