Jumping Jack Flash weblog

Rilevare una chiamata in Jython – vecchio post

Posted in Java, Javaphone API, jython, Motorola a1000, Symbian, Symbian UIQ by jumpjack on 9 febbraio 2007

Questo post si è evoluto in quest’altro più completo

Per intercettare una chiamata usando Jython e Javaphone API bisogna usare listener ed eventi di Java.

Quando una classe Java implementa un listener, ogni volta che si verifica un evento gestito da quel listener esso verrà “inoltrato” alla classe; questa lo potrà gestire se contiene un metodo che ha lo stesso nome dell’evento.

Una chiamata è gestita dal listener CallListener. L’arrivo di una chiamata causa un evento callActive(CallEvent event). Il metodo Event.getID() restituisce il tipo di evento: CALL_ACTIVE, CALL_INVALID, CALL_EVENT_TRANSMISSION_ENDED.

Partendo da questo sorgente di esempio:

class action(awt.event.ActionListener):
def actionPerformed(self,event):
java.lang.System.exit(0)

button = awt.Button(“Close Me!”) button.addActionListener(action())

che equivale a questo:

def exit(event):
java.lang.System.exit(0)

button = awt.Button(“Close Me!”, actionPerformed=exit)

si può provare a dedurre il codice Jython necessario a rilevare una chiamata in arrivo:

class gestisciChiamate(java.awt.Frame, javax.telephony.CallListener):
def callActive(self,event):
print “E’ arrivata una chiamata!”

Bisogna però “agganciare” le chiamate alla classe. Se aver definito la classe non è sufficiente, forse bisogna aggiungere un listener all’address del telefono:

“In order to register as a listener for events reported for all calls involving a specific Address, as soon as the Calls are created, an application may implement the CallListener interface and then register with the Address, via the Address.addCallListener method.”

Bisogna quindi “prendere” un Address dal Provider, e applicargli il metodo addListener; tutto questo dovrà essere fatto FUORI dalla classe, nell’inizializzazione del programma (o nel metodo __init__):

[…]
import com.symbian.javax.telephony
peer = com.symbian.javax.telephony.EpocJtapiPeer()
myprovider = peer.getProvider(“EpocGsmMobileProvider”)
terms = myprovider.getTerminals
term = terms[0]
term.addCallListener(gestisciChiamate())

2 Risposte

Subscribe to comments with RSS.

  1. jumpjack said, on 13 febbraio 2007 at 12:20

    Questo post si è “evoluto” in quest’altro:

  2. […] Rilevare una chiamata in Jython – vecchio post […]


Puoi inserire un commento qui sotto; diventerà visibile dopo la moderazione dell'amministratore

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: