距离传感器(ProximitySensor)
P-Sensor距离感应器,可以感应手机和人体距离。具体使用用途是在通话过程中打开P-Sensor,那么当手机屏幕贴近用户脸部时,就会自动感应出手机和人体距离是多少。当小于某一个值时,就会熄灭屏幕,不再接收用户触摸屏幕事件,从而有效的防止通话过程中误触摸事件的出现。
例子1:利用按钮实现切换背景颜色
XML文件
java
public class ButtonBackgroundActivity extends Activity {
//Color调用,建立颜色数据源用
int[] colors = new int[]{Color.BLACK,Color.BLUE,
Color.GREEN,Color.CYAN,Color.YELLOW};
int index=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button_background);
final TextView tv_background = (TextView) findViewById(R.id.tv_background);
Button btn_change_color = (Button) findViewById(R.id.btn_change_color);
btn_change_color.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
index = (index+1)%colors.length; //按照数据顺序输出
tv_background.setBackgroundColor(colors[index]);
}
});
}
}
效果
例子:通过距离传感器改变背景颜色
XML
java
public class ProximityActivityActivity extends Activity {
TextView tv_changecolor_proximity;
int[] colors = new int[]{Color.BLACK,Color.BLUE,
Color.GREEN,Color.CYAN,Color.YELLOW};
int index=0;
SensorManager sm;
Sensor mProximity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_proximity_activity);
//绑定TextView组件
tv_changecolor_proximity = (TextView) findViewById(R.id.tv_changecolor_proximity);
//1.获取SensorManager管理对象
sm=(SensorManager) getSystemService(SENSOR_SERVICE);
//2.获取据传感器对象
mProximity=sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
//3.给Sensor注册监听事件
sm.registerListener(listener, mProximity,SensorManager.SENSOR_DELAY_NORMAL);
}
//监听事件
private SensorEventListener listener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
//获取event接收的数据
float[] values = event.values;
//获取距离传感器的距离
float dis = values[0];
//获取最大距离getMaximumRange(),系统固定值
float maxAccuracy = mProximity.getMaximumRange();
if(dis
tv_changecolor_proximity.setBackgroundColor(Color.BLACK);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
};
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
}
效果::就是人体靠近自动换颜色,离开暂停
|