Отображение списка датчиков Android - PullRequest
20 голосов
/ 18 мая 2010

Я пытаюсь отобразить список доступных датчиков, но их как будто нет!
Я думал, что это из-за эмулятора, но я попробовал это на телефоне, и результат тот же.

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 ]

26 голосов
/ 18 мая 2010

Константа SensorManager.SENSOR_ALL устарела и, похоже, больше не работает.

Запросите список датчиков с помощью Sensor.TYPE_ALL, и он должен работать (мой эмулятор возвращает «3-осевой акселерометр Золотая рыбка»).

6 голосов
/ 29 декабря 2014

Вы можете попробовать этот код: -

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 голосов
/ 21 марта 2017

Вы можете попробовать перечислить датчики, как показано ниже: -

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

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

// ФАЙЛ ВЫХОДА

{Имя датчика = "Датчик акселерометра BOSCH", поставщик = "Bosch Sensortec GmbH", версия = 2, тип = 1, maxRange = 156.88, разрешение = 5.984497E-4, мощность = 0.13, minDelay = 10000}

{Имя датчика = "Датчик магнитного поля BOSCH", поставщик = "Bosch Sensortec GmbH", версия = 2, тип = 2, maxRange = 1600.0, разрешение = 0.3, мощность = 0.5, minDelay = 40000}

{Имя датчика = "Датчик ориентации BOSCH", поставщик = "Bosch Sensortec GmbH", версия = 2, тип = 3, maxRange = 360.0, разрешение = 1.0, мощность = 0.63, minDelay = 5000}

{Имя датчика = "Датчик гироскопа BOSCH", поставщик = "Bosch Sensortec GmbH", версия = 2, тип = 4, maxRange = 2500.0, разрешение = 0.0038146973, мощность = 5.0, minDelay = 5000}

{Имя датчика = "Датчик гравитации BOSCH", поставщик = "Bosch Sensortec GmbH", версия = 2, тип = 9, maxRange = 19.61, разрешение = 5.984497E-4, мощность = 5.63, minDelay = 5000}

{Имя датчика = "Датчик линейного ускорения BOSCH", поставщик = "Bosch Sensortec GmbH", версия = 2, тип = 10, maxRange = 19.61, разрешение = 5.984497E-4, мощность = 5.63, minDelay = 5000}

{Имя датчика = "Вектор датчика вращения BOSCH", поставщик = "Bosch Sensortec GmbH", версия = 2, тип = 11, maxRange = 1.0, разрешение = 5.9604645E-8, мощность = 5.63, minDelay = 5000}

{Имя датчика = "Не калиброванный датчик магнитного поля BOSCH", поставщик = "Bosch Sensortec GmbH", версия = 2, тип = 14, maxRange = 1600.0, разрешение = 0.3, мощность = 0.5, minDelay = 40000}

{Имя датчика = "Вектор датчика вращения игры BOSCH", поставщик = "Bosch Sensortec GmbH", версия = 2, тип = 15, maxRange = 1.0, разрешение = 5.9604645E-8, мощность = 5.63, minDelay = 5000}

{Имя датчика = "Не калиброванный датчик гироскопа BOSCH", поставщик = "Bosch Sensortec GmbH", версия = 2, тип = 16, maxRange = 2500.0, разрешение = 0.0038146973, мощность = 5.0, minDelay = 5000}

{Имя датчика = "Вектор датчика геомагнитного вращения BOSCH", поставщик = "Bosch Sensortec GmbH", версия = 2, тип = 20, maxRange = 1.0, разрешение = 5.9604645E-8, мощность = 5.63, minDelay = 5000}

{Имя датчика = "LIGHT", поставщик = "MTK", версия = 1, тип = 5, maxRange = 10240.0, разрешение = 1.0, мощность = 0.13, minDelay = 0}

{Имя датчика = "PROXIMITY", поставщик = "MTK", версия = 1, тип = 8, maxRange = 1.0, разрешение = 1.0, мощность = 0.13, minDelay = 0}

{Имя датчика = "SIGNIFICANT_MOTION", поставщик = "MTK", версия = 1, тип = 17, maxRange = 85.0, разрешение = 0.1, мощность = 0.5, minDelay = -1}

0 голосов
/ 19 декабря 2013

getSensorList (тип int) класса SensorManager дает список датчиков ==> Список. (Получить список доступных датчиков определенного типа.)

Используйте Sensor.TYPE_ALL, чтобы получить все датчики. Сделайте несколько звонков, чтобы получить датчики разных типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...