2010-05-18 13 views
17

Estoy tratando de mostrar una lista de sensores disponibles, pero es como si no hubiera.
Estaba pensando que era por el emulador, pero lo probé por teléfono y el resultado es el mismo.Mostrar una lista de sensores de Android

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

Respuesta

24

La constante SensorManager.SENSOR_ALL está obsoleta y parece que ya no funciona.

En su lugar, consulte la lista de sensores con Sensor.TYPE_ALL y debería funcionar (mi emulador devuelve un "Acelerómetro de 3 ejes Goldfish").

+0

¡Funciona, pulgares arriba! Gracias – Skatephone

0

getSensorList (tipo int) de la clase SensorManager proporciona una lista de sensores ==> Lista. (Para obtener la lista de sensores disponibles de un tipo determinado)

Use Sensor.TYPE_ALL para obtener todos los sensores. Haz múltiples llamadas para obtener sensores de diferentes tipos.

4

Puede probar este código: -

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

Sólo hay que poner una vista de lista en su diseño xml.

1

Usted puede tratar de una lista de los sensores de la siguiente manera: -

cadena cAPP_FOLDER = Ruta de la carpeta de

cadena cSENSOR_FILE = Nombre del archivo

// 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

{Sensor name = "Sensor de acelerómetro BOSCH", proveedor = "Bosch Sensortec GmbH", versión = 2, tipo = 1, maxRange = 156.88, resolución = 5.984497E-4, potencia = 0.13, minDelay = 10000}

{Sensor name = "Sensor de campo magnético BOSCH", proveedor = "Bosch Sensortec GmbH", versión = 2, tipo = 2, maxRange = 1600.0, resolución = 0.3, potencia = 0.5, minDelay = 40000}

{Sensor name = "Sensor de orientación BOSCH", proveedor = "Bosch Sensortec GmbH", versión = 2, tipo = 3, maxRange = 360.0, resolución = 1.0, potencia = 0.63, minDelay = 5000}

{Sensor name = "BOSCH Sensor de giroscopio ", proveedor =" Bosch Sensortec GmbH ", versión = 2, tipo = 4, maxRange = 2500.0, resolución = 0.003814 6973, potencia = 5.0, minDelay = 5000}

{Sensor name = "BOSCH Gravity Sensor", proveedor = "Bosch Sensortec GmbH", versión = 2, tipo = 9, maxRange = 19.61, resolución = 5.984497E-4 , potencia = 5.63, minDelay = 5000}

{Sensor name = "Sensor de aceleración lineal BOSCH", proveedor = "Bosch Sensortec GmbH", versión = 2, tipo = 10, maxRange = 19.61, resolución = 5.984497E-4 , potencia = 5.63, minDelay = 5000}

{Sensor name = "Sensor de rotación del vector BOSCH", proveedor = "Bosch Sensortec GmbH", versión = 2, tipo = 11, maxRange = 1.0, resolución = 5.9604645E-8 , potencia = 5.63, minDelay = 5000}

{Nombre del sensor = "Sensor magnético no calibrado de BOSCH", proveedor = "Bosch Sensortec GmbH", versión = 2, tipo = 14, maxRange = 1600.0, resolución = 0.3, potencia = 0.5, minDelay = 40000}

{Sensor name = "Sensor de vector de rotación de juegos BOSCH", proveedor = "Bosch Sensortec GmbH", versión = 2, tipo = 15, maxRange = 1.0, resolución = 5.9604645E-8, potencia = 5.63, minDelay = 5000}

{Nombre del sensor = "Sensor no calibrado del giroscopio BOSCH", proveedor = "Bosch Sensortec GmbH", versión = 2, tipo = 16, maxRange = 2500.0, resolución = 0.0038146973, potencia = 5.0, minDelay = 5000}

{Sensor name = "Sensor Vectorial de Rotación Geomagnética BOSCH", proveedor = "Bosch Sensortec GmbH", versión = 2, tipo = 20, maxRange = 1.0, resolución = 5.9604645E-8, potencia = 5.63, minDelay = 5000}

{Nombre del sensor = "LIGHT", vendedor = "MTK", versión = 1, type = 5, maxRange = 10240.0, resolución = 1,0, potencia = 0,13, minDelay = 0}

{Nombre del sensor = "PROXIMIDAD ", proveedor =" MTK ", versión = 1, tipo = 8, maxRange = 1.0, resolución = 1.0, potencia = 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}

+0

Si bien este fragmento de código es bienvenido, y puede proporcionar algo de ayuda, sería [mucho mejor si incluyera una explicación] (// meta.stackexchange.com/q/114762) de * cómo * y * por qué * esto resuelve el problema. Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, ¡no solo a la persona que pregunta ahora! Por favor [edite] su respuesta para agregar una explicación y dar una indicación de qué limitaciones y suposiciones se aplican. –

Cuestiones relacionadas