음, 에뮬레이터에서 테스트하는 동안 응용 프로그램에서 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);
를 사용하면 센서 값이나 뭔가를 입력 할 경우 데스크톱 응용 프로그램에 소켓을 통해 nicates 당신이 만듭니다
MySensorManager mSensorManager;
if(YOU_WANT_TO_EMULATE_THE_SENSOR_VALUES) {
mSensorManager = new MyFakeSensorManager();
else {
mSensorManager = new MySensorManagerWrapper((SensorManager)getSystemService(SENSOR_SERVICE));
}
이제 이전에 사용하던 SensorManager 대신 해당 객체를 사용할 수 있습니다.
안녕하세요. 이삭! 귀하의 답변에 감사드립니다. 그것은 내가 만들고자하는 것보다 더 많거나 적은 것이며, 나는 그것을 시험해보고 그것을 어떻게 알았는지 알려줄 것입니다. =) – Hugo
안녕하세요, 솔루션을 구현 한 적이 있습니까? 최근에 시도해 보니 문제가 발생했습니다. 새 SensorEvent 객체를 만들어야하지만, SensorEvent 클래스의 마지막이므로 값을 설정할 수 없습니다. Reflection을 통해이를 설정함으로써 해결 방법을 시도했을 때 SensorEvent에 ClassNotFound 오류가 발생했습니다. corretly를 기억하면 ... – andreas