Nokioteca [Nokia] Forum: Chiusura Applicazione Con Tasto Rosso - Nokioteca [Nokia] Forum

Salta al contenuto

Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

Chiusura Applicazione Con Tasto Rosso

#1 L   acasta69 

  • Member
  • PuntoPunto
  • Gruppo: Utente
  • Messaggi: 20
  • Iscritto: 11 settembre 2008
  • Cellulare:Nokia E51

Inviato 25 settembre 2009 - 12:37

Ciao a tutti,

sto cercando di implemetare il codice che previene l'uscita dell'applicazione quando si preme il tasto rosso.
Sto usando un codice di esempio che ho visto da diverse parti (ForumNokia e anche questo forum in un vecchio thread), ma non riesco a farlo funzionare.
In pratica mi sembra che la funzione definita con sys.exitfunc non venga mai chiamata, e premendo il tasto rosso il mio script termina e si chiude la shell di python.
Il funzionamento e' lo stesso sia sull'emulatore sia sul mio telefono.
Il codice e' il seguente:

import appuifw
import e32, sys
 
lock = e32.Ao_lock()

def quit():
    lock.signal()

appuifw.app.exit_key_handler = quit

def myexitfunc():
    appuifw.note(u"MyExitFunc", 'info')

sys.exitfunc = myexitfunc
appuifw.note(u"Running", 'info')
lock.wait()


Nel codice qua sopra non c'e' nemmeno la chiamata lock.wait() dentro myexitfunc (per ora mi basterebbe vedere che la funzione viene effettivamente chiamata), ma ho provato anche a metterla e non cambia niente: quando premo il tasto rosso il tutto si chiude.
Mi aiutate a capire dove sbaglio?

Grazie!
Ale
0

#2 L   madhacker 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 527
  • Iscritto: 16 settembre 2006
  • Cellulare:N95-2,5800

Inviato 25 settembre 2009 - 15:41

su
Per visualizzare questo link registrati o esegui il log in.
c'era questo codice
import appuifw, e32, sys
 
 
#Create an active object
app_lock = e32.Ao_lock()
 
#Define the function to be called when the right softkey is pressed
def quit():
	app_lock.signal()
	appuifw.app.set_exit()
 
#Set it as the right softkey's function
appuifw.app.exit_key_handler = quit
 
#Define the function to be called when the red key is simulated
#The function calls the active object's wait method
def myexitfunc():
	s = appuifw.app.screen
	appuifw.app.screen = 'large'
	appuifw.app.screen = s
	app_lock.wait()
 
#Set it as the red key's function
sys.exitfunc = myexitfunc
 
#Application code goes here

se lo salvi in un file .py e lo lanci dalla ScriptShell apparentemente non accade nulla, ma poi quando premi il tasto rosso vedrai che la Shell non si chiude.
Direi che lo script è funzionante :crying_anim02:
0

#3 L   acasta69 

  • Member
  • PuntoPunto
  • Gruppo: Utente
  • Messaggi: 20
  • Iscritto: 11 settembre 2008
  • Cellulare:Nokia E51

Inviato 25 settembre 2009 - 20:43

Boh, ho provato a copiare il codice cosi' com'e' ed usarlo sia sull'emulatore sia sul mio telefono.
In entrambi i casi premendo il tasto rosso la shell si chiude.
Potrebbe essere perche' manca il "corpo" dell'applicazione vera e propria, cioe' quello script definisce ed assegna alcune funzioni, ma poi termina senza fare nient'altro?

Cerchero' di fare qualche altra prova nel week-end.
Per il momento grazie per la risposta!
Ale
0

#4 L   madhacker 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 527
  • Iscritto: 16 settembre 2006
  • Cellulare:N95-2,5800

Inviato 25 settembre 2009 - 22:49

molto strano
per capire se la shell si chiude o no, prima di avviare lo script, scrivi una parola, poi avvi lo script, poi premi il tasto rosso e "riapri" la shell. vedrai che c'è ancora scritta quella frase, il che significherebbe che non si è chiusa :mumble:
una volta che hai testato ciò, puoi aggiungere il codice alla fine dello script
0

#5 L   acasta69 

  • Member
  • PuntoPunto
  • Gruppo: Utente
  • Messaggi: 20
  • Iscritto: 11 settembre 2008
  • Cellulare:Nokia E51

Inviato 26 settembre 2009 - 12:57

Ho appena provato: la parola scritta non compare, quindi in effetti la shell si e' chiusa e riaperta.
Ma ero quasi certo di questo: non compariva nell'elenco delle applicazioni che compare tenendo premuto il tasto "home".
Appena ho mezz'ora faccio qualche altro test.
0

#6 L   madhacker 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 527
  • Iscritto: 16 settembre 2006
  • Cellulare:N95-2,5800

Inviato 26 settembre 2009 - 13:11

mi sorge un dubbio.... che versione di python ( e quindi di shell ) hai ??
0

#7 L   acasta69 

  • Member
  • PuntoPunto
  • Gruppo: Utente
  • Messaggi: 20
  • Iscritto: 11 settembre 2008
  • Cellulare:Nokia E51

Inviato 26 settembre 2009 - 18:01

Visualizza Messaggimadhacker, il 26/09/2009 - 14:11, ha scritto:

mi sorge un dubbio.... che versione di python ( e quindi di shell ) hai ??

Ho la 1.9.7.
Al lancio della shell compare la scritta
Python for S60 Version 1.9.7 svn 3733.
Il telefono e' un Nokia E51 e la versione dell'SDK e' quella per S60 3rd edition FP1.
0

#8 L   madhacker 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 527
  • Iscritto: 16 settembre 2006
  • Cellulare:N95-2,5800

Inviato 27 settembre 2009 - 10:25

prova lo script usando la versione 1.4.5 di python e di scriptshell
possono coesistere entrambe sullo stesso cellulare anche su memorie di installazioni differenti :(
sulla 1.4.5 funziona bene, immagino che sulla 1.9.7 siano cambiate le cose

Messaggio modificato da madhacker il 27 settembre 2009 - 10:26

0

#9 L   acasta69 

  • Member
  • PuntoPunto
  • Gruppo: Utente
  • Messaggi: 20
  • Iscritto: 11 settembre 2008
  • Cellulare:Nokia E51

Inviato 27 settembre 2009 - 10:35

Grazie per la dritta, oggi pomeriggio provo.
0

#10 L   acasta69 

  • Member
  • PuntoPunto
  • Gruppo: Utente
  • Messaggi: 20
  • Iscritto: 11 settembre 2008
  • Cellulare:Nokia E51

Inviato 28 settembre 2009 - 10:41

Ho provato con la versione 1.4.5 e funziona: se premo il tasto rosso dopo aver fatto girare lo script, mi ritrovo la shell ancora aperta in background.
Peccato pero': non capisco perche' questa cosa piuttosto utile non sia piu' disponibile nelle ultime versioni...

Grazie ancora per l'aiuto!
0

Condividi questa discussione:


Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione