我需要從多個傳感器獲取數據。我曾嘗試爲所有傳感器創建單個監聽器,並嘗試爲每個傳感器創建單獨的監聽器。如果添加多於一個傳感器,這兩種方法都不起作用。如果添加了多個傳感器,則傳感器生成的數據無效。有沒有人找到解決這個問題的辦法?Android傳感器問題
這裏是添加傳感器的代碼:
List <Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);
//add sensor listeners
for(Sensor curSensor : sensorList){
sensorManager.registerListener(sensorListener,
curSensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
下面是響應於傳感器的變化的代碼:
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorListener = new SensorEventListener(){
@Override
public void onAccuracyChanged(Sensor arg0, int arg1){
}
@Override
public void onSensorChanged(SensorEvent event){
sensorValues.put(Integer.valueOf(event.sensor.getType()),event.values);
updateDisplayValues();
}
};
最後,這裏是更新顯示的代碼:
private void updateDisplayValues(){
Enumeration<Integer> keys = sensorValues.keys();
int curIndex = 0;
while(keys.hasMoreElements()){
Integer key = keys.nextElement();
String curStringForKey = getStringForKey(key);
if(curStringForKey==null)continue;
float [] value = sensorValues.get(key);
if(key==TYPE_ORIENTATION){
ValueDisplay[curIndex].setText(curStringForKey + ": " + getResources().getConfiguration().orientation);
}else{
String stringToPrint = new String();
int paramLength = value.length;
for(int i = 0; i <paramLength; i++)
stringToPrint += value[i]+", ";
ValueDisplay[curIndex].setText(curStringForKey + ": " + stringToPrint);
}
curIndex ++;
}
}
嗯,發佈你的代碼,以便我們可以看到你在做什麼。我之前沒有聽說過這個問題:[有沒有辦法在Android中檢索多個傳感器數據](http://stackoverflow.com/q/4343342/1267661)。 – Sam
'sensorValues'是什麼數據類型? – Sam
它是這樣聲明的:private volatile Hashtable sensorValues; –
user1832287