显示Android传感器列表

时间:2010-05-18 14:28:38

标签: android sensor

我正在尝试显示可用传感器的列表,但它就像没有! 我以为这是因为模拟器,但我在手机上尝试了它,结果是一样的。

private SensorManager mSensorManager;
TextView mSensorsTot,mSensorAvailables;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // Get the texts fields of the layout and setup to invisible
    mSensorsTot   = (TextView) findViewById(R.id.sensoritot);
    mSensorAvailables  = (TextView) findViewById(R.id.sensoridisponibili);

    // Get the SensorManager 
    mSensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);

    // List of Sensors Available
    List<Sensor> msensorList = mSensorManager.getSensorList(SensorManager.SENSOR_ALL);

    // Print how may Sensors are there
    mSensorsTot.setText(msensorList.size()+" "+this.getString(R.string.sensors)+"!");

    // Print each Sensor available using sSensList as the String to be printed
    String sSensList = new String("");
    Sensor tmp;
    int x,i;
    for (i=0;i<msensorList.size();i++){
     tmp = msensorList.get(i);
     sSensList = " "+sSensList+tmp.getName(); // Add the sensor name to the string of sensors available
    }
    // if there are sensors available show the list
    if (i>0){
     sSensList = getString(R.string.sensors)+":"+sSensList;
     mSensorAvailables.setText(sSensList);
    }
}

4 个答案:

答案 0 :(得分:26)

常量SensorManager.SENSOR_ALL已弃用,似乎不再起作用。

使用Sensor.TYPE_ALL查询传感器列表,它应该可以工作(我的模拟器返回“金鱼3轴加速度计”)。

答案 1 :(得分:6)

您可以尝试以下代码: -

package com.example.sensor;

import java.util.List;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends ActionBarActivity {

SensorManager smm;
List<Sensor> sensor;
ListView lv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    smm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    lv = (ListView) findViewById (R.id.listView1);
    sensor = smm.getSensorList(Sensor.TYPE_ALL);
    lv.setAdapter(new ArrayAdapter<Sensor>(this, android.R.layout.simple_list_item_1,  sensor));
}
}

只需在xml布局中放置一个列表视图。

答案 2 :(得分:3)

您可以尝试按以下方式列出传感器: -

String cAPP_FOLDER =文件夹的路径

String cSENSOR_FILE =文件名

// Create a file to export the sensor info.
File fp = new File(cAPP_FOLDER + cSENSOR_FILE);
fp.createNewFile();
PrintWriter pw = new PrintWriter(new FileWriter(fp, true));

SensorManager oSM = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
List<Sensor> sensorsList = oSM.getSensorList(Sensor.TYPE_ALL);
for (Sensor s : sensorsList) {
    pw.write(s.toString() + "\n");
}
pw.close();

/////////////////////////////////////////////// ///////////////////////////////

// OUTPUT FILE

{传感器名称=&#34; BOSCH加速计传感器&#34;,供应商=&#34; Bosch Sensortec GmbH&#34;,版本= 2,类型= 1,maxRange = 156.88,分辨率= 5.984497E-4 ,power = 0.13,minDelay = 10000}

{传感器名称=&#34; BOSCH磁场传感器&#34;,供应商=&#34; Bosch Sensortec GmbH&#34;,版本= 2,类型= 2,maxRange = 1600.0,分辨率= 0.3,功率= 0.5,minDelay = 40000}

{传感器名称=&#34; BOSCH方向传感器&#34;,供应商=&#34; Bosch Sensortec GmbH&#34;,版本= 2,类型= 3,maxRange = 360.0,分辨率= 1.0,功率= 0.63 ,minDelay = 5000}

{传感器名称=&#34; BOSCH陀螺仪传感器&#34;,供应商=&#34; Bosch Sensortec GmbH&#34;,版本= 2,类型= 4,maxRange = 2500.0,分辨率= 0.0038146973,功率= 5.0 ,minDelay = 5000}

{传感器名称=&#34; BOSCH重力传感器&#34;,供应商=&#34; Bosch Sensortec GmbH&#34;,版本= 2,类型= 9,maxRange = 19.61,分辨率= 5.984497E-4, power = 5.63,minDelay = 5000}

{传感器名称=&#34; BOSCH线性加速传感器&#34;,供应商=&#34; Bosch Sensortec GmbH&#34;,版本= 2,类型= 10,maxRange = 19.61,分辨率= 5.984497E-4 ,power = 5.63,minDelay = 5000}

{传感器名称=&#34; BOSCH旋转矢量传感器&#34;,供应商=&#34; Bosch Sensortec GmbH&#34;,版本= 2,类型= 11,maxRange = 1.0,分辨率= 5.9604645E-8 ,power = 5.63,minDelay = 5000}

{传感器名称=&#34; BOSCH磁场未校准传感器&#34;,供应商=&#34; Bosch Sensortec GmbH&#34;,版本= 2,类型= 14,maxRange = 1600.0,分辨率= 0.3,功率= 0.5,minDelay = 40000}

{传感器名称=&#34; BOSCH游戏旋转矢量传感器&#34;,供应商=&#34; Bosch Sensortec GmbH&#34;,版本= 2,类型= 15,maxRange = 1.0,分辨率= 5.9604645E- 8,power = 5.63,minDelay = 5000}

{传感器名称=&#34; BOSCH陀螺仪未校准传感器&#34;,供应商=&#34; Bosch Sensortec GmbH&#34;,版本= 2,类型= 16,maxRange = 2500.0,分辨率= 0.0038146973,power = 5.0,minDelay = 5000}

{传感器名称=&#34; BOSCH地磁旋转矢量传感器&#34;,供应商=&#34; Bosch Sensortec GmbH&#34;,版本= 2,类型= 20,maxRange = 1.0,分辨率= 5.9604645E- 8,power = 5.63,minDelay = 5000}

{传感器名称=&#34; LIGHT&#34;,供应商=&#34; MTK&#34;,版本= 1,类型= 5,maxRange = 10240.0,分辨率= 1.0,功率= 0.13,minDelay = 0 }

{传感器名称=&#34;接近&#34;,供应商=&#34; MTK&#34;,版本= 1,类型= 8,maxRange = 1.0,分辨率= 1.0,功率= 0.13,minDelay = 0 }

{传感器名称=&#34; SIGNIFICANT_MOTION&#34;,供应商=&#34; MTK&#34;,版本= 1,类型= 17,maxRange = 85.0,分辨率= 0.1,功率= 0.5,minDelay = - 1}

答案 3 :(得分:0)

SensorManager类的

getSensorList(int type)给出了传感器列表==&gt;名单。 (获取某种类型的可用传感器列表。)

使用Sensor.TYPE_ALL获取所有传感器。 多次调用以获取不同类型的传感器。