studio sensores programacion móviles libros desarrollo desarrollar curso aprende aplicaciones android sensor

programacion - Mostrar una lista de sensores de Android



programacion android pdf 2018 (4)

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

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


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

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


Puedes intentar listar los sensores de la siguiente manera:

Cadena cAPP_FOLDER = Ruta de su carpeta

Cadena cSENSOR_FILE = Nombre de su 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();

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

// ARCHIVO DE SALIDA

{Nombre del sensor = "Sensor del 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}

{Nombre del sensor = "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}

{Nombre del sensor = "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}

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

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

{Nombre del sensor = "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 = "BOSCH Rotation Vector Sensor", 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 no calibrado del campo magnético BOSCH", proveedor = "Bosch Sensortec GmbH", versión = 2, tipo = 14, maxRange = 1600.0, resolución = 0.3, potencia = 0.5, minDelay = 40000}

{Sensor name = "BOSCH Game Rotation Vector Sensor", 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 de giroscopio BOSCH", proveedor = "Bosch Sensortec GmbH", versión = 2, tipo = 16, rango máximo = 2500.0, resolución = 0.0038146973, potencia = 5.0, Demora mínima = 5000}

{Sensor name = "BOSCH Geomagnetic Rotation Vector Sensor", 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", proveedor = "MTK", versión = 1, tipo = 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}

{Nombre del sensor = "SIGNIFICANT_MOTION", proveedor = "MTK", versión = 1, tipo = 17, maxRange = 85.0, resolución = 0.1, potencia = 0.5, minDelay = -1}


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

Simplemente ponga una vista de lista en su diseño xml.


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

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