【问题标题】:How to transmit Android real-time sensor data to computer?如何将Android实时传感器数据传输到计算机?
【发布时间】:2013-08-17 05:43:58
【问题描述】:

我希望将Android智能手机收集的实时传感器数据传输到我的电脑上,并在我的电脑上进行信号处理。 我怎样才能做到这一点?非常欢迎任何有用的教程链接。

可以通过无线方式或 USB 电缆。

数据传输时,计算机如何处理?

我熟悉 Python,因此最好使用 Python 来处理即将到来的数据。

Python 是否可以不断接受新来的数据并进行处理?

【问题讨论】:

  • @RotaryHeart 我真的不知道如何开始。这篇文章是为了寻找一些教程来帮助我入门。
  • @RotaryHeart 甚至电缆连接都可以工作
  • 我可以帮你用 wifi 做(我已经做过),但它用 C#。
  • 我也需要..怎么做?

标签: android python data-transfer transmission


【解决方案1】:

一些 Android 应用允许您通过网络共享传感器:

你也可以read the sensors via ADB

【讨论】:

    【解决方案2】:

    您可以使用 python 套接字来接收数据并进行处理。 看:https://docs.python.org/2/howto/sockets.html 了解如何设置服务器机器。

    Android 有一个兼容的套接字,您可以使用它来发送数据: 看:http://examples.javacodegeeks.com/android/core/socket-core/android-socket-example/ 关于如何使用它的一些想法。

    编辑:这适用于 wifi 和 3g/4g。

    【讨论】:

    【解决方案3】:

    有多个 Android 应用可以无线传输传感器数据。结帐例如“智能手机 IMU GPS”[1],它是开源的 [2]。它通过UDP传输数据。用于接收数据流的 Python 代码 sn-p 在应用程序描述 [1] 中给出。确保智能手机和接收设备连接到同一个 WiFi 网络,并且没有防火墙阻止流量。

    [1]https://play.google.com/store/apps/details?id=de.lorenz_fenster.sensorstreamgps
    [2]https://sourceforge.net/projects/smartphone-imu/

    【讨论】:

    • smartphone-imu 对我来说效果很好,可以让您控制数据速率并且是 FOSS
    【解决方案4】:

    您可以使用 Github 中的 Sensor Server app,它将实时传感器数据流式传输到 WebSocket 客户端。

    要从 Android 接收实时传感器数据,您只需使用以下 URL 连接到应用程序

    ws://ip:port/sensor/connect?type=<sensor-type>
    

    其中&lt;sensor-type&gt; 是您要连接的传感器类型。例如

    对于加速度计:/sensor/connect?type=android.sensor.accelerometer

    定向:/sensor/connect?type=android.sensor.orientation

    陀螺仪:/sensor/connect?type=android.sensor.gyroscope

    等等……

    几乎每种语言都提供了 Websocket 协议的实现。要在 Python 脚本中接收实时数据,您可以使用 WebSocket client for Python

    import websocket
    
    
    
    def on_message(ws, message):
        print(message) # sensor data here in JSON format
    
    def on_error(ws, error):
        print("### error ###")
        print(error)
    
    def on_close(ws, close_code, reason):
        print("### closed ###")
        print("close code : ", close_code)
        print("reason : ", reason  )
    
    def on_open(ws):
        print("connection opened")
        
    
    if __name__ == "__main__":
        ws = websocket.WebSocketApp("ws://192.168.0.102:8082/sensor/connect?type=android.sensor.accelerometer",
                                  on_open=on_open,
                                  on_message=on_message,
                                  on_error=on_error,
                                  on_close=on_close)
    
        ws.run_forever()
    
    

    Sensor Server app和Websocket客户端必须连接到同一个网络

    【讨论】:

      猜你喜欢
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多