简体   繁体   English

Android:一个感应器,更多感应器侦听器

[英]Android: one sensor, more sensor evnt listeners

I know that in Android it is possible to register the same sensor event listener on different sensors, but my question is: is it possible to register more than one sensor event listener on the same sensor? 我知道在Android中可以在不同的传感器上注册相同的传感器事件侦听器,但是我的问题是:在同一个传感器上可以注册多个传感器事件侦听器吗? Thanks 谢谢

 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 and GaitRecognition both implement Runnable and SensorEventListener. SensorDataLogger和GaitRecognition均实现Runnable和SensorEventListener。

This is the SensorDataLogger class: 这是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");



}

} }

Check out sensor work if you provide some code examples. 如果您提供一些代码示例,请检查传感器的工作情况。 I can help you with the code needed to achieve that. 我可以为您提供实现此目标所需的代码。 If you already know how to register an event listener just do the same for all the listeners. 如果您已经知道如何注册事件侦听器,则对所有侦听器都执行相同的操作。 https://play.google.com/store/apps/details?id=com.splendapp.donottouchmyphone https://play.google.com/store/apps/details?id=com.splendapp.donottouchmyphone

Yes, it keeps a list of listeners and once an event is generated, all the listeners on the list are notified. 是的,它保留了侦听器列表,一旦生成事件,便会通知列表中的所有侦听器。 If you provide some code examples I can help you with the code needed to achieve that, but if you already know how to register an event listener just do the same for all the listeners. 如果提供一些代码示例,我可以为您提供实现该代码所需的代码,但是如果您已经知道如何注册事件侦听器,则对所有侦听器都执行相同的操作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM