我是python的新手,我想开发一些应用程序,使我可以在Windows中使用从手机获得的加速度计值。
使用SL4A(适用于Android的python),我创建了客户端和服务器脚本,以从加速度计读取值并将其通过套接字发送到服务器(在PC上运行)。

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

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


这是我的客户代码(Android手机):

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


如果我想一次读取值,则此方法很好,但是我想知道如何从这里开始,我希望能够使用值来控制游戏和其他应用程序。

谢谢阅读 :)

最佳答案

我的想法是先根据加速度计的特定范围尝试设备的不同运动(例如快速向上运动),收集输出值,然后简单地触发事件(或在游戏中需要触发的任何事情)值(相似的运动应具有相似的值范围)。

关于android - 从电话获取加速度计值,最好的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23042979/

10-11 10:38