Question

Je construis une application pour la plate-forme Android et je voudrais utiliser l'accéléromètre. Maintenant, j'ai trouvé une application très agréable pour la simulation du capteur ( OpenIntents' SensorSimulator ) mais, pour ce que je veux faire, un voudrais créer ma propre application de simulateur de capteur.

Je ne l'ai pas trouvé des informations sur la façon de le faire (je ne sais pas si le démontage du pot du simulateur est correct) et, comme je le disais, je voudrais construire une version plus petite et plus simple d'un simulateur de capteur, plus adapté à mes intentions.

savez-vous où pourrais-je commencer? Où puis-je voir quels sont les morceaux de code que je dois construire?

En fait, toute ma demande juste pour une certaine direction.

Était-ce utile?

La solution

Eh bien, il semble ce que vous voulez faire est une application qui émuler les capteurs sur un appareil Android pour votre application lors du test sur l'émulateur.
Probablement dans votre application, vous avez une ligne comme ceci:

SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);

Pourquoi ne pas créer une interface qui a les méthodes que vous utilisez de SensorManager:

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

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

Et puis créez une enveloppe pour SensorManager qui appelle simplement ces méthodes sur un objet réel 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()
}

Et puis créer un autre MySensorManager, que cette fois-ci communique sur une prise à une application de bureau, vous allez créer où vous entrez les valeurs du capteur ou quelque chose:

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
}

Et enfin, remplacer votre première ligne:

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

Avec une nouvelle ligne:

<*>

Maintenant, vous pouvez simplement utiliser cet objet au lieu de l'SensorManager que vous avez utilisé avant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top