精华内容
下载资源
问答
  • android获取传感器信息
    2021-06-05 11:00:55

    1)压力传感器返回当前的压强,单位是百帕斯卡hectopascal(hPa)。

    2)具体代码如下

    package com.example.androidapp;

    import android.hardware.Sensor;

    import android.hardware.SensorEvent;

    import android.hardware.SensorEventListener;

    import android.hardware.SensorManager;

    import android.os.Bundle;

    import android.app.Activity;

    import android.view.Menu;

    import android.view.View;

    import android.widget.Button;

    import android.widget.TextView;

    public class MainActivity extends Activity {

    private SensorManager mSensorManager=null;

    private Sensor mSensor=null;

    private TextView textView1=null;

    private Button button1=null;

    private Button button2=null;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    textView1=(TextView)findViewById(R.id.textView1);

    /*获取系统服务(SENSOR_SERVICE)返回一个SensorManager对象*/

    mSensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);

    /*通过SensorManager获取相应的(压力传感器)Sensor类型对象*/

    mSensor=mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);

    /*注册相应的SensorService*/

    button1=(Button)findViewById(R.id.button1);

    button1.setOnClickListener(new Button.OnClickListener() {

    @Override

    public void onClick(View arg0) {

    mSensorManager.registerListener(mSensorEventListener, mSensor

    , SensorManager.SENSOR_DELAY_NORMAL);

    }

    });

    /* 销毁相应的SensorService

    * 很关键的部分,注意,说明文档中提到,即使Activity不可见的时候,感应器依然会继续工作

    * 所以一定要关闭触发器,否则将消耗用户大量电量*/

    button2=(Button)findViewById(R.id.button2);

    button2.setOnClickListener(new Button.OnClickListener() {

    @Override

    public void onClick(View v) {

    mSensorManager.unregisterListener(mSensorEventListener, mSensor);

    }

    });

    }

    /*声明一个SensorEventListener对象用于侦听Sensor事件,并重载onSensorChanged方法*/

    private final SensorEventListener mSensorEventListener=new SensorEventListener() {

    @Override

    public void onSensorChanged(SensorEvent event) {

    if(event.sensor.getType()==Sensor.TYPE_PRESSURE){

    /*压力传感器返回当前的压强,单位是百帕斯卡hectopascal(hPa)。*/

    float pressure=event.values[0];

    textView1.setText(String.valueOf(pressure)+"hPa");

    }

    }

    @Override

    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    // TODO Auto-generated method stub

    }

    };

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.

    getMenuInflater().inflate(R.menu.main, menu);

    return true;

    }

    }

    更多相关内容
  • Android 如何获取传感器的数据

    万次阅读 2021-08-24 14:55:37
    Android 提供了对设备传感器的支持,只要 Android 设备的硬件提供了这些传感器Android 应用可以通过传感器获取设备的外界条件,包括手机的运行状态、当前摆放的方向等。Android 系统还提供了驱动程序去管理这些...

    1 传感器简介

    传感器 Sensor 是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
    Android 提供了对设备传感器的支持,只要 Android 设备的硬件提供了这些传感器,Android 应用可以通过传感器来获取设备的外界条件,包括手机的运行状态、当前摆放的方向等。Android 系统还提供了驱动程序去管理这些传感器硬件,可以通过监听器的方式监听传感器硬件感知到的外部环境的变化。Android 平台支持三大类传感器:

    类别传感器说明
    运动传感器TYPE_ACCELEROMETER加速度传感器,基于硬件
    TYPE_GRAVITY重力传感器,基于硬件或软件
    TYPE_GYROSCOPE陀螺仪传感器,基于硬件
    TYPE_ROTATION_VECTOR旋转矢量传感器,基于硬件或软件
    TYPE_LINEAR_ACCELERATION线性加速度传感器,基于硬件或软件
    位置传感器TYPE_MAGNETIC_FIELD磁力传感器,基于硬件
    TYPE_ORIENTATION方向传感器,基于软件
    TYPE_PROXIMITY距离传感器,基于硬件
    环境传感器TYPE_LIGHT光线感应传感器,基于硬件
    TYPE_PRESSURE压力传感器,基于硬件
    TYPE_TEMPERATURE温度传感器,基于硬件
    有些传感器基于硬件,有些基于软件。基于硬件的传感器是内置在手机或平板设备中的物理组件。这类传感器通过直接测量特定的环境属性(如加速度、地磁场强度或角度变化)来采集数据。基于软件的传感器不是物理设备,它们只是模仿基于硬件的传感器。基于软件的传感器从一个或多个基于硬件的传感器获取数据,有时被称为虚拟传感器或合成传感器。比如线性加速度传感器和重力传感器就是基于软件的传感器。

    传感器弃用说明:

    • Android 2.2(API 级别 8)已弃用方向传感器,Android 4.4W(API 级别 20)已弃用此传感器类型
      TYPE_ORIENTATION。替代方法见后面示例代码。
    • 温度传感器已在 Android 4.0(API 级别 14)中弃用,不同设备具有不同的实现。

    2 传感器的使用

    2.1 获取传感器服务

    Android 中内置了很多系统级的服务,用于给开发人员使用,而传感器也是通过传感器服务 SensorManager 来管理的。而在 Android 组件中获取系统服务,使用方法 Context.getSystemService(String) 即可,它的参数均以 static final 的方式定义在 Context 中,而获取 SensorManager 需要传入 Context.SENSOR_SERVICE。

    SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    

    2.2 获取待监听的传感器

    传感器服务管理设备上所有的传感器,所以需要获取待监听的传感器。
    可以通过在 getSensorList() 方法中传入 TYPE_ALL 来获取设备上的所有传感器:

    List<Sensor> deviceSensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
    

    也可以通过指定的 type 参数获取到相对应的传感器,如果设备上有多个特定类型的传感器,则必须将其中一个指定为默认传感器。如果没有指定默认传感器,则该方法调用会返回 null,这表示设备没有该类型的传感器。

    Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    

    注意使用前先判断传感器是否存在。

    • 运行时检测。
    if (sensor != null) {
        //传感器存在
    } else {
        //传感器不存在
    }
    
    • 使用清单文件来限定目标设备必须带有指定传感器配置。
    <uses-feature
        android:name="android.hardware.sensor.accelerometer"
        android:required="true" />
    

    对于某一个传感器,它的一些具体信息的获取方法如下:

    • getMaximumRange() 最大取值范围
    • getName() 设备名称
    • getPower() 功率
    • getResolution() 精度
    • getType() 传感器类型
    • getVentor() 设备供应商
    • getVersion() 设备版本号

    2.3 注册传感器的监听器

    获得 SensorManager 和 Sensor 对象之后,就可以为其 Sensor 注册监听器了。为传感器注册监听器,使用 SensorManager.registerListener() 方法即可,它存在多个重载方法,但是有些方法已经过时了,下面提供一个常用的方法:

    boolean registerListener(SensorEventListener listener,Sensor sensor,int rateUs)
    

    上面方法参数的意义:listener:传感器的监听器、sensor:待监听的传感器、rateUs:传感器的采样率。
    从 registerListener() 方法可以看出,它需要传递一个 SensorEventListener 对象,它就是传感器的监听器,其中包含两个方法,需要开发人员去实现它:

    • void onSensorChanged(SensorEvent event):当传感器感应的值发生变化时回调。
    • void onAccuracyChanged(Sensor sensor,int accuracy):当传感器精度发生变化时回调。
      对于上面两个方法,传感器的精度一般是不会发生改变的,所以我们一般主要的代码量在 onSensorChanged()中。

    在 onSensorChanged(SensorEvent event) 方法中有一个参数 event,通过 event 可以获取传感器的类型以及传感器的数据。

    • 获取传感器的类型:event.sensor.getType()
    • 获取传感器的数据:event.values[i],i为0,1,2…,不同传感器,event.values[i] 对应的数据不同。以加速度传感器为例,values[0] 表示x轴上的加速度,values[1] 表示y轴上的加速度,values[2] 表示z轴上的加速度。
      Sensor API 使用的坐标系

    registerListener() 方法还有一个 rateUs 的参数,它表示监听传感器改变的采样率,就是从传感器获取值的频率。它被定义以 static final 的形式定义在 SensorManager 中,方便我们直接使用,它定义了如下几个参数:

    参数延时说明
    SensorManager.SENSOR_DELAY_FASTEST0ms一般不是特别敏感的处理不推荐使用,该种模式可能造成手机电力大量消耗,由于传递的为原始数据,算法不处理好将会影响游戏逻辑和 UI 的性能。
    SensorManager.SENSOR_DELAY_GAME20ms一般绝大多数的实时性较高的游戏都使用该级别。
    SensorManager.SENSOR_DELAY_UI60ms适合普通用户界面 UI 变化的频率,相对节省电能和逻辑处理,一般游戏开发中不使用。
    SensorManager.SENSOR_DELAY_NORMAL200ms对于一般的益智类或 EASY 级别的游戏可以使用,但过低的采样率可能对一些赛车类游戏有跳帧现象。

    Android 为我们提供了这几个采样率的参数,方便我们使用。但对于选择那种采样率而言,并不是越快越好,要参照实际开发的应用的情况来说,采样率越大,将越耗费资源,包括电量、CPU 等,所以要根据实际情况选择,毕竟再强大的应用,如果造成设备续航能力的降低,也是会被用户所不喜的。

    2.4 注销传感器的监听器

    当使用完传感器之后,需要为其注销监听器,因为传感器的监听器并不会因为应用的结束而自行释放资源,需要开发人员在适当的时候主动注销。注销传感器监听器使用 SensorManager.unregisterListener() 方法即可,和监听器的注册方法一样,它也具有多个重载的方法,但是有一些已经被弃用了,下面介绍一个常用的:

    void unregisterListener(SensorEventListener listener)
    

    3 示例代码

    Java 代码如下:

    public class MainActivity extends AppCompatActivity {
        private final String TAG = "sensor-sample";
        private TextView mAccelerometerSensorTextView;
        private TextView mMagneticSensorTextView;
        private TextView mGyroscopeSensorTextView;
        private TextView mOrientationSensorTextView;
        private SensorManager mSensorManager;
        private MySensorEventListener mMySensorEventListener;
        private float[] mAccelerometerReading = new float[3];
        private float[] mMagneticFieldReading = new float[3];
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mAccelerometerSensorTextView = findViewById(R.id.accelerometer_sensor);
            mMagneticSensorTextView = findViewById(R.id.magnetic_sensor);
            mGyroscopeSensorTextView = findViewById(R.id.gyroscope_sensor);
            mOrientationSensorTextView = findViewById(R.id.orientation_sensor);
    
            this.mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
            this.mMySensorEventListener = new MySensorEventListener();
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            if (mSensorManager == null) {
                return;
            }
    
            Sensor accelerometerSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
            if (accelerometerSensor != null) {
                //register accelerometer sensor listener
                mSensorManager.registerListener(mMySensorEventListener, accelerometerSensor, SensorManager.SENSOR_DELAY_UI);
            } else {
                Log.d(TAG, "Accelerometer sensors are not supported on current devices.");
            }
    
            Sensor magneticSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
            if (magneticSensor != null) {
                //register magnetic sensor listener
                mSensorManager.registerListener(mMySensorEventListener, magneticSensor, SensorManager.SENSOR_DELAY_UI);
            } else {
                Log.d(TAG, "Magnetic sensors are not supported on current devices.");
            }
    
            Sensor gyroscopeSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
            if (gyroscopeSensor != null) {
                //register gyroscope sensor listener
                mSensorManager.registerListener(mMySensorEventListener, gyroscopeSensor, SensorManager.SENSOR_DELAY_UI);
            } else {
                Log.d(TAG, "Gyroscope sensors are not supported on current devices.");
            }
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            if (mSensorManager == null) {
                return;
            }
            //unregister all listener
            mSensorManager.unregisterListener(mMySensorEventListener);
        }
    
        /*
        This orientation sensor was deprecated in Android 2.2 (API level 8), and this sensor type was deprecated in Android 4.4W (API level 20).
        The sensor framework provides alternate methods for acquiring device orientation.
         */
        private void calculateOrientation() {
            final float[] rotationMatrix = new float[9];
            SensorManager.getRotationMatrix(rotationMatrix, null, mAccelerometerReading, mMagneticFieldReading);
    
            final float[] orientationAngles = new float[3];
            SensorManager.getOrientation(rotationMatrix, orientationAngles);
            Log.d(TAG, "orientation data[x:" + orientationAngles[0] + ", y:" + orientationAngles[1] + ", z:" + orientationAngles[2] + "]");
            mOrientationSensorTextView.setText("[x:" + orientationAngles[0] + ", y:" + orientationAngles[1] + ", z:" + orientationAngles[2] + "]");
        }
    
        private class MySensorEventListener implements SensorEventListener {
            @Override
            public void onSensorChanged(SensorEvent event) {
                if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
                    mAccelerometerReading = event.values;
                    Log.d(TAG, "accelerometer data[x:" + event.values[0] + ", y:" + event.values[1] + ", z:" + event.values[2] + "]");
                    mAccelerometerSensorTextView.setText("[x:" + event.values[0] + ", y:" + event.values[1] + ", z:" + event.values[2] + "]");
                } else if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
                    mMagneticFieldReading = event.values;
                    Log.d(TAG, "magnetic data[x:" + event.values[0] + ", y:" + event.values[1] + ", z:" + event.values[2] + "]");
                    mMagneticSensorTextView.setText("[x:" + event.values[0] + ", y:" + event.values[1] + ", z:" + event.values[2] + "]");
                } else if (event.sensor.getType() == Sensor.TYPE_GYROSCOPE) {
                    Log.d(TAG, "gyroscope data[x:" + event.values[0] + ", y:" + event.values[1] + ", z:" + event.values[2] + "]");
                    mGyroscopeSensorTextView.setText("[x:" + event.values[0] + ", y:" + event.values[1] + ", z:" + event.values[2] + "]");
                }
                calculateOrientation();
            }
    
            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
                Log.d(TAG, "onAccuracyChanged:" + sensor.getType() + "->" + accuracy);
            }
    
        }
    }
    

    运行效果如下:

    运行效果
    示例代码下载:sensor-sample

    详细参考 Android 开发者官方文档:传感器

    展开全文
  • 接着上篇wifi列表获取,我们这篇接着说传感器。还是看代码 我们先自己定义一个传感器的工具类(因为我这边只是获取了部分的传感器,需要获取额外的传感器自己配置一下就行了,工具类通过重载提供了不同的构造方法)...

    接着上篇wifi列表获取,我们这篇接着说传感器。还是看代码

    我们先自己定义一个传感器的工具类(因为我这边只是获取了部分的传感器,需要获取额外的传感器自己配置一下就行了,工具类通过重载提供了不同的构造方法):

     public class SensorUtils implements SensorEventListener {
    
        private SensorManager manager;
    
        /**
         * @param context 多个传感器
         * @param sensorList
         */
        public void RegisterSensor(Context context, List<Sensor> sensorList){
            manager = (SensorManager) context.getSystemService(SENSOR_SERVICE);
            for(Sensor sensors : sensorList){
                manager.registerListener(this,sensors,SensorManager.SENSOR_DELAY_NORMAL);
            }
        }
    
        /**
         * @param context 单个传感器
         * @param sensor
         */
        public void RegisterSensor(Context context, Sensor sensor){
            manager = (SensorManager) context.getSystemService(SENSOR_SERVICE);
            manager.registerListener(this,sensor,SensorManager.SENSOR_DELAY_NORMAL);
        }
    
        @Override
        public void onSensorChanged(SensorEvent event) {
            switch (event.sensor.getType()){
                case Sensor.TYPE_ACCELEROMETER:
                    //给加速度传感器设置回调监听
                    sensorCallBack.acceleratedCallBack(event);
                    break;
                case Sensor.TYPE_GYROSCOPE:
                    //给陀螺仪传感器设置回调监听
                    sensorCallBack.gyroscopeCallBack(event);
                    break;
                case Sensor.TYPE_MAGNETIC_FIELD:
                    //给磁场传感器设置回调监听
                    sensorCallBack.magneticFieldCallBack(event);
                    break;
                case Sensor.TYPE_PRESSURE:
                    //给气压计传感器设置回调监听
                    sensorCallBack.pressureCallBack(event);
                    break;
            }
    
        }
    
        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
    
        }
    
        //使用完之后记得取消注册
        public void UnRegisterSensor(){
            if (manager != null){
                manager.unregisterListener(this);
            }
        }
    
        public interface SensorCallBack{
            void acceleratedCallBack(SensorEvent event);
    
            void gyroscopeCallBack(SensorEvent event);
    
            void magneticFieldCallBack(SensorEvent event);
    
            void pressureCallBack(SensorEvent event);
        }
    
       private SensorCallBack sensorCallBack;
    
        public SensorUtils(SensorCallBack sensorCallBack){
            this.sensorCallBack = sensorCallBack;
        }
    
    }

    然后我们在activity中去使用工具类:

    //初始化
    sensorUtils = new SensorUtils(this);
    sensorUtils.RegisterSensor(this, sensorList);

    activity中别忘了实现SensorUtil中的回调监听

    public class SensorActivity extends BaseActivity<BaseViewModel, ActivitySensorBinding> implements SensorUtils.SensorCallBack{
    
      //do something
    }

    然后在自己设置的回调监听中去实现自己想要的功能

      @Override
        public void acceleratedCallBack(SensorEvent event) {
            //可以做自己想要的操作
            if (event != null) {
                float[] values = event.values;
                float x1 = values[0];
                float y1 = values[1];
                float z1 = values[2];
                StringBuffer stringBuffer = new StringBuffer();
                stringBuffer.append(getString(R.string.accelerometer_number)).append("\n");
                stringBuffer.append(getString(R.string.x1)).append(x1).append("\n");
                stringBuffer.append(getString(R.string.y1)).append(y1).append("\n");
                stringBuffer.append(getString(R.string.z1)).append(z1);
                if (!viewDateBinding.scrollView.isMove()) {
                    handler.post(() -> viewDateBinding.tvAccelerated.setText(stringBuffer.toString()));
                }
                if (flagAccelerated) {
                    DataBassManager.getInstance(SensorActivity.this).insertSensor(new TableBean(null,stringBuffer.toString(),null,null,null));
                }
                flagAccelerated = false;
            }
        }
    
        @Override
        public void gyroscopeCallBack(SensorEvent event) {
            //可以做自己想要的操作
            if (event != null) {
                float x2 = event.values[0];
                float y2 = event.values[1];
                float z2 = event.values[2];
                StringBuffer stringBuffer = new StringBuffer();
                stringBuffer.append(getString(R.string.gyroscope_number)).append("\n");
                stringBuffer.append(getString(R.string.x2)).append(x2).append("\n");
                stringBuffer.append(getString(R.string.y2)).append(y2).append("\n");
                stringBuffer.append(getString(R.string.z2)).append(z2);
                if (!viewDateBinding.scrollView.isMove()) {
                    handler.post(() -> viewDateBinding.tvGyroscope.setText(stringBuffer.toString()));
                }
                if (flagGyroscope) {
                    DataBassManager.getInstance(SensorActivity.this).insertSensor(new TableBean(null,null,stringBuffer.toString(),null,null));
                }
                flagGyroscope = false;
            }
        }
    
        @SuppressLint("DefaultLocale")
        @Override
        public void magneticFieldCallBack(SensorEvent event) {
            //可以做自己想要的操作
            if (event != null) {
                float x3 = event.values[0];
                float y3 = event.values[1];
                float z3 = event.values[2];
                StringBuffer stringBuffer = new StringBuffer();
                stringBuffer.append(getString(R.string.magnetic_field_number)).append("\n");
                stringBuffer.append(getString(R.string.x3)).append(String.format("%.2f", x3)).append("\n");
                stringBuffer.append(getString(R.string.y3)).append(String.format("%.2f", y3)).append("\n");
                stringBuffer.append(getString(R.string.z3)).append(String.format("%.2f", z3));
                if (!viewDateBinding.scrollView.isMove()) {
                    handler.post(() -> viewDateBinding.tvMagneticField.setText(stringBuffer.toString()));
                }
                if (flagMagneticField) {
                    DataBassManager.getInstance(SensorActivity.this).insertSensor(new TableBean(null,null,null,stringBuffer.toString(),null));
                }
                flagMagneticField = false;
            }
        }
    
        @Override
        public void pressureCallBack(SensorEvent event) {
            //可以做自己想要的操作
            if (event != null) {
                float x4 = event.values[0];
                String str4 = getString(R.string.pressure_number) + x4;
                if (!viewDateBinding.scrollView.isMove()) {
                    handler.post(() -> viewDateBinding.tvPressure.setText(str4));
                }
                if (flagPressure) {
                    DataBassManager.getInstance(SensorActivity.this).insertSensor(new TableBean(null,null,null,null,str4));
                }
                flagPressure = false;
            }
        }
    

    我这边是将数据通过按钮的点击事件存储进了数据库,注意传感器的回调是实时的,所以如果想要获取某一时刻,需要自己通过boolean去判断是否需要获取回调数据

    最后,记得取消监听,因为我是在activity中去注册的,所以取消注册也是在activity中去做:

      protected void onStop() {
            super.onStop();
            sensorUtils.UnRegisterSensor();
        }

     

    展开全文
  • 本文实例讲述了Android编程实现获取所有传感器数据的方法。分享给大家供大家参考,具体如下: main.xml <?xml version=1.0 encoding=utf-8?> <LinearLayout xmlns:android=...
  • android获取传感器列表

    2021-06-03 15:40:57
    本文介绍如何获取android设备所支持的传感器列表。目前,android 4.4 (API等级19)支持以下传感器:TYPE_ACCELEROMETER加速度传感器,单位是m/s2,测量应用于设备X、Y、Z轴上的加速度传感器类型值(Sensor Type):1 ...

    本文介绍如何获取android设备所支持的传感器列表。

    目前,android 4.4 (API等级19)支持以下传感器:

    TYPE_ACCELEROMETER

    加速度传感器,单位是m/s2,测量应用于设备X、Y、Z轴上的加速度

    传感器类型值(Sensor Type):1 (0x00000001)

    TYPE_AMBIENT_TEMPERATURE

    温度传感器,单位是℃

    传感器类型值(Sensor Type): 13 (0x0000000d)

    TYPE_GAME_ROTATION_VECTOR

    游戏动作传感器,不收电磁干扰影响

    传感器类型值(Sensor Type):15 (0x0000000f)

    TYPE_GEOMAGNETIC_ROTATION_VECTOR

    地磁旋转矢量传感器,提供手机的旋转矢量,当手机处于休眠状态时,仍可以记录设备的方位

    传感器类型值(Sensor Type):20 (0x00000014)

    TYPE_GRAVITY

    重力传感器,单位是m/s2,测量应用于设备X、Y、Z轴上的重力

    传感器类型值(Sensor Type):9 (0x00000009)

    TYPE_GYROSCOPE

    陀螺仪传感器,单位是rad/s,测量设备x、y、z三轴的角加速度

    传感器类型值(Sensor Type):4 (0x00000004)

    TYPE_GYROSCOPE_UNCALIBRATED

    未校准陀螺仪传感器,提供原始的,未校准、补偿的陀螺仪数据,用于后期处理和融合定位数据

    传感器类型值(Sensor Type):16 (0x00000010)

    TYPE_LIGHT

    光线感应传感器,单位lx,检测周围的光线强度

    传感器类型值(Sensor Type):5 (0x00000005)

    TYPE_LINEAR_ACCELERATION

    线性加速度传感器,单位是m/s2,该传感器是获取加速度传感器去除重力的影响得到的数据

    传感器类型值(Sensor Type):10 (0x0000000a)

    TYPE_MAGNETIC_FIELD

    磁力传感器,单位是uT(微特斯拉),测量设备周围三个物理轴(x,y,z)的磁场

    传感器类型值(Sensor Type):2 (0x00000002)

    TYPE_MAGNETIC_FIELD_UNCALIBRATED

    未校准磁力传感器,提供原始的,未校准的磁场数据

    传感器类型值(Sensor Type):14 (0x0000000e)

    TYPE_ORIENTATION

    方向传感器,测量设备围绕三个物理轴(x,y,z)的旋转角度

    传感器类型值(Sensor Type):3 (0x00000003)

    TYPE_PRESSURE

    压力传感器,单位是hPa(百帕斯卡),返回当前环境下的压强

    传感器类型值(Sensor Type):6 (0x00000006)

    TYPE_PROXIMITY

    距离传感器,单位是cm,用来测量某个对象到屏幕的距离

    传感器类型值(Sensor Type):8 (0x00000008)

    TYPE_RELATIVE_HUMIDITY

    湿度传感器,单位是%,来测量周围环境的相对湿度

    传感器类型值(Sensor Type):12 (0x0000000c)

    TYPE_ROTATION_VECTOR

    旋转矢量传感器,旋转矢量代表设备的方向

    传感器类型值(Sensor Type):11 (0x0000000b)

    TYPE_SIGNIFICANT_MOTION

    特殊动作触发传感器

    传感器类型值(Sensor Type):17 (0x00000011)

    TYPE_STEP_COUNTER

    计步传感器

    传感器类型值(Sensor Type):19 (0x00000013)

    TYPE_STEP_DETECTOR

    步行检测传感器,用户每走一步就触发一次事件

    传感器类型值(Sensor Type):18 (0x00000012)

    TYPE_TEMPERATURE

    温度传感器,目前已被TYPE_AMBIENT_TEMPERATURE替代

    传感器类型值(Sensor Type):7 (0x00000007)

    获取传感器列表的代码如下:

    package com.example.androidtest;

    import java.util.List;

    import android.os.Bundle;

    import android.annotation.SuppressLint;

    import android.app.Activity;

    import android.content.Context;

    import android.hardware.Sensor;

    import android.hardware.SensorManager;

    import android.view.Menu;

    public class MainActivity extends Activity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    getSensorList();

    }

    @SuppressLint("NewApi")

    private void getSensorList() {

    // 获取传感器管理器

    SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

    // 获取全部传感器列表

    List sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);

    // 打印每个传感器信息

    StringBuilder strLog = new StringBuilder();

    int iIndex = 1;

    for (Sensor item : sensors) {

    strLog.append(iIndex + ".");

    strLog.append("Sensor Type - " + item.getType() + "\r\n");

    strLog.append("Sensor Name - " + item.getName() + "\r\n");

    strLog.append("Sensor Version - " + item.getVersion() + "\r\n");

    strLog.append("Sensor Vendor - " + item.getVendor() + "\r\n");

    strLog.append("Maximum Range - " + item.getMaximumRange() + "\r\n");

    strLog.append("Minimum Delay - " + item.getMinDelay() + "\r\n");

    strLog.append("Power - " + item.getPower() + "\r\n");

    strLog.append("Resolution - " + item.getResolution() + "\r\n");

    strLog.append("\r\n");

    iIndex++;

    }

    System.out.println(strLog.toString());

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.

    getMenuInflater().inflate(R.menu.activity_main, menu);

    return true;

    }

    }

    以三星Note3为例,其支持的传感器如下:

    1.Sensor Type - 1

    Sensor Name - MPU6500 Acceleration Sensor

    Sensor Version - 1

    Sensor Vendor - Invensense

    Maximum Range - 19.6133

    Minimum Delay - 5000

    Power - 0.25

    Resolution - 5.985504E-4

    2.Sensor Type - 2

    Sensor Name - YAS532 Magnetic Sensor

    Sensor Version - 1

    Sensor Vendor - Yamaha Corporation

    Maximum Range - 1200.0

    Minimum Delay - 10000

    Power - 6.0

    Resolution - 0.06

    3.Sensor Type - 14

    Sensor Name - YAS532 Uncalibrated Magnetic Sensor

    Sensor Version - 1

    Sensor Vendor - Yamaha Corporation

    Maximum Range - 1200.0

    Minimum Delay - 10000

    Power - 6.0

    Resolution - 0.06

    4.Sensor Type - 4

    Sensor Name - MPU6500 Gyroscope Sensor

    Sensor Version - 1

    Sensor Vendor - Invensense

    Maximum Range - 8.726646

    Minimum Delay - 5000

    Power - 6.1

    Resolution - 2.663161E-4

    5.Sensor Type - 6

    Sensor Name - Barometer Sensor

    Sensor Version - 1

    Sensor Vendor - BOSCH

    Maximum Range - 1013.25

    Minimum Delay - 66700

    Power - 1.0

    Resolution - 1.0

    6.Sensor Type - 8

    Sensor Name - MAX88921 Proximity Sensor

    Sensor Version - 1

    Sensor Vendor - MAXIM, Inc.

    Maximum Range - 8.0

    Minimum Delay - 0

    Power - 0.75

    Resolution - 8.0

    7.Sensor Type - 5

    Sensor Name - MAX88921 RGB Sensor

    Sensor Version - 1

    Sensor Vendor - MAXIM, Inc.

    Maximum Range - 60000.0

    Minimum Delay - 200000

    Power - 0.75

    Resolution - 1.0

    8.Sensor Type - 12

    Sensor Name - SHTC1 relative humidity sensor

    Sensor Version - 1

    Sensor Vendor - Sensirion

    Maximum Range - 100.0

    Minimum Delay - 1000000

    Power - 0.3

    Resolution - 0.04

    9.Sensor Type - 13

    Sensor Name - SHTC1 ambient temperature sensor

    Sensor Version - 1

    Sensor Vendor - Sensirion

    Maximum Range - 165.0

    Minimum Delay - 1000000

    Power - 0.3

    Resolution - 0.01

    10.Sensor Type - 15

    Sensor Name - MPL Game Rotation Vector

    Sensor Version - 1

    Sensor Vendor - Invensense

    Maximum Range - 1200.0

    Minimum Delay - 10000

    Power - 6.0

    Resolution - 0.06

    11.Sensor Type - 18

    Sensor Name - SAMSUNG Step Detector Sensor

    Sensor Version - 1

    Sensor Vendor - Samsung Inc.

    Maximum Range - 1.0

    Minimum Delay - 0

    Power - 0.3

    Resolution - 1.0

    12.Sensor Type - 19

    Sensor Name - SAMSUNG Step Counter Sensor

    Sensor Version - 1

    Sensor Vendor - Samsung Inc.

    Maximum Range - 100000.0

    Minimum Delay - 0

    Power - 0.3

    Resolution - 1.0

    13.Sensor Type - 17

    Sensor Name - SAMSUNG Significant Motion Sensor

    Sensor Version - 1

    Sensor Vendor - Samsung Inc.

    Maximum Range - 1.0

    Minimum Delay - 10000

    Power - 0.3

    Resolution - 1.0

    14.Sensor Type - 16

    Sensor Name - MPU6500 Uncalibrated Gyroscope Sensor

    Sensor Version - 1

    Sensor Vendor - Invensense

    Maximum Range - 8.726646

    Minimum Delay - 5000

    Power - 6.1

    Resolution - 2.663161E-4

    15.Sensor Type - 65558

    Sensor Name - Auto Rotation Sensor

    Sensor Version - 1

    Sensor Vendor - Samsung Electronics

    Maximum Range - 255.0

    Minimum Delay - 0

    Power - 0.0

    Resolution - 0.0

    16.Sensor Type - 11

    Sensor Name - Rotation Vector Sensor

    Sensor Version - 3

    Sensor Vendor - AOSP

    Maximum Range - 1.0

    Minimum Delay - 5000

    Power - 12.35

    Resolution - 5.9604645E-8

    17.Sensor Type - 9

    Sensor Name - Gravity Sensor

    Sensor Version - 3

    Sensor Vendor - AOSP

    Maximum Range - 19.6133

    Minimum Delay - 5000

    Power - 12.35

    Resolution - 5.985504E-4

    18.Sensor Type - 10

    Sensor Name - Linear Acceleration Sensor

    Sensor Version - 3

    Sensor Vendor - AOSP

    Maximum Range - 19.6133

    Minimum Delay - 5000

    Power - 12.35

    Resolution - 5.985504E-4

    19.Sensor Type - 3

    Sensor Name - Orientation Sensor

    Sensor Version - 1

    Sensor Vendor - AOSP

    Maximum Range - 360.0

    Minimum Delay - 5000

    Power - 12.35

    Resolution - 0.00390625

    原文:http://blog.csdn.net/chadeltu/article/details/43406035

    展开全文
  • 主要介绍了Android 获取传感器列表整理及简单实例的相关资料,需要的朋友可以参考下
  • 本例子是一个简单的列出设备上所有传感器的例子源码,过程是从系统服务中获得传感器管理器,然后再在传感器管理器中获得全部的传感器列表把传感器信息显示到界面上,本项目默认编码GBK编译版本4.0.3
  • 大家好,由于最近会有对智能硬件相关的开发需求,所以最近这些天分享的博文也就大致挂钩智能硬件了,像上一篇的蓝牙分享,相信很多读者已经看过了,那么今天我为大家带来Android传感器方面知识的介绍与使用方法,...
  • 1.android 的坐标系是如何定义x, y z 轴的 x轴的方向是沿着屏幕的水平方向从左向右,如果手机不是正方形的话,较短的边需要水平放置,较长的边需要垂直放置。Y轴的方向是从屏幕的左下角开始沿着屏幕的的垂直方向指向...
  • Android获取手机传感器

    2020-01-28 07:40:23
    Android获取手机传感器的代码,参考了一些其它人的CSDN博客。 Android获取手机传感器的代码,参考了一些其它人的CSDN博客。
  • 起着这样作用,Android是通过一款光照传感器获取你周围环境亮度的变化。光照传感器一般在手机的顶部的位置。 要在程序中使用这款传感器 (1)首先要获取SensorManager传感器管理器服务:SensorManager ...
  • 本文实例讲述了Android开发获取传感器数据的方法。分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; import android.app.Activity; import android.hardware.Sensor; ...
  • android传感器(线性加速度、陀螺仪、磁场)信号实时获取.zip,SingalAcquisition-master,gradlew,settings.gradle,.idea,runConfigurations.xml,misc.xml,compiler.xml,gradle.xml,.name,encodings.xml,...
  • 安卓移动开发,获取手机传感器信息。光线传感器,温湿度传感器,压力传感器。 (摘要必须大于50个字凑数啦啦啦啦啦啦)
  • 我使用连接到温度传感器的 Raspberry Pi,并使用PHP脚本从传感器获取数据。 在前端,Android 简单地使用 HTTP GET 请求到 PHP 脚本并显示数据。 后来我了解到我可以使用 Servlets 和 Pi4j 作为后端而不是 PHP,以使...
  • android获取传感器数据

    2018-06-07 16:41:00
    传感器获取数据的频率: https://blog.csdn.net/huangbiao86/article/details/6745933 SensorManager.SENSOR_DELAY_GAME 20ms 转载于:https://www.cnblogs.com/ymjyqsx/p/9151507.html
  • 主要介绍了Android方向传感器的使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 本例子是一个简单的列出设备上所有传感器的例子源码,过程是从系统服务中获得传感器管理器,然后再在传感器管理器中获得全部的传感器列表把传感器信息显示到界面上,本项目默认编码GBK编译版本4.0.3
  • ① SensorManager:用来获取传感器的入口,它是一个系统的服务,还可以为传感器注册与取消注册监听 ② Sensor: 具体的传感器,包含了传感器的名字,类型,采样率 ③ SensorEvent:传感器事件,包含了传感器采集回来的...
  • Android 获取传感器的频率

    千次阅读 2018-05-11 17:42:44
    如果想知道自己传感器的频率 测试的结果: 前提步骤 我们在最后添加好sensor的监听器后,需要注册SensorManager的reg监听器。 ie: risterListener()方法来注册SensorEventListener才能使其生效 ...
  • 基于Android的手机各种传感器:加速度计、磁力计、陀螺仪、WiFi、蓝牙、声音、光线等手机内置传感器数据获取工具,可实时显示也可以日志形式进行记录。
  • 1)温度传感器返回当前的温度,单位是摄氏度(°C)。2)具体代码如下package com.example.androidapp;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware....
  • (demo中只以加速度计和方位角数据为例子,想要获取其他数据,可以自行修改,到网上查Android传感器类型名称即可) 附了一个存储数据到文件中的功能 即fileutils类,有创建文件夹,创建文件,向文件中添加字符串,...
  • Android实现接近传感器

    2021-01-03 13:12:41
    本文实例为大家分享了Android实现接近传感器的具体代码,供大家参考,具体内容如下 1.接近传感器检测物体与听筒(手机)的距离,单位是厘米。 一些接近传感器只能返回远和近两个状态,如我的手机魅族E2只能识别到...
  • 结果示例: xml代码: <?xml version="1.0" encoding="utf-8"?...RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=... android:layo...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,246
精华内容 6,498
热门标签
关键字:

android获取传感器信息