如何构buildAndroid的传感器模拟器?

我正在构buildAndroid平台的应用程序,我想使用加速度计。 现在,我发现了一个非常好的传感器仿真应用程序( OpenIntents的SensorSimulator ),但是为了我想做的事情,我想创build自己的传感器仿真器应用程序。

我还没有find有关如何做到这一点的信息(我不知道如果反汇编模拟器的jar子是正确的),正如我所说,我想build立一个更小和更简单的版本的传感器模拟器,更适合我意图。

你知道我可以从哪里开始? 我在哪里可以看到我需要构build的代码段是什么?

基本上,我只是要求一些方向。

Solutions Collecting From Web of "如何构buildAndroid的传感器模拟器?"

那么,看起来你想做的是一个应用程序,将模拟器上的模拟器上testing您的应用程序的Android设备上的传感器。
可能在你的应用程序中,你有这样一行:

SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 

为什么不创build一个接口,其中包含您在SensorManager中使用的方法:

 interface MySensorManager { List<Sensor> getSensorList(int type); ... // You will need to add all the methods you use from SensorManager here } 

然后为传感器pipe理器创build一个包装器,在实际的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() } 

然后创build另一个MySensorManager,这次通过套接字与桌面应用程序进行通信,您将创build一个桌面应用程序,在其中input传感器值或其他内容:

 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 } 

最后,replace你的第一行:

 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。