【问题标题】:Display an Android Sensors List显示 Android 传感器列表
【发布时间】:2011-02-20 22:30:29
【问题描述】:

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

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);
    }
}

【问题讨论】:

    标签: android sensors


    【解决方案1】:

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

    改为使用Sensor.TYPE_ALL 查询传感器列表,它应该可以工作(我的模拟器返回“Goldfish 3-axis Accelerometer”)。

    【讨论】:

      【解决方案2】:

      你可以试试这个代码:-

      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 布局中放置一个列表视图。

      【讨论】:

        【解决方案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();
        

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

        // 输出文件

        {Sensor name="BOSCH Accelerometer Sensor", vendor="Bosch Sensortec GmbH", version=2, type=1, maxRange=156.88, resolution=5.984497E-4, power=0.13, minDelay=10000}

        {Sensor name="BOSCH Magnetic Field Sensor", vendor="Bosch Sensortec GmbH", version=2, type=2, maxRange=1600.0, resolution=0.3, power=0.5, minDelay=40000}

        {Sensor name="BOSCH Orientation Sensor", vendor="Bosch Sensortec GmbH", version=2, type=3, maxRange=360.0, resolution=1.0, power=0.63, minDelay=5000}

        {Sensor name="BOSCH Gyroscope Sensor", vendor="Bosch Sensortec GmbH", version=2, type=4, maxRange=2500.0, resolution=0.0038146973, power=5.0, minDelay=5000}

        {Sensor name="BOSCH Gravity Sensor", vendor="Bosch Sensortec GmbH", version=2, type=9, maxRange=19.61, resolution=5.984497E-4, power=5.63, minDelay=5000}

        {Sensor name="BOSCH 直线加速度传感器", vendor="Bosch Sensortec GmbH", version=2, type=10, maxRange=19.61, resolution=5.984497E-4, power=5.63, minDelay=5000}

        {Sensor name="BOSCH Rotation Vector Sensor", vendor="Bosch Sensortec GmbH", version=2, type=11, maxRange=1.0, resolution=5.9604645E-8, power=5.63, minDelay=5000}

        {Sensor name="BOSCH Magnetic Field Uncalibrated Sensor", vendor="Bosch Sensortec GmbH", version=2, type=14, maxRange=1600.0, resolution=0.3, power=0.5, minDelay=40000}

        {Sensor name="BOSCH Game Rotation Vector Sensor", vendor="Bosch Sensortec GmbH", version=2, type=15, maxRange=1.0, resolution=5.9604645E-8, power=5.63, minDelay=5000}

        {Sensor name="BOSCH Gyroscope Uncalibrated Sensor", vendor="Bosch Sensortec GmbH", version=2, type=16, maxRange=2500.0, resolution=0.0038146973, power=5.0, minDelay=5000}

        {Sensor name="BOSCH Geomagnetic Rotation Vector Sensor", vendor="Bosch Sensortec GmbH", version=2, type=20, maxRange=1.0, resolution=5.9604645E-8, power=5.63, minDelay=5000}

        {Sensor name="LIGHT", vendor="MTK", version=1, type=5, maxRange=10240.0, resolution=1.0, power=0.13, minDelay=0}

        {Sensor name="PROXIMITY", vendor="MTK", version=1, type=8, maxRange=1.0, resolution=1.0, power=0.13, minDelay=0}

        {Sensor name="SIGNIFICANT_MOTION", vendor="MTK", version=1, type=17, maxRange=85.0, resolution=0.1, power=0.5, minDelay=-1}

        【讨论】:

        • 虽然欢迎使用此代码 sn-p,并且可能会提供一些帮助,但它会是 greatly improved if it included an explanation of howwhy 这解决了问题。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人!请edit您的答案添加解释,并说明适用的限制和假设。
        【解决方案4】:
        SensorManager 类的

        getSensorList(int 类型)给出了传感器列表 ==> 列表。 (获取某种类型的可用传感器列表。)

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-11-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多