Non ho trovato nell'installazione di Python una funzione si legasse agli eventi del touchscreen cosi' mi sono orientato alla versione di Pygame per Android
sul cellulare ho fatto girare questo script
--------------------------------------------------------------------------------------------------
import pygame
import android
import socket
hostname = "192.168.0.1";
port = 21567;
data = "";
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM);
s.connect((hostname,port));
FPS = 10
TIMEREVENT = pygame.USEREVENT
pygame.init()
screen = pygame.display.set_mode((240, 320))
android.init()
android.map_key(android.KEYCODE_BACK, pygame.K_ESCAPE)
pygame.time.set_timer(TIMEREVENT, 1000 / FPS)
while True:
ev = pygame.event.wait()
if android.check_pause():
android.wait_for_resume()
if ev.type == pygame.MOUSEMOTION:
#print "pos (%d,%d)" % ev.pos
s.send(str(ev.pos[0])+";"+str(ev.pos[1]))
elif ev.type == pygame.KEYDOWN and ev.key == pygame.K_ESCAPE:
break
------------------------------------------------------------------------------------------
a differenza di Py4A, per Pygame si deve creare una directory pygame sulla SD e creare una directory per ognuno degli script che si devono testare. All'interno di questa directory si deve inserire un file icona, il file script che si deve necessariamente chiamare main.py ed un file denominato anrdroid.txt (per i dettagli consultare il sito)
A differenza di Py4A non e' possibile importare in modulo bluetooth per cui lo scambio dati e' avvenuta in UDP
Di seguito il programma server che replica a computer i movimenti del dito su telefono
-----------------------------------------------------------------------------------------
import string
from socket import *
import pygame
pygame.init()
size=[240,320]
screen=pygame.display.set_mode(size)
clock=pygame.time.Clock()
host = "192.168.0.1"
port = 21567
buf = 1024
addr = (host,port)
UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.bind(addr)
while 1:
data,addr = UDPSock.recvfrom(buf)
if not data:
print "Client has exited!"
break
else:
valori = string.split(data,";")
screen.set_at((int(valori[0]), int(valori[1])), (255,0,0))
pygame.display.flip()
UDPSock.close()
Nessun commento:
Posta un commento