当前位置: 首页 > 知识库问答 >
问题:

如何接收所有传感器列表(不支持包含)

养焱
2023-03-14

我想列举谷歌支持的所有传感器,并验证我的设备是否支持(包括步数计数器、游戏旋转矢量、地磁旋转矢量、显著运动等)

我使用sensor.type_all接收所有传感器,代码如下:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_enumarte_sensors);

    SensorManager sensorManager;
    TextView tvAvailableSensors;

    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);

    tvAvailableSensors = (TextView) findViewById(R.id.tv_AvailableSensors);
    tvAvailableSensors.setText("Sensors status:\n\n");

    for (Sensor s : sensors)
    {
        boolean regSuccess = sensorManager.registerListener(this, sensorManager.getDefaultSensor(s.getType()), SensorManager.SENSOR_DELAY_NORMAL);
        tvAvailableSensors.append(s.getName() + " (" + s.getType() + ")  " + regSuccess + "\n");
        if (regSuccess) sensorManager.unregisterListener(this, sensorManager.getDefaultSensor(s.getType()));
    }
}

但我只接收少数传感器的状态:加速度计,环境光,陀螺仪,磁场,定向,旋转矢量,线性加速度和重力。(而且我没有收到任何关于步进检测器\计数器、显著运动等的状态)

有人知道如何验证设备上真正支持哪个传感器,哪个不支持?

编辑:

需要说明的是:我知道我的设备不支持所有的传感器,但我想接收所有可用的传感器和状态列表,哪一个我支持,哪一个不。

例如,我有Nexus10,所以我应该接收如下列表:

步进计数器错误

有效运动假

共有1个答案

公孙高畅
2023-03-14

我认为这样的API是不可用的,您需要在代码中检查每种传感器类型:

private SensorManager mSensorManager;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
if (mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) != null){
  // Success! There's a magnetometer.
  }
else {
  // Failure! No magnetometer.
  }

文档引用了这些类型的传感器:

    TYPE_AMBIENT_TEMPERATURE TYPE_GAME_ROTATION_VECTOR   
    TYPE_GEOMAGNETIC_ROTATION_VECTOR TYPE_GRAVITY TYPE_GYROSCOPE   
    TYPE_GYROSCOPE_UNCALIBRATED TYPE_LIGHT TYPE_LINEAR_ACCELERATION   
    TYPE_MAGNETIC_FIELD TYPE_MAGNETIC_FIELD_UNCALIBRATED
    TYPE_ORIENTATION    TYPE_PRESSURE TYPE_PROXIMITY
    TYPE_RELATIVE_HUMIDITY    TYPE_ROTATION_VECTOR
    TYPE_SIGNIFICANT_MOTION TYPE_STEP_COUNTER    TYPE_STEP_DETECTOR
    TYPE_TEMPERATURE
 类似资料:
  • 下面是一份已经对接到 RT-Therad Sensor 框架上的传感器的列表,点击传感器名称即可跳转到相应软件包主页。(本文档不定时更新,如要查看所有支持的传感器的列表,可以查看最新的软件包索引。 厂商 传感器 备注 BOSCH bma400 加速度计、计步计 bmi160 加速计、陀螺仪 bmx160 加速计、陀螺仪、磁力计 bme280 气压计、湿度计、温度计 Goertek spl0601

  • 我正在LWJGL中处理一个项目,OpenGL设置适用于2.0,但每当我尝试在LWJGL 3.0上渲染时,它都会返回。 返回此错误的方法:

  • 在Samsung的编程指南(第77-81页)中有关于如何使用S Health Service SDK设置和获取心率信息的参考。不过,我想直接访问Galaxy S5的心率传感器,就像访问加速度计、陀螺仪、光传感器等传感器一样。我为三星gear live找到了这个例子,但我找不到任何Galaxy S5的例子。 是否可以直接访问Galaxy S5的心率传感器?有没有人有一个如何做的代码示例? 谢谢你。

  • 我对使用UML序列图建模我的系统有一个疑问(是的,我知道状态机图做这件事更简单,但我需要序列图)。 考虑一个简单的列车车门系统,其中有(a)一个自动控制器,它向(B)一个机械开启器(一个致动器)发出命令来开启或关闭车门。该系统有一些(C)传感器--发送反馈,通知列车是否停车;列车是否在站台对线;有无紧急情况;如果门被打开、关闭或部分打开/关闭;如果有一个人或物体在门口-和(D)门本身。

  • 我认为我发现了一个错误在运行时的Java与JSF 2.0(使用Primeface),在这个项目中我使用JSF 2.0 Primeface和CDI。 恢复问题,我的业务类Role中有一个方法设置器收到了一个List,但JSF正在设置一个ArrayList。java应该抛出异常还是至少不应该找到匹配的方法?这里是: 该方法的输出为: 当我尝试在foreach中使用这样的: 投掷 你能解释一下这是怎么回

  • SPI NOR FLASH 厂商 型号 ID Flash size Block size Page size issi ic25lp064 0x009d6017 8M 64K 256B paragon pn25f32 0x00e04016 4M 64K 256B pmc pm25lq032 0x007f9d46 4M 64K 256B spansion s25fl032 0x00010215 4M