如何获取传感器的名称?

4
我希望以编程方式获取传感器的名称。比如环境光传感器的名称。
我该如何获取它的名称?

这个问题是一个文档问题。它旨在记录Sensor类中一个相对较少知道的特性。 - Octavian Helm
好问题,但我认为它应该更加精确,因为这里的人们误解了它。请查看答案。 - Mudassir
我怎样才能比“说出环境光传感器的名称”更具体呢? - Octavian Helm
其实这看起来像是你在举例子。 :) - Mudassir
3个回答

8
使用传感器管理器查询可用的传感器(全部或特定类型。然后使用Sensor.getName()来获取单个传感器的名称。
SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);
List<Sensor> list = sm.getSensorList(Sensor.TYPE_ALL);

for(Sensor s : list) {
    Log.d("SENSORS", s.getName());
}

上面片段的示例输出:
11-14 12:26:47.549: D/SENSORS(911): BMA150 3-axis Accelerometer
11-14 12:26:47.559: D/SENSORS(911): AK8973 3-axis Magnetic field sensor
11-14 12:26:47.559: D/SENSORS(911): AK8973 Orientation sensor
11-14 12:26:47.559: D/SENSORS(911): CM3602 Proximity sensor
11-14 12:26:47.559: D/SENSORS(911): CM3602 Light sensor
11-14 12:26:47.559: D/SENSORS(911): Gravity Sensor
11-14 12:26:47.559: D/SENSORS(911): Linear Acceleration Sensor
11-14 12:26:47.559: D/SENSORS(911): Rotation Vector Sensor

感谢你的努力。然而,我并没有要求一个传感器的完整清单,我只是要求一个特定传感器的名称。正如我在问题的评论中所述,这个问题旨在成为一个自我记录问题。 - Octavian Helm
好的,没包含getDefaultSensor()在这里。已经为你点赞了。当我发布问题时,我不知道这是一个自我记录的问题。建议在问题中写一句简短的话强调这一点,并在以后编辑掉它。这样对于每个人都是明显的。我仍然会保留这个示例输出,因为它仍然相关,而且人们可能会因为两个问题而在谷歌上找到这里。 - user658042

4

首先,您需要获取一个SensorManager实例,然后从管理器中获取所需的服务实例。

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

/*
 * We get the light sensor in this example.
 */
Sensor someSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

/*
 * Always perform a null check on sensors since your device
 * may not have that sensor.
 */
if (null != someSensor) {
    String sensorName = someSensor.getName();
}

你可以使用传感器的 getName() 方法获取名称。

0

使用getSensorList(Sensor.TYPE_ALL),您可以获取设备中的所有传感器。

SensorManager sensorManager
    = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
sensorManager.getSensorList(Sensor.TYPE_ALL);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接