Android:一个传感器,更多传感器事件监听器

时间:2014-10-15 15:58:55

标签: android sensor android-sensors

我知道在Android中可以在不同的传感器上注册相同的传感器事件监听器,但我的问题是:是否可以在同一传感器上注册多个传感器事件监听器?感谢

 SensorDataLogger sensorDataLogger = new SensorDataLogger();
    GaitRecognition gaitRecognition = new GaitRecognition();

    sensorManager.registerListener(sensorDataLogger, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);
    sensorManager.registerListener(gaitRecognition, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);

    new Thread(sensorDataLogger).start();
    new Thread(gaitRecognition).start();

SensorDataLogger和GaitRecognition都实现了Runnable和SensorEventListener。

这是SensorDataLogger类:

public class SensorDataLogger implements Runnable, SensorEventListener {

long lastUpdate ;
long count = 0;


File directory, file;

public SensorDataLogger() {

    directory = Utilities.createDirectory("PROVE_CAMPIONI");
    file = Utilities.createFile(directory, "file_logger.txt");
}

@Override
public void run() {

}

@Override
public void onSensorChanged(SensorEvent event) {

  //  Log.d("SensorDataLogger","Sample acquired  "+event.values[0]);
   long sampleTime = System.currentTimeMillis();
    getData(event, sampleTime);
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}


public void getData(SensorEvent event, long sampleTime) {
    float[] values = event.values;

    if(lastUpdate == 0) {
        lastUpdate = sampleTime;
    }
    long diff = sampleTime - lastUpdate;
    count+=diff;
    lastUpdate = sampleTime;

    // Log.e("Sensor data logger","Sample acquired at "+timeStamp+" " +event.values[0]);
    Utilities.writeData(file, Utilities.getTimeInSeconds(count) +", "+values[0]+", "+values[1]+", "+values[2]+"\n");



}

}

2 个答案:

答案 0 :(得分:2)

如果您提供一些代码示例,请查看传感器工作情况。我可以帮助您完成实现这一目标所需的代码。如果您已经知道如何注册事件监听器,那么对所有监听器执行相同的操作。 https://play.google.com/store/apps/details?id=com.splendapp.donottouchmyphone

答案 1 :(得分:0)

是的,它保留了一个监听器列表,一旦生成了一个事件,就会通知列表中的所有监听器。 如果您提供一些代码示例,我可以帮助您获得实现该代码所需的代码,但如果您已经知道如何注册事件侦听器,那么对所有侦听器执行相同的操作。