2015-08-30 130 views
0

我正在使用接近傳感器來增加一個TextView中的數字,它的工作,但它是以兩個增量觸發的,即0 2 4 6 8。我想得到一個增量,可能嗎?使用接近傳感器與onSensorChanged

TextView text ; 
SensorManager sm ; 
Sensor Proxsens; 
int i=0 ; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    text =(TextView)findViewById(R.id.text_id); 
    sm = (SensorManager)getSystemService(SENSOR_SERVICE); 
    Proxsens = sm.getDefaultSensor(Sensor.TYPE_PROXIMITY); 

    sm.registerListener(this,Proxsens,SensorManager.SENSOR_DELAY_NORMAL); 

} 

@Override 
public void onSensorChanged(SensorEvent event) { 

    text.setText(String.valueOf(i)); 
    i++; 
// text.setText(String.valueOf(event.values[0])); 
} 

@Override 
public void onAccuracyChanged(Sensor sensor, int accuracy) { 

} 
+1

沒有「解決方案」,它這樣做,因爲'onSensorChanged'被稱爲兩次連續,因爲系統在計算一排2度的變化。你可以仔細檢查一下這個行爲,但是在回調中加入一個'Log.d(...')行。如果你仍然希望'TextView'變慢,可以使用幾種不同的debounce技術。 – Budius

回答

-1
@Override 
public void onSensorChanged(SensorEvent event){ 
    if (event.values[0] == 0) { 
     text.setText(String.valueOf(i)); 
     i++; 
    } 
}