从手机获取加速度计值,最佳方法是什么?

2 投票
1 回答
2812 浏览
提问于 2025-04-18 02:34

我刚开始学习Python,想做一个应用程序,可以在Windows上使用我从手机上获取的加速度计数据。通过SL4A(Android上的Python),我创建了客户端和服务器脚本,用来读取加速度计的值,并通过一个套接字把这些值发送到运行在电脑上的服务器。

这是我的服务器代码(Windows电脑):

import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('', 5000))
serversocket.listen(5)

while True:
    connection, address = serversocket.accept()
    buf = connection.recv(64)
    if len(buf) > 0:
        print buf

这是我的客户端代码(安卓手机):

import android, socket, time

droid = android.Android()

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('192.168.2.6', 5000))

def readAcc():
    dt = 100
    endTime = 300
    timeSensed = 0
    droid.startSensingTimed(2,dt)
    while timeSensed <= endTime:
        senout = droid.sensorsReadAccelerometer().result
        time.sleep(dt/1000.0)
        timeSensed+=dt

    print senout
    clientsocket.send(str(senout).strip('[]'))


readAcc()

droid.stopSensing()

输出示例:

1.8659877, 8.8259849999999993, 3.5412905000000001

如果我只想读取一次这些值,这个方法很好用。但我在想,接下来该怎么做,我希望能用这些值来控制游戏和其他应用程序。

谢谢你的阅读 :)

1 个回答

1

我的想法是先试着让设备做不同的动作(比如快速向上移动),然后收集这些动作产生的数值。接着,根据加速度计的特定数值范围来触发事件(或者在游戏中需要触发的其他东西),因为类似的动作应该会产生相似的数值范围。

撰写回答