Pregunta

Estoy construyendo una aplicación para la plataforma Android y me gustaría usar el acelerómetro. Ahora, he encontrado una muy buena aplicación de la simulación del sensor ( OpenIntents' SensorSimulator ), pero, por lo que yo quiero hacer, un gustaría crear mi propia aplicación de simulación del sensor.

No he encontrado información sobre cómo hacer esto (no sé si el desmontaje del frasco del simulador es correcta) y, como ya he dicho, me gustaría construir una versión más pequeña y más simple de un simulador de sensores, más adecuado para mis intenciones.

¿sabe usted dónde podría empezar? donde puedo ver lo que son las piezas de código que necesito para construir?

Básicamente, todo mi pide al usuario una cierta dirección.

¿Fue útil?

Solución

Bueno, parece que lo que quiere hacer es una aplicación que emula los sensores en un dispositivo Android para su aplicación durante las pruebas en el emulador.
Es probable que en su solicitud, usted tiene una línea como la siguiente:

SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);

¿Por qué no crear una interfaz que tiene los métodos que utiliza desde SensorManager:

interface MySensorManager {
    List<Sensor> getSensorList(int type);

    ... // You will need to add all the methods you use from SensorManager here
}

Y a continuación, crear un contenedor para SensorManager que sólo llama a esos métodos en un objeto real SensorManager:

class MySensorManagerWrapper implements MySensorManager {
    SensorManager mSensorManager;

    MySensorManagerWrapper(SensorManager sensorManager) {
        super();
        mSensorManager = sensorManager;
    }

    List<Sensor> getSensorList(int type) {
         return mSensorManager.getSensorList(type_;
    }

    ... // All the methods you have in your MySensorManager interface will need to be defined here - just call the mSensorManager object like in getSensorList()
}

Y a continuación, crear otro MySensorManager, que esta vez se comunica a través de un conector a una aplicación de escritorio que va a crear en el que introduce los valores de los sensores o algo así:

class MyFakeSensorManager implements MySensorManager {
    Socket mSocket;

    MyFakeSensorManager() throws UnknownHostException, IOException {
        super();
        // Connect to the desktop over a socket
        mSocket =  = new Socket("(IP address of your local machine - localhost won't work, that points to localhost of the emulator)", SOME_PORT_NUMBER);
    }

    List<Sensor> getSensorList(int type) {
        // Use the socket you created earlier to communicate to a desktop app
    }

    ... // Again, add all the methods from MySensorManager
}

Y, por último, vuelva a colocar su primera línea:

MySensorManager mSensorManager;
if(YOU_WANT_TO_EMULATE_THE_SENSOR_VALUES) {
    mSensorManager = new MyFakeSensorManager();
else {
    mSensorManager = new MySensorManagerWrapper((SensorManager)getSystemService(SENSOR_SERVICE));
}

Con una nueva línea:

<*>

Ahora puedes usar ese objeto en lugar del SensorManager que ha utilizado anteriormente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top