Android:一个传感器,多个传感器evnt监听器
我知道在Android中,可以在不同的传感器上注册相同的传感器事件监听器,但我的问题是:是否可以在同一传感器上注册多个传感器事件监听器?谢谢Android:一个传感器,多个传感器evnt监听器,android,sensors,android-sensors,Android,Sensors,Android Sensors,我知道在Android中,可以在不同的传感器上注册相同的传感器事件监听器,但我的问题是:是否可以在同一传感器上注册多个传感器事件监听器?谢谢 SensorDataLogger sensorDataLogger = new SensorDataLogger(); GaitRecognition gaitRecognition = new GaitRecognition(); sensorManager.registerListener(sensorDataLogger, sen
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
这是传感器数据记录器类:
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");
}
}是的,它保留一个侦听器列表,一旦生成事件,列表中的所有侦听器都会得到通知。
如果您提供一些代码示例,我可以帮助您获得实现这一目标所需的代码,但如果您已经知道如何注册事件侦听器,请对所有侦听器执行相同的操作。如果您提供一些代码示例,请查看传感器工作。我可以帮助您实现这一点所需的代码。如果您已经知道如何注册一个事件侦听器,只需对所有侦听器执行相同的操作。
您没有为侦听器提供代码,但它似乎是正确的。如果它对您有效,请将此答案标记为已接受,否则请告诉我您得到了什么错误/错误谢谢不,我没有得到任何错误。不管怎样,你能看看我的代码吗?我向您提供sensordatalogger类抱歉,再问一个问题:我已经以不同的速度注册了两个不同的侦听器。对吗?我可以这样做吗?是的,这只是对系统的一个“提示”,它应该定义它接收事件的速度(因为它会遍历一个列表)。