Cómo construir un simulador de sensores para Android?
Estoy construyendo una aplicación para la plataforma Android y me gustaría usar el acelerómetro. Ahora, he encontrado una aplicación muy agradable para la simulación de sensores ( SensorSimulator de OpenIntents ) pero, para lo que quiero hacer, me gustaría crear mi propia aplicación de simulador de sensor.
No he encontrado información sobre cómo hacer esto (no sé si el desmontaje del frasco del Simulador es correcto) y, como he dicho, me gustaría construir una versión más pequeña y más simple de un simulador de sensor, más adecuado para mi Intenciones
- Galaxy s3 tiene sensor de temperatura?
- Acelerómetro (acceso rápido) mediante NativeActivity NDK
- Obtener el ángulo del dispositivo mediante la función getOrientation ()
- Android: ¿Cómo se trata con baromters inexactos?
- ¿Qué hace SampleRate.MS16, MS32, MS128 stand para cuando está asociado con oyentes de sensor?
¿Sabes por dónde puedo empezar? ¿Dónde puedo ver cuáles son las piezas de código que necesito para construir?
Básicamente, todo lo que pido sólo por alguna dirección.
- Detectar si el teléfono está en el bolsillo o no
- Rotación Opengl de Android con datos de sensores
- Android: Problemas al calcular la orientación del dispositivo
- Valor de Android: Sensor.getResolution ()
- Edición de Pitch and Roll de Android
- ¿Cómo voy a detectar el sensor de movimiento en el receptor de radiodifusión?
- Android - SensorManager comportamiento extraño de getOrientation
- Cómo saber si mi SensorManager tiene un Sensor registrado
Bueno, parece que lo que quieres hacer es una aplicación que emulará los sensores de un dispositivo Android para tu aplicación mientras pruebas en el emulador.
Probablemente en su aplicación, tiene una línea como esta:
SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
¿Por qué no crear una interfaz que tenga 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 luego crear un envoltorio para SensorManager que sólo llama a esos métodos en un objeto SensorManager real:
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 luego crear otro MySensorManager, que esta vez se comunica a través de un socket a una aplicación de escritorio que va a crear donde se introducen los valores del sensor o algo:
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 finalmente, reemplace su primera línea:
SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
Con una nueva línea:
MySensorManager mSensorManager; if(YOU_WANT_TO_EMULATE_THE_SENSOR_VALUES) { mSensorManager = new MyFakeSensorManager(); else { mSensorManager = new MySensorManagerWrapper((SensorManager)getSystemService(SENSOR_SERVICE)); }
Ahora sólo puede utilizar ese objeto en lugar del SensorManager que utilizó antes.