zoukankan      html  css  js  c++  java
  • Android 传感器简记

    显示所有传感器

    sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    
    List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);
    StringBuilder sb = new StringBuilder();
    
    sb.append("此手机有" + allSensors.size() + "个传感器,分别有:
    
    ");
    for(Sensor s:allSensors){
         switch (s.getType()){
            case Sensor.TYPE_ACCELEROMETER:
                sb.append(s.getType() + " 加速度传感器(Accelerometer sensor)" + "
    ");
                break;
             case Sensor.TYPE_GYROSCOPE:
                sb.append(s.getType() + " 陀螺仪传感器(Gyroscope sensor)" + "
    ");
                break;
             case Sensor.TYPE_LIGHT:
                sb.append(s.getType() + " 光线传感器(Light sensor)" + "
    ");
                break;
             case Sensor.TYPE_MAGNETIC_FIELD:
                sb.append(s.getType() + " 磁场传感器(Magnetic field sensor)" + "
    ");
                break;
             case Sensor.TYPE_ORIENTATION:
                 sb.append(s.getType() + " 方向传感器(Orientation sensor)" + "
    ");
                 break;
             case Sensor.TYPE_PRESSURE:
                 sb.append(s.getType() + " 气压传感器(Pressure sensor)" + "
    ");
                  break;
             case Sensor.TYPE_PROXIMITY:
                  sb.append(s.getType() + " 距离传感器(Proximity sensor)" + "
    ");
                  break;
              case Sensor.TYPE_TEMPERATURE:
                  sb.append(s.getType() + " 温度传感器(Temperature sensor)" + "
    ");
                  break;
              default:
                  sb.append(s.getType() + " 其他传感器" + "
    ");
                  break;
       }
    sb.append(" 设备名称:" + s.getName() + "
     设备版本:" + s.getVersion()
           +"
     设备精度"+ s.getResolution()+"
     设备最大范围"+s.getMaximumRange()
            +"
     设备耗电量"+s.getPower()+"
     供应商:" +s.getVendor() + "
    
    ");
    }
    txt_show.setText(sb.toString());
    

    使用简例

    陀螺仪

    public class OritionSensorActivity extends AppCompatActivity implements SensorEventListener 
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_oritionsensor);
    
        sManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        mSensorOrientation = sManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
        sManager.registerListener(this, mSensorOrientation, SensorManager.SENSOR_DELAY_UI);
    
    }
    
    @Override
    public void onSensorChanged(SensorEvent event) {
        tv_value1.setText("方位角:" + (float) (Math.round(event.values[0] * 100)) / 100);
        tv_value2.setText("倾斜角:" + (float) (Math.round(event.values[1] * 100)) / 100);
        tv_value3.setText("滚动角:" + (float) (Math.round(event.values[2] * 100)) / 100);
    }
    
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    
    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (sManager != null) {
          sManager.unregisterListener(this);
       }
    }
    

    光线传感器

    public class LightSensorActivity extends AppCompatActivity implements SensorEventListener
    
    SensorManager sensorManager ;
    Sensor sensor ;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_lightsensor);
    
            find();
            sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
            sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
            sensorManager.registerListener(this,sensor,sensorManager.SENSOR_DELAY_FASTEST);
        }
    
        @Override
        public void onSensorChanged(SensorEvent sensorEvent) {
            tv_light.setText(sensorEvent.values[0]+"");
            sb_light.setClickable(false);
            sb_light.setProgress((int) sensorEvent.values[0],true);
        }
    
        @Override
        public void onAccuracyChanged(Sensor sensor, int i) {
    
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            if (sensorManager != null) {
                sensorManager.unregisterListener(this);
            }
        }
    
  • 相关阅读:
    排序算法(一)冒泡法
    java是传值还是传引用
    赫夫曼树与赫夫曼编码
    数据结构的相关概念
    字符集和字符编码的区别
    redis为什么选择单线程工作模型
    GET和POST请求的核心区别
    MySQL数据类型及后面小括号的意义
    java中的数据类型
    Jedis无法连接centOS7上的redis
  • 原文地址:https://www.cnblogs.com/Mr-quin/p/8585133.html
Copyright © 2011-2022 走看看