Jump to content
Nokioteca Forum

Nuova Appliczione, Utilità X Sms


mac_mc83
 Share

Recommended Posts

Ciao a tutti, oggi ho finito di testare (e pare che funzioni... ;) ) una nuova piccola applicazione.

Potrebbe non tornare utile tutti i giorni...insomma dipende dova vai con il cellulare!! mi spiego meglio:

spesso mi capita di passare in zone con dei vuoti di campo di qlc chilometro, o per tornare a casa mi devo fare strade cn molte gallerie, quidi la ricezione del telefono lascia spesso a desiderare, quindo mi sono scritto questa semplica applicazione in python che permettedi inviare degli sms...

applicazione tuttavia che, in mancanza di copertura di rete, resta in attesa con il mesaggio che si scrive in memoria e aspetta fino a quando non si aggancia all rete per inviare cosi il messaggio.

L'ho progettata per utilità personale in principio ma spero che possa tornare utile anche a qlc altro!!

ciao !! ;);)b)

p.s. Come al solito ringrazio tutti quelli che hanno risposto ai mei interrogativi durante lo sviluppo b) ...grazie mille ciao!!

SmsSender.sis

Modificato da mac_mc83
Link to comment
Condividi su altri siti

Ciao a tutti, oggi ho finito di testare (e pare che funzioni... ;) ) una nuova piccola applicazione.

Potrebbe non tornare utile tutti i giorni...insomma dipende dova vai con il cellulare!! mi spiego meglio:

spesso mi capita di passare in zone con dei vuoti di campo di qlc chilometro, o per tornare a casa mi devo fare strade cn molte gallerie, quidi la ricezione del telefono lascia spesso a desiderare, quindo mi sono scritto questa semplica applicazione in python che permettedi inviare degli sms...

applicazione tuttavia che, in mancanza di copertura di rete, resta in attesa con il mesaggio che si scrive in memoria e aspetta fino a quando non si aggancia all rete per inviare cosi il messaggio.

L'ho progettata per utilità personale in principio ma spero che possa tornare utile anche a qlc altro!!

ciao !! ;);)b)

p.s. Come al solito ringrazio tutti quelli che hanno risposto ai mei interrogativi durante lo sviluppo b) ...grazie mille ciao!!

SmsSender.sis

carina l'idea.. se posso darti 1 pò di consigli:

- migliorare l'icona ;) non mi convince molto!

- Per la scelta del numero, prova a fare in modo di scegliere il numero dai contatti della rubrica, studiati il modulo 'contacts' classe 'ContactDb'

per la rubrica, non ho mai provato a realizzare qlksa con questo modulo, però leggendo la documentazione pys60 posso provare a darti delle dritte (ovviamente essendo parti di codice non testate, devi verificare se vanno o meno e fare le opportune modifiche ;))

innanzi tutto importa il modulo contacts:

import contacts, appuifw
db = contacts.open()
arr=[]
listobj=[]
for id in db:
  cobj = db[id]
  listobj.append(cobj)
  arr.append(unicode(cobj.title)) #aggiunge ad arr il nome con cui è registrato in rubrica il contatto corrispondente al relativo 'id'
sel_index = appuifw.selection_list(arr , search_field=1) #search_field=1 significa che c'è il campo per la ricerca del testo
sel_obj = listobj[sel_index] #ottiene l'oggetto 'Contact' selezionato dall'array listobj, riempito precedentemente dal ciclo for.

#ora, di 1 nome in rubrica, può contenere uno o + numeri di telefono, quindi bisogna vedere quanti numeri sono assegnati a quel contatto:

sel_fields=sel_obj.find() #cerca tutti i campi assegnati all'oggetto in rubrica.
if(len(sel_fields)==1):
  #se è solo 1 numero, manda l'sms a quel numero! lo ottieni con questo metodo: sel_fields.value
  numero=sel_fields.value
  ...continua, scrivi testo + invia sms...
else: #se è più di un numero allora: crea 1 lista con tutti i numeri di quel contatto
  arr2=[]
  for i in range(0,len(sel_fields)):
     arr2.append(unicode(sel_fields[i].value))
  sel_index2 = appuifw.selection_list(arr2 , search_field=0)
  numero=sel_fields[sel_index2].value
  ...continua, scrivi testo + invia sms...

dovresti poterlo realizzare approssimativamente cosi, il codice l'ho steso ora su 2 piedi, senza poterlo testare, non so se è tutto corretto, l'ho scritto seguendo la documentazione del pys60 (che non ha esempi pratici, ma solo la teoria sui vari moduli, classi ecc...) quindi magari qlksa o l'ho saltata o nn è del tutto corretta.. fammi sapere! ciao ;)

Modificato da dokkis
Link to comment
Condividi su altri siti

Grazie...dokkis, allora faccio dei test poi faccio sapere i risultati....

ehm si l'icone l'ho disegnata a mano con il photoshop...effettivamente mi sa che non è escita un gra che bene!!!

be allora provo ad implemetare il programma con l'uso del modulo contact e vediadiamo se riesco a far funzionare lascelta da rubrica

ciao!!!

p.s. grazie per le critiche e i consigli ciao!

Link to comment
Condividi su altri siti

Aggiungo qualche altra osservazione:

- se non c'è segnale il programma va in ciclo while fino a quando arriva il segnale. Fin qui tutto ok. Ma appena arriva il segnale lancia l'sms all'interno del ciclo while. Quando esce dal ciclo while perchè la variabile è cambiata, lancia di nuovo l'sms. Quindi 2 sms.

- L'idea di dokkis è giusta, ma implementa tutti i due i metodi perchè può essere necessario non memorizzare il numero oppure scegliere uno già presente nei contatti.

Modificato da Oper
Link to comment
Condividi su altri siti

In effetti stavo cercando di ricordare quale era l'istruzione: xD

Invece di usare uqesto passaggio:

   while sign == 0:
       sign = sysinfo.signal_bars()
       appuifw.note(u"Segnale assente, in attesa...")
       if sign > 0:
           appuifw.note(u"Copertura di rete presente, invio messaggio in corso...")
           messaging.sms_send(numero,mes)
           appuifw.note(u"Messaggio inviato")
           start_menu()

   if sign > 0:
       appuifw.note(u"Copertura di rete presente, invio messaggio in corso...")
       messaging.sms_send(numero,mes)
       appuifw.note(u"Messaggio inviato")
       start_menu()

usa questo:

   i=0
   while sign==0:
       sign = sysinfo.signal_bars()
       if i==0:
           i=1
           appuifw.note(u"Segnale assente, in attesa...")
   appuifw.note(u"Copertura di rete presente, invio messaggio in corso...")
   messaging.sms_send(numero,mes)
   appuifw.note(u"Messaggio inviato")
   start_menu()

perchè ti fa sempre la stringa a video con il relativo beep e potrebbe essere una rottura.

Link to comment
Condividi su altri siti

Allora! Intanto complimenti! Crei applicazioni ogni due giorni! b)

Arrivando al programma premetto che ho un N70, ma non funziona, nel senso che quando faccio invia sms mi si chiude! Ho provato perciò a capire la causa e ho scoperto che sign = sysinfo.signal_bars() non va! Forse è il modulo che non funziona!

Poi per il menù quando ci fai if sell==1: ecc...

per l'ultimo if mettici else senza nessuna condizione così se si schiaccia il SoftKey Sx esce direttamente dal programma!

Link to comment
Condividi su altri siti

Allora! Intanto complimenti! Crei applicazioni ogni due giorni! b)

Arrivando al programma premetto che ho un N70, ma non funziona, nel senso che quando faccio invia sms mi si chiude! Ho provato perciò a capire la causa e ho scoperto che sign = sysinfo.signal_bars() non va! Forse è il modulo che non funziona!

Poi per il menù quando ci fai if sell==1: ecc...

per l'ultimo if mettici else senza nessuna condizione così se si schiaccia il SoftKey Sx esce direttamente dal programma!

prova ad installare l'ultimo python disponibile dal sito...

la funzione sysinfo.signal_bars() non è sempre esistita in tt le versioni di pys60, prima era sysinfo.signal() e sysinfo.signal_strength() (nel pys 1.3.15 ad es..) non so da quale versione hanno cambiato il nome di quel metodo...

Link to comment
Condividi su altri siti

grazie per le dritte, per le piccole modifiche ci sono, invece per l'implementazione delle lettura della rubrica del telefono ho ancora qlc problema... ma spero di risolvere presto... a risentirci ciao!!!

per la rubrica, ho provato lo script che ti avevo scritto, e con mio stupore funziona! b) pensavo ci fosse qlk piccolo errore invece va.. c'è solo 1 cosa da aggiustare.. adesso aggiusto e posto un py che mostra come usare la rubrica! :D

se poi hai prb ad implementarla posso aiutarti io.. (sempre se nn vuoi fare tutto da solo b))

ps: ci sono dei piccoli prb, se do annulla al dialog dove scrivo il testo, cerca di mandare cmq il messaggio! mi sa che ti sei scordato qlk 'return' per strada ;) o nn controlli proprio cosa viene scelto nella query!!!

poi il testo del msg è meglio se lo scrivi in una textbox!!!

guarda nella documentazione pys60 'Text Type!'

in generale:

import appuifw

appuifw.app.body=t=appuifw.Text()

t.bind(tasto_codice,funzionedicallback)

in pratica all'interno di text, quando viene digitato il tasto che bindi, richiama la funzionedicallback.. ^^

Modificato da dokkis
Link to comment
Condividi su altri siti

ti posto l'esempio di 1 scriptino che usa la rubrica... dovresti riuscire ad implementarlo nel prg!!! unico difetto è che la rubrica nn è ordinata alfabeticamente (a me lo sono solo alcuni contatti, altri nn sono ordinati, bisognerebbe creare 1 metodo x ordinarli..) se vuoi possiamo collaborare.. se vuoi e se lo hai aggiungimi ad msn (contatto nel mio profilo) dato che nn è 1 cosa complicatissima posso dedicarci 1 pò di tempo (sto sotto esami di maturità -.-'')

1 altra funzione che potresti aggiungere al programma è quella per mandare 1 msg ad 1 determinato orario! b)

vbbè ma qst semmai viene dopo, cmq era 1 spunto per ampliare il prg! ciao ^^

rubrica.txt

Link to comment
Condividi su altri siti

allora intanto grazie per l'interessamento...ieri sera non ce l'ho proprio fatta...pure io sto in periodo X sto cn gli ultimi esami e la tesi... cmq cambiando discorso:

quell'errore che invia il mess se si annulla l'avevo notato l'ho appena risolto (almeno credo...non mi ha dato problemi ora che l'ho provato)

ora mi guardo lo script che hai postato cosi vedo di capirci qlc...

thx... a risentirci

Link to comment
Condividi su altri siti

oh raga ho provato a fa un esperimentino...pero in modo che chiami.-..cosi da provare il modulo contacts..ma mi da errore

import appuifw
import telephone
import sysinfo
import contacts

def chiama():
 ar=[u"Numero Manualmente",u"Numero dalla Rubrica"]
 sel = appuifw.selection_list(ar)
 if(sel==0):
		 numero = appuifw.query(u"Digita numero", "float")
		 numero=unicode(str(numero)[:-2])
 else: 
	db = contacts.open()
	arr=[]
	listobj=[]
	for id in db:
	  cobj = db[id]
	  listobj.append(cobj)
	   arr.append(u(cobj.title)) #aggiunge ad arr il nome con cui è registrato in rubrica il contatto corrispondente al relativo 'id'
	sel_index = appuifw.selection_list(arr , search_field=1) #search_field=1 significa che c'è il campo per la ricerca del testo
	sel_obj = listobj[sel_index] #ottiene l'oggetto 'Contact' selezionato dall'array listobj, riempito precedentemente dal ciclo for.

#ora, di 1 nome in rubrica, può contenere uno o + numeri di telefono, quindi bisogna vedere quanti numeri sono assegnati a quel contatto:

   sel_fields=sel_obj.find() #cerca tutti i campi assegnati all'oggetto in rubrica. (come primo elemento, aggiunge automaticamente il nome della persona selezionata).
   if(len(sel_fields)==2): #==2 xkè come primo elemento c'è il nome della persona selezionata!
	  #se è solo 1 numero, manda l'sms a quel numero! lo ottieni con questo metodo: sel_fields.value
	  numero=sel_fields[1].value
	  telephone.dial(str(numero))
  else: 
	 arr2=[]
	 for i in range(1,len(sel_fields)):
		arr2.append(unicode(sel_fields[i].value))
	 sel_index2 = appuifw.selection_list(arr2 , search_field=0)
	 numero=sel_fields[sel_index2+1].value
	 #...continua, scrivi testo + invia sms...
	 telephone.dial(str(numero))
	 appuifw.app.menu=[(u"Menu principale",start_menu)]

def exit():
appuifw.app.set_exit()
appuifw.note(u"Arrivederci")
look.signal()

def start_menu():
appuifw.app.screen = "normal"
menu = [(u"chiama", u"Esci"]
sel = appuifw.selection_list(menu)
if sel == 0:
	chiama()
if sel == 1:
	exit()

appuifw.app.title = u"why?!?!"
lock = e32.Ao_lock()
appuifw.app.screen = "normal"
start_menu()

Link to comment
Condividi su altri siti

Ho un telefono SYmbian UIQ, ma so per certo che ci girano anche i programmi per S60, se scritti senza interfaccia grafica.

E il problema dei messaggi non inviati ce l'ho ovviamente anch'io (e' un marchio di fabbrica Symbian...).

Cosa fa esattamente questo programma? E' alternativo a quello di default per inviare i mex, oppure ritenta l'invio di quelli non inviati dall'applicazione messaggi standard?

Python puo' accedere al "symbian message store", ovvero all'archivio messaggi di sistema?

So come realizzare in teoria un programma che imposta i messaggi in "da inviare" invece che in "falliti"... ma non sono in grado, nella pratica, di scrivere il codice (ergo, so quali librerie e fuzioni c++ servono, ma non so come usarle), se serve una mano...

Link to comment
Condividi su altri siti

@dok, hai segnalato tu stesso questo link qualche post fa... b)

http://wiki.forum.nokia.com/index.php/SMS_Receiver

In pratica si tratta di dover gestire l'evento EMsvEntriesChanged, dopodiche' controllare lo stato del messaggio e se corrisponde ad "Invio Fallito" allora bisogna "rischedularlo" per l'invio utilizzando la funzioncina apposita (di cui mi sfugge il nome, forse e' qualcosa come ScheduleForSending)

Modificato da Il.Socio
Link to comment
Condividi su altri siti

@dok, hai segnalato tu stesso questo link qualche post fa... ;)

http://wiki.forum.nokia.com/index.php/SMS_Receiver

In pratica si tratta di dover gestire l'evento EMsvEntriesChanged, dopodiche' controllare lo stato del messaggio e se corrisponde ad "Invio Fallito" allora bisogna "rischedularlo" per l'invio utilizzando la funzioncina apposita (di cui mi sfugge il nome, forse e' qualcosa come ScheduleForSending)

;) ma che davvero? na io avevo segnalato il link per accedere alle chiamate in entrata... b)

cmq sia si avevo visto quella pagina mi sembra.. ma nn avevo capito come controllare lo stato del msg... xD

EDIT:

ho trovato degli appunti dello stesso jumpjack:

http://jumpjack.wordpress.com/2007/01/

quindi bisogna provare a lavorare con la classe TMsvEntry e le funzioni SendingState() e SetSendingState()... xD appena avrò 1 pò di tempo, dopo gli esami, vedo che riesco a tirare fuori.. (c'ho 400mila progetti che vorrei portare avanti dopo l'esame! b))

Modificato da dokkis
Link to comment
Condividi su altri siti

Please sign in to comment

You will be able to leave a comment after signing in



Accedi Ora
 Share

×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy