Frage

Ich baue eine Anwendung für die Android-Plattform, und ich mag das Beschleunigungsmesser verwenden. Nun, ich habe eine sehr schöne Anwendung für Sensorsimulation gefunden ( Open SensorSimulator aber), für das, was ich tun will, ein möchte meine eigene Sensor-Simulator-Anwendung erstellen.

Ich habe nicht gefunden Informationen darüber, wie dies zu tun (ich weiß nicht, ob die Demontage des Glas des Simulator korrekt ist) und, wie gesagt, würde Ich mag eine kleinere und einfachere Version eines Sensorsimulator bauen, mehr geeignet für meine Absichten.

Wissen Sie, wo könnte ich anfangen? wo kann ich sehen, was die Teile des Codes sind, die ich brauche zu bauen?

Im Grunde genommen alle meine frage nur für irgendeine Richtung.

War es hilfreich?

Lösung

Nun, so scheint es, was wollen Sie machen, ist eine Anwendung, die die Sensoren auf einem Android-Gerät für Ihre Anwendung emuliert wird, während auf dem Emulator zu testen.
Wahrscheinlich in der Anwendung, haben Sie eine Zeile wie diese:

SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);

Warum nicht eine Schnittstelle, die Methoden, die Sie von Sensormanager verwenden:

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

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

Und dann einen Wrapper für Sensormanager erstellen, die nur diese Methoden auf einem realen Sensormanager-Objekt aufruft:

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

Und erstellen dann eine andere MySensorManager, dass diese Zeit kommuniziert über eine Steckdose mit einer Desktop-Anwendung Sie erstellen, in dem Sie die Sensorwerte oder etwas eingeben:

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
}

Und schließlich ersetzen Sie Ihre erste Zeile:

SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);

Mit einer neuen Zeile:

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

Jetzt können Sie nur das Objekt anstelle des Sensormanager verwendet, um Sie vor.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top