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 {
// 创建监听器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() 方法确定传感器的最大范围。