문제

Android 플랫폼 응용 프로그램을 구축하고 있으며 가속도계를 사용하고 싶습니다. 이제 센서 시뮬레이션을위한 아주 좋은 응용 프로그램을 찾았습니다 (OpenIntents의 감각기) 그러나 내가하고 싶은 일을 위해, 내 자신의 센서 시뮬레이터 애플리케이션을 만들고 싶습니다.

이 작업을 수행하는 방법에 대한 정보를 찾지 못했습니다 (시뮬레이터의 항아리를 분해 할 수 있는지 모르겠습니다) 의도.

내가 어디서부터 시작할 수 있는지 아십니까? 빌드해야 할 코드가 무엇인지 어디에서 볼 수 있습니까?

기본적으로, 모든 방향에 대한 내 모든 요구.

도움이 되었습니까?

해결책

글쎄, 당신이 만들고 싶은 것은 에뮬레이터에서 테스트하는 동안 애플리케이션을 위해 Android 장치의 센서를 모방하는 응용 프로그램 인 것 같습니다.
아마도 응용 프로그램에서 다음과 같은 줄이 있습니다.

SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);

Sensormanager에서 사용하는 메소드가있는 인터페이스를 작성하지 않겠습니까?

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

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

그런 다음 실제 sensormanager 객체에서 해당 메소드를 호출하는 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()
}

그런 다음 또 다른 MySensorManager를 만들면 이번에는 소켓을 통해 센서 값을 입력하는 곳에 생성 할 데스크탑 응용 프로그램으로 소켓을 전달합니다.

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
}

마지막으로 첫 번째 줄을 교체하십시오.

SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);

새로운 라인으로 :

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

이제 이전에 사용한 Sensormanager 대신 해당 객체를 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top