2011-11-14 85 views
4

我想以编程方式获得Sensor的名字。说出环境光线传感器的名称。如何获取传感器的名称?

我怎样才能得到它的名字?

+0

这个问题是一个文档的问题。它意味着记录传感器类的一个相当不为人知的特性。 –

+0

好问题,但我认为它应该更精确,因为人们在这里误解它。看到答案。 – Mudassir

+0

我怎么可以比_更具体的环境光传感器的名称。 –

回答

3

首先,您必须获得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); 
8

使用传感器管理器查询(全部或certain types可用传感器。然后使用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 
+0

感谢您的努力。但是我没有要求提供完整的传感器列表,而是要求提供特定传感器的名称。正如我对这个问题的评论所说的,这个问题本来就是一个自我记录问题。 –

+0

好吧,没有'getDefaultSensor()'在这里。 upvoted你的答案。此外,我不知道这是我发布时的自我记录问题。我会说在问题中写一个简短的句子来强调这一点,并在将来完成时进行编辑。这种方式对每个人都很明显。我会继续这样做,因为示例输出仍然相关,也有人可能会在这里结束与这两个问题的谷歌。 – 2011-11-14 11:41:24

+0

我同意。应该做到这一点。 –