标签:android sensormanager sensor 传感器开发
本文中,笔者给大家分享一下Android中如何进行Android设备传感器开发。
转载请注明作者xiong_it和链接:http://blog.csdn.net/xiong_it/article/details/45917009
public class SensorActivity extends Activity implements SensorEventListener { private SensorManager mSensorManager; private Sensor mSensor; @Override public final void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //第一步:通过getSystemService获得SensorManager实例对象 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); //第二步:通过SensorManager实例对象获得想要的传感器对象:参数决定获取哪个传感器 mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); } //第四步:必须重写的两个方法:onAccuracyChanged,onSensorChanged /** * 传感器精度发生改变的回调接口 */ @Override public final void onAccuracyChanged(Sensor sensor, int accuracy) { //TODO 在传感器精度发生改变时做些操作,accuracy为当前传感器精度 } /** * 传感器事件值改变时的回调接口:执行此方法的频率与注册传感器时的频率有关 */ @Override public final void onSensorChanged(SensorEvent event) { // 大部分传感器会返回三个轴方向x,y,x的event值,值的意义因传感器而异 float x = event.values[0]; float y = event.values[1]; float z = event.values[2]; //TODO 利用获得的三个float传感器值做些操作 } /** * 第三步:在获得焦点时注册传感器并让本类实现SensorEventListener接口 */ @Override protected void onResume() { super.onResume(); /* *第一个参数:SensorEventListener接口的实例对象 *第二个参数:需要注册的传感器实例 *第三个参数:传感器获取传感器事件event值频率: * SensorManager.SENSOR_DELAY_FASTEST = 0:对应0微秒的更新间隔,最快,1微秒 = 1 % 1000000秒 * SensorManager.SENSOR_DELAY_GAME = 1:对应20000微秒的更新间隔,游戏中常用 * SensorManager.SENSOR_DELAY_UI = 2:对应60000微秒的更新间隔 * SensorManager.SENSOR_DELAY_NORMAL = 3:对应200000微秒的更新间隔 * 键入自定义的int值x时:对应x微秒的更新间隔 * */ mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL); } /** * 第五步:在失去焦点时注销传感器 */ @Override protected void onPause() { super.onPause(); mSensorManager.unregisterListener(this); } }
mSensor = mSensorManager.getDefaultSensor(int TYPE);//TYPE为Sensor中定义的static final 值
/** * 获取加速度感应器的常量 */ public static final int TYPE_ACCELEROMETER = 1; /** * 获取磁场感应器的常量 */ public static final int TYPE_FIELD = 2; /** * 获取方向感应器的常量,已过时 */ @Deprecated public static final int TYPE_ORIENTATION = 3; /** * 获取陀螺仪感应器的常量 */ public static final int TYPE_GYROSCOPE = 4; /** * 获取光线感应器的常量 */ public static final int TYPE_LIGHT = 5; /** * 获取压力感应器的常量 */ public static final int TYPE_PRESSURE = 6; @Deprecated public static final int TYPE_TEMPERATURE = 7;//获取温度传感器,已过时 /** * 获取距离感应器的常量 */ public static final int TYPE_PROXIMITY = 8; /** * 获取重力感应器的常量 */ public static final int TYPE_GRAVITY = 9; /** * 获取线性加速度感应器的常量 */ public static final int TYPE_LINEAR_ACCELERATION = 10; /** * 获取旋转矢量感应器的常量 */ public static final int TYPE_ROTATION_VECTOR = 11; /** * 获取相对湿度感应器的常量 */ public static final int TYPE_RELATIVE_HUMIDITY = 12; /** * 获取温度感应器的常量:取缔了public static final int TYPE_TEMPERATURE = 7; */ public static final int TYPE_AMBIENT_TEMPERATURE = 13;
参考链接:http://my.oschina.net/jerikc/blog/167499
转载请注明作者xiong_it和链接:http://blog.csdn.net/xiong_it/article/details/45917009
标签:android sensormanager sensor 传感器开发
原文地址:http://blog.csdn.net/xiong_it/article/details/45917009