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

时间:2014-04-13 12:52:55

标签: android python

我是python的新手,我想制作一些应用程序,允许我使用我从手机中获取的加速度计值。 使用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

如果我想读取一次值,这可以正常工作,但我想知道如何从这里开始,我希望能够使用这些值来控制游戏和其他应用程序。

感谢阅读:)

1 个答案:

答案 0 :(得分:1)

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