安卓获取传感器步骤:
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); } }