android光照、加速度传感器
16lz
2021-01-23
android的光照、加速度传感器
android的传感器,用法大致一致,所以知道一两个的用法,基本都能很轻松的使用其他传感器。
监听接口那需要传三个参数,第一个是listener的实例,第二个是Sensor的实例,第三个是模式,有四种值可选:
SENSOR_DELAY_UI,
SENSOR_DELAY_NORMAL,
SENSOR_DELAY_GAME,
SENSOR_DELAY_FASTEST.
他们的更新速率依次递增.
android中的传感器大致分为:
SENSOR_TYPE_ACCELEROMETER 1 //加速度
SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力
SENSOR_TYPE_ORIENTATION 3 //方向
SENSOR_TYPE_GYROSCOPE 4 //陀螺仪
SENSOR_TYPE_LIGHT 5 //光线感应
SENSOR_TYPE_PRESSURE 6 //压力
SENSOR_TYPE_TEMPERATURE 7 //温度
SENSOR_TYPE_PROXIMITY 8 //接近
SENSOR_TYPE_GRAVITY 9 //重力
SENSOR_TYPE_LINEAR_ACCELERATION 10//线性加速度
SENSOR_TYPE_ROTATION_VECTOR 11//旋转矢量
public class MainActivity extends AppCompatActivity { @Bind(R.id.light_sensor_txt) TextView lightSensorTxt; private SensorManager sensorManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); //获取sensorManager是所有传感器的管理器 sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); /** * 光照传感器,sensor获取光照传感器 * listener监听接口,需要重写两个方法 * registerListener需要注册 */ Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); sensorManager.registerListener(listener_light, sensor, SensorManager.SENSOR_DELAY_FASTEST); /** * 加速传感器,sensor获取加速传感器 * listener监听接口,需要重写两个方法 * registerListener需要注册 */ Sensor sensor_Acceleromeater = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(listener_accelerometer, sensor_Acceleromeater, SensorManager.SENSOR_DELAY_NORMAL); /** * 方向传感器 */ // Sensor sensor_orientation = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); } /** * 程序退出 一定要取消注册,释放资源 */ @Override protected void onDestroy() { super.onDestroy(); if (sensorManager != null) { sensorManager.unregisterListener(listener_light); sensorManager.unregisterListener(listener_accelerometer); } } /** * 加速的传感器监听是有三个数据xyz在value[]数组里面的 * 加速度可以触发微信摇一摇的玩法,把摇一摇逻辑写在里面 */ private SensorEventListener listener_accelerometer = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent sensorEvent) { float xValue = Math.abs(sensorEvent.values[0]); float yValue = Math.abs(sensorEvent.values[1]); float zValue = Math.abs(sensorEvent.values[2]); if(xValue>15||yValue>15||zValue>15){ Toast.makeText(MainActivity.this, "摇一摇呦!", Toast.LENGTH_SHORT).show(); } } /** *传感器精度发生变化才会调用该方法里面 */ @Override public void onAccuracyChanged(Sensor sensor, int i) { } }; /** * 光照监听接口的数据就在value[]数组里面,取出即可 */ private SensorEventListener listener_light = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent sensorEvent) { float value = sensorEvent.values[0]; lightSensorTxt.setText("光照强度:" + value + "lx"); } /** * 传感器精度发生变化才会调用该方法里面 */ @Override public void onAccuracyChanged(Sensor sensor, int i) { } };}
更多相关文章
- Android接口和框架学习
- android中度量坐标 传感器应用的开发
- Android http请求使用接口回调
- Android Adapter 接口中几个方法的研究
- Android framework/base 下添加新的接口
- Sensor传感器源码的阅读与应用开发简单实例
- 带你了解Android接口回调机制
- Android AIDL接口定义语言