Android 용 센서 시뮬레이터를 구축하는 방법은 무엇입니까?
-
21-08-2019 - |
문제
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 대신 해당 객체를 사용할 수 있습니다.
제휴하지 않습니다 StackOverflow