我知道在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");
}
}
答案 0 :(得分:2)
如果您提供一些代码示例,请查看传感器工作情况。我可以帮助您完成实现这一目标所需的代码。如果您已经知道如何注册事件监听器,那么对所有监听器执行相同的操作。 https://play.google.com/store/apps/details?id=com.splendapp.donottouchmyphone
答案 1 :(得分:0)
是的,它保留了一个监听器列表,一旦生成了一个事件,就会通知列表中的所有监听器。 如果您提供一些代码示例,我可以帮助您获得实现该代码所需的代码,但如果您已经知道如何注册事件侦听器,那么对所有侦听器执行相同的操作。