Android 从手机获取加速度计值,最佳方法?
我对python非常陌生,我想制作一些应用程序,允许我使用在windows中从手机获得的加速计值。 使用SL4A(python for android),我创建了客户端和服务器脚本,从加速计读取值,并通过套接字将它们发送到服务器(在pc上运行) 这是我的服务器代码(windows pc): 这是我的客户端代码(android手机): 如果我想读取一次这些值,这很好,但我想知道如何从这里开始,我希望能够使用这些值来控制游戏和其他应用程序Android 从手机获取加速度计值,最佳方法?,android,python,Android,Python,我对python非常陌生,我想制作一些应用程序,允许我使用在windows中从手机获得的加速计值。 使用SL4A(python for android),我创建了客户端和服务器脚本,从加速计读取值,并通过套接字将它们发送到服务器(在pc上运行) 这是我的服务器代码(windows pc): 这是我的客户端代码(android手机): 如果我想读取一次这些值,这很好,但我想知道如何从这里开始,我希望能够使用这些值来控制游戏和其他应用程序 感谢阅读:)我的想法是首先尝试设备的不同运动(例如,快速向上
感谢阅读:)我的想法是首先尝试设备的不同运动(例如,快速向上运动),收集输出值,然后根据特定的加速度计值范围(类似的运动应该有类似的值范围)简单地触发事件(或游戏中需要触发的任何事件).事实上,我还不太清楚,我需要一个不断更新的变量,但将'readAcc()'与'send'命令放在一个循环中仍然只会给我一个变量。到目前为止,我只能够发送一个字符串而不重新启动脚本。经过一些测试后,我认为问题在于我只能在建立连接后运行clientsocket.send()一次。
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