2010-08-30 72 views
1

我想讀的接近傳感器的狀態(也我tryed讀光傳感器......)使用下面的代碼:的Android SENSOR_PROXIMITY/SENSOR_LIGHT對摩托羅拉Droid(里程碑)

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    txtStatus = (TextView)findViewById(R.id.txtStatus); 
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    sensorManager.registerListener(this, SensorManager.SENSOR_PROXIMITY); 
} 

@Override 
protected void onStart() { 
    super.onStart(); 
    sensorManager.registerListener(this, SensorManager.SENSOR_LIGHT); 
} 

@Override 
public void onResume(){ 
    super.onResume(); 
    sensorManager.registerListener(this, SensorManager.SENSOR_LIGHT); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    sensorManager.unregisterListener(this, SensorManager.SENSOR_LIGHT); 
} 

當傳感器發生變化時(當我嘗試讀取加速度計時,txtStatus可以工作...),但是當我阻擋光線傳感器時,什麼都不會發生。

當我在通話中時,傳感器工作(當我用手擋住傳感器時屏幕關閉)。

我在這裏失去了一些東西?

問候, 安德烈

回答

2

哦,我使用的是registerListener錯誤的參數...

,而不是

sensorManager.registerListener(this, SensorManager.SENSOR_LIGHT); 

使用:

sensorManager.registerListener(sensorEventListener, sensorManager 
       .getDefaultSensor(Sensor.TYPE_PROXIMITY), 
       SensorManager.SENSOR_DELAY_FASTEST); 

現在的作品!

0

這是你的全部代碼嗎?我猜你有下面的代碼來實現SensorEventListener

@Override 
public void onSensorChanged(SensorEvent event) { 
    if (event.sensor.getType() == Sensor.TYPE_LIGHT) { 
     Log.i(TAG, "Light Change :" + event.values[0]); 
    } 
    if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) { 
     Log.i(TAG, "PROXIMITY Change :" + event.values[0]); 
    } 
} 

此外,你爲什麼註冊您的傳感器,那麼多的TI

相關問題