Android 传感器使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/luzhiquanandroid/article/details/52886312
1.获取手机上的所有的传感器
 
    
  1.     SensorManager sensorManager=(SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
  2.     List<Sensor> sensorList=sensorManager.getSensorList(Sensor.TYPE_ALL);
  3.     for(Sensor sensor:sensorList){
  4.         Log.e(sensor.getName()+"----");
  5.    }
加速度传感器:LSM330 3-axis Accelerometer  



磁场传感器:AK09911 3-axis Magnetic field sensor



方向传感器:iNemo Orientation  sensor



光传感器:Light sensor



近程传感器:Proximity sensor



陀螺仪传感器:LSM330 Gyroscope sensor



重力传感器:iNemo Gravity sensor



线性加速度传感器:iNemo Linear Acceleration sensor



旋转向量传感器:iNemo Rotation Vector sensor



华为自带的传感器:
传感器名字:huawei hall sensor
传感器名字:huawei step counter


传感器更新速率:
SensorManager.SENSOR_DELAY_FASTEST:
         指定可能最快的传感器更新速率
 
SensorManager.SENSOR_DELAY_GAME:
         指定适合在游戏中使用的更新速率
 
SensorManager.SENSOR_DELAY_NORMAL:
         指定默认的更新速率
 
SensorManager.SENSOR_DELAY_UI:
         指定适合于更新UI的更新速率


 
   
  1. public class Main extends Activity implements SensorEventListener
  2. {
  3. private TextView tvAccelerometer;
  4. private TextView tvMagentic;
  5. private TextView tvLight;
  6. private TextView tvOrientation;
  7. private TextView tvSensors;
  8. @Override
  9. public void onCreate(Bundle savedInstanceState)
  10. {
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.main);
  13. // 获得SensorManager对象
  14. SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
  15. // 注册加速度传感器
  16. sensorManager.registerListener(this,
  17. sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
  18. SensorManager.SENSOR_DELAY_FASTEST);
  19. // 注册磁场传感器
  20. sensorManager.registerListener(this,
  21. sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
  22. SensorManager.SENSOR_DELAY_FASTEST);
  23. // 注册光线传感器
  24. sensorManager.registerListener(this,
  25. sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),
  26. SensorManager.SENSOR_DELAY_FASTEST);
  27. // 注册方向传感器
  28. sensorManager.registerListener(this,
  29. sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
  30. SensorManager.SENSOR_DELAY_FASTEST);
  31. tvAccelerometer = (TextView) findViewById(R.id.tvAccelerometer);
  32. tvMagentic = (TextView) findViewById(R.id.tvMagentic);
  33. tvLight = (TextView) findViewById(R.id.tvLight);
  34. tvOrientation = (TextView) findViewById(R.id.tvOrientation);
  35. tvSensors = (TextView)findViewById(R.id.tvSensors);
  36. // 获得当前手机支持的所有传感器
  37. List sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
  38. for(Sensor sensor:sensors)
  39. {
  40. // 输出当前传感器的名称
  41. tvSensors.append(sensor.getName() + "\n");
  42. }
  43. }
  44. @Override
  45. public void onSensorChanged(SensorEvent event)
  46. {
  47. // 通过getType方法获得当前传回数据的传感器类型
  48. switch (event.sensor.getType())
  49. {
  50. case Sensor.TYPE_ACCELEROMETER: // 处理加速度传感器传回的数据
  51. String accelerometer = "加速度\n" + "X:" + event.values[0] + "\n"
  52. + "Y:" + event.values[1] + "\n" + "Z:" + event.values[2] + "\n";
  53. tvAccelerometer.setText(accelerometer);
  54. break;
  55. case Sensor.TYPE_LIGHT: // 处理光线传感器传回的数据
  56. tvLight.setText("亮度:" + event.values[0]);
  57. break;
  58. case Sensor.TYPE_MAGNETIC_FIELD: // 处理磁场传感器传回的数据
  59. String magentic = "磁场\n" + "X:" + event.values[0] + "\n" + "Y:"
  60. + event.values[1] + "\n" + "Z:" + event.values[2] + "\n";
  61. tvMagentic.setText(magentic);
  62. break;
  63. case Sensor.TYPE_ORIENTATION: // 处理方向传感器传回的数据
  64. String orientation = "方向\n" + "X:" + event.values[0] + "\n"
  65. + "Y:" + event.values[1] + "\n" + "Z:" + event.values[2] + "\n";
  66. tvOrientation.setText(orientation);
  67. break;
  68. }
  69. }
  70. @Override
  71. public void onAccuracyChanged(Sensor sensor, int accuracy)
  72. {
  73. }
  74. }

猜你喜欢

转载自blog.csdn.net/luzhiquanandroid/article/details/52886312