2014-10-15 4 views
0

나는 안드로이드에서 동일한 센서 이벤트 리스너를 다른 센서에 등록 할 수 있다는 것을 알고 있지만, 내 질문은 동일한 센서 이벤트 리스너를 둘 이상 등록 할 수 있다는 것입니다. 감지기? 감사합니다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

예, 그것은 청취자의 목록을 유지하고 이벤트가 생성되면, 목록에있는 모든 청취자에게 통지합니다. 몇 가지 코드 예제를 제공하는 경우이를 달성하는 데 필요한 코드를 제공하지만 이벤트 청취자를 등록하는 방법을 이미 알고 있다면 모든 청취자에게 동일한 코드 예제를 수행하십시오.

+0

일부 코드를 제공했습니다. 맞다고 생각하니? 감사합니다. – rosekarma

+0

청취자를위한 코드를 제공하지 않았지만 정확합니다. 작동하는 경우이 대답을 수락 된 것으로 표시하십시오. 그렇지 않으면 무엇이 잘못되었거나 오류가 발생했는지 말해주십시오. – TomerZ

+0

감사합니다. 아니오 오류가 발생하지 않습니다. 어쨌든, 내 코드 좀 봐 주시겠습니까? 나는 당신에게 sensordatalogger 클래스를 제공합니다 – rosekarma