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

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

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

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

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

  • 如何删除图像系统的android在avd文件?
  • Android:redirect拨出电话
  • Android Studio模拟器不加载Windows 10
  • Android模拟按键
  • 如何在Android模拟器相机模拟图片?
  • Android Studio AVD,CRASH,GRADLE PROBLEMS,无法启动
  • 我如何configurationAndroid模拟器来模拟Galaxy Nexus?
  • Android模拟器报告600x1024 MDPI XLarge?
  • 那么,看起来你想做的是一个应用程序,将模拟器上的模拟器上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。