android:位置传感器——使用近程传感器
近程传感器可让您确定物体与设备的距离。以下代码展示如何获取默认近程传感器的实例:
private SensorManager sensorManager;
private Sensor sensor;
...
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
近程传感器通常用于确定人的头部距手持设备表面的距离(例如,当用户拨打或接听电话时)。大多数近程传感器返回以厘米为单位的绝对距离,但有些仅返回近距离和远距离值。以下代码展示如何使用近程传感器:
public class SensorActivity extends Activity implements SensorEventListener {
private SensorManager sensorManager;
private Sensor proximity;
@Override
public final void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
proximity = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
}
@Override
public final void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public final void onSensorChanged(SensorEvent event) {
float distance = event.values[0];
}
@Override
protected void onResume() {
super.onResume();
sensorManager.registerListener(this, proximity, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
super.onPause();
sensorManager.unregisterListener(this);
}
}
注意:某些传感器返回二进制值来表示“近”或“远”。在这种情况下,传感器通常会在远距离状态下报告其最大范围值,而在近距离状态下报告较小的值。通常,远距离值是一个大于 5 cm 的值,但这可能因传感器而异。您可以使用 getMaximumRange() 方法确定传感器的最大范围。
|