Componente termómetro vintage + SensorSimulator en el emulador de Android

Después encontréeste agradable componente personalizado que de forma análoga (¿es esta la palabra correcta?) muestra la temperatura leída por el sensor de temperatura del dispositivo Android, quería probarlo con el emulador para ver cómo funciona, así que he encontradoeste simulador de sensor y alteró la fuente del componente para trabajar con él.

Me las arreglé para trabajar en un dispositivo emulado, sin embargo, he hecho algunas adivinanzas y me gustaría saber qué he hecho exactamente :-)

Aquí están los cambios en el código del termómetro que tuve que hacer para que funcionara junto con el simulador de sensor de temperatura:

Después de importar elsensorsimulator clases:

<code>import org.openintents.sensorsimulator.hardware.Sensor;
import org.openintents.sensorsimulator.hardware.SensorEvent;
import org.openintents.sensorsimulator.hardware.SensorEventListener;
import org.openintents.sensorsimulator.hardware.SensorManagerSimulator;
</code>

Tuve que quitar el

<code>import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
</code>

Cambiado

private SensorManager getSensorManager()

dentro

private SensorManagerSimulator getSensorManager()

Entonces surgió el primer problema. De acuerdo aCómo utilizar el SensorSimulator en su aplicación Cambié la línea:

return (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE);

dentro

return SensorManagerSimulator.getSystemService(this, SENSOR_SERVICE);

Y eso fue un error. Instad dethis Tuve que usargetContext(), No estoy seguro de por qué fue así, tal vez porquethermometer clase se extiendeView por lo tanto no es actividad? Y en lugar deSENSOR_SERVICE Tuve que ponerContext.SENSOR_SERVICE.

Después de eso, el siguiente cambio fue:

<code>private void attachToSensor() {
    SensorManagerSimulator sensorManager = getSensorManager();
    sensorManager.connectSimulator();
</code>

Ya que parecesensorsimulator no implementagetSensorList Tuve que reemplazar

<code>List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_TEMPERATURE);
</code>

con

<code>Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE);
</code>

y quitar

<code>if (sensors.size() > 0) {
        Sensor sensor = sensors.get(0);
</code>

Entonces, por supuesto también quité elelse Por lo tanto, la situación en la que falta el sensor de temperatura probablemente ahora arrojaría una excepción al intentar registrar el oyente.

Al final, tuve que hacer un cambio más para deshacerme de los errores de compilación, por alguna razón, la implementación deregisterListener enSensor Simulator acepta menos argumentos que el método de Android, así que tuve que eliminar elhandler parámetro de

<code>sensorManager.registerListener(this, sensor, SensorManagerSimulator.SENSOR_DELAY_FASTEST, handler);
</code>

Aquí, me gustaría saber por qué esta vez no tuve que usargetContext() en lugar dethis!?

Eso fue todo lo que tuve que cambiar, lo último fue eliminar los vars (manejadores) no utilizados, las importaciones no utilizadas (java.util.List) y eliminarhandler = new Handler();.

Me parece muy interesante este ejemplo de componente de interfaz de usuario personalizado y espero que alguien aclare y quizás perfeccione el código.

Respuestas a la pregunta(0)

Su respuesta a la pregunta