您的位置:首页 > 移动开发 > Android开发

Android监控传感器参考代码

2017-03-10 21:26 239 查看
安卓获取传感器步骤:

1.通过
getSystemServie(Context.SENSOR_SERVICE)
获取到传感器的管理者
SensorManager


2.通过管理者的
getDefaultSensor(Sensor.传感器名称)
获取到不同的传感器对象
Sersor


3.新建一个
SensorEventListener
监听器重写方法,写入需要回调的代码

4.通过管理者的
registerListener(lisener,sensormanager,刷新频率)
去注册一个监听器

5.通过管理者的
unregisterlistenr(lisener)
去注销监听器

具体代码如下:

光感

public class MainActivity extends AppCompatActivity {

//对传感器进行监听
private SensorEventListener listener = new SensorEventListener() {
//传感器精度发生变化的时候
@Override
public void onSensorChanged(SensorEvent event) {
float value = event.values[0];//提取数据
tv.setText("当前的灯光:" + value);
}
//传感器数值发生改变的时候
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}
};;
private TextView tv;

//创建SensorManager的实例
private SensorManager sensorManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
//通过管理器获取指定的传感器类型,当前获取的是灯光传感器
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

//通过管理者注册,让系统知道咱们需要去监控传感器
sensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_NORMAL);

//获取控件
tv = (TextView) findViewById(R.id.light_level);
}

@Override
protected void onDestroy() {
super.onDestroy();

//活动结束 注销监听
sensorManager.unregisterListener(listener);

}
}


重力加速度

public class JiasuduActivity extends AppCompatActivity {

private TextView tv;
private SensorManager sensorManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv = (TextView) findViewById(R.id.light_level);

sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

sensorManager.registerListener(sensorEventListener,sensor,SensorManager.SENSOR_DELAY_NORMAL);
}

private SensorEventListener sensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {

//event里保存的是手机x,y,z的坐标,具体可以去网上看看图片
int x = (int) Math.abs(event.values[0]);
int y = (int) Math.abs(event.values[1]);
int z = (int) Math.abs(event.values[2]);

if(x > 15 || y>15 || z>15) {
Toast.makeText(JiasuduActivity.this, "改变:" + x + "," + y + "," + z, Toast.LENGTH_SHORT).show();
}else{
Log.d("test","x:" + x + "y:" + y +"z:"+z);
}
}

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

}
};

@Override
protected void onDestroy() {
super.onDestroy();

sensorManager.unregisterListener(sensorEventListener);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: