Finora abbiamo visto come utilizzare diverse caratteristiche del Flash Lite, compatibili più o meno con tutti i modelli. Ci sono però alcune caratteristiche che funzionano solo su alcuni modelli, che possiamo definire "avanzate" poiché non comunissime: la vibrazione, l'invio di sms o mms, la possibilità di inviare e-mail, la possibilità di rilevare il livello di carica della batteria e molto altro.
Non tutti i cellulari supportano questi comandi, per cui se li utilizziamo all'interno di un lavoro che andrà su molti modelli dobbiamo prevedere l'eventualità che qualche caratteristica non sia supportata: in questa lezione ne vedremo alcuni, ne analizzeremo la sintassi e faremo qualche esempio su come evitare che il mancato supporto di uno o più di essi da parte di un determinato modello comporti qualche malfunzionamento non previsto.
Se vogliamo approfondire tutti i comandi, anche quelli non trattati in questa guida, li potremo trovare nella guida di Flash oppure nel pdf "FlashLite_1.1_authoring_guidelines.pdf" presente nel Flash Lite CDK che abbiamo scaricato nelle lezioni precedenti.
Capabilities (Capacità)
Flash Lite mette a disposizione dei comandi, detti "capabilities", per verificare la presenza di alcune caratteristiche sul dispositivo.Questi comandi restituiscono:
- 1 se la caratterista è supportata,
- 0 se non lo è.
In questa guida, ad esempio, abbiamo trattato l'argomento del sonoro e quello del caricamento di dati esterni: vorremmo essere sicuri che il modello su cui viene eseguito il filmato supporti ad esempio gli Mp3. In questo caso usiamo il comando _capMP3
.
Il prefisso _cap
è comune a tutti i comandi della categoria capabilities, la seconda parte del nome indica quale caratteristica vogliamo testare.
Ad esempio potremmo usare questo codice:
Listato 1. Esempio test sulla caratteristica MP3
if(_capMP3){
// azioni...
} else {
// altre azioni...
}
In questo modo, se il cellulare supporta gli mp3 eseguiremo il primo blocco di azioni, altrimenti eseguiremo il secondo blocco. Questo secondo blocco può ad esempio occuparsi di mostrare un messaggio del tipo "Questo cellulare non supporta gli mp3, pertanto questo filmato sarà eseguito senza musica". La lista completa dei comandi relativi alle capabilities è questa:
- _capCompoundSound
- _capEmail
- _capLoadData
- _capMFi
- _capMIDI
- _capMMS
- _capMP3
- _capSMAF
- _capSMS
- _capStreamSound
- _cap4WayKeyAS
Prendiamo in considerazione per un appunto _capSMS
e _capMMS
. Questi due comandi controllano se il cellulare è in grado di inviare un SMS o un MMS da Flash Lite; il metodo da usare in entrambi i casi è getURL()
. Quindi, per mandare un SMS, possiamo utilizzare:
Listato 2. Inviare SMS o MMS
getURL("sms:0123456789?body=SMS inviato da Flash Lite");
getURL("mms:0123456789?body=MMS inviato da Flash Lite");
Possiamo specificare il numero a cui inviare il messaggio e il contenuto del messaggio stesso.
Le capabilites potrebbero tornarci utili se volessimo sviluppare una piccola applicazione per l'invio di messaggi: potremmo far sì che se il cellulare supporta gli MMS ne venga inviato uno, altrimenti utilizzare un SMS. Ecco un codice che potrebbe andar bene per il controllo.
Listato 3. Esempio di controllo su invio di un messaggio
if (_capMMS) {
// invia un MMS
messaggio = "mms:0123456789?body=MMS da Flash Lite";
} else {
// invia un SMS
messaggio = "sms: 0123456789?body=sample sms message";
}
getURL(messaggio);
Nel caso in cui il cellulare non supporti qualche caratteristica fondamentale per il funzionamento dell'applicazione possiamo mostrare all'utente un messaggio tipo "Spiacente, questo modello non è compatibile con l'applicazione".
Fscommand2
Oltre ai comandi relativi alle capabilities, vi sono alcuni fscommand2 che sfruttano caratteristiche non presenti su tutti i modelli, anche in questo caso quindi potremmo dover restituire un messaggio di errore o adattare la nostra applicazione.
Fortunatamente, come per le capabilites anche questi fscommand2 restituiscono un determinato valore in base al fatto che la caratteristica che vogliamo usare sia supportata o meno.
Facciamo un esempio usando una caratteristica molto comune sui cellulari: la vibrazione.i comandi per utilizzarla sono startVibrate
e stopVibrate
.
Se il dispositivo non supporta questo comando, riceviamo in risposta il valore -1
. Facciamo un esempio:
Listato 4. Suscitare la vibrazione
stato = fscommand2("StartVibrate", 2500, 1000, 2);
- Il primo parametro indica la durata della vibrazione in millisecondi (in questo caso 2,5 sec),
- il secondo indica la durata della pausa tra le vibrazioni (in questo caso 1 sec),
- il terzo indica il numero di vibrazioni da effettuare.
La variabile stato
conterrà il valore restituito dall'operazione, che può essere:
-1
: la vibrazione non è supportata su quel cellulare0
: la vibrazione è supportata ed è stata avviata1
: la vibrazione è supportata ma c'è stato un errore
Per effettuare il controllo sulla compatibilità del dispositivo basterà controllare il valore della variabile stato:
Listato 5. Verificare la compatibilità con la vibrazione
stato = fscommand2("StartVibrate", 2500, 1000, 2);
if(stato == -1){
trace("La vibrazione non è supportata);
}
Tutti i comandi relativi ad informazioni o specifiche azioni restituiscono '-1' se non supportati e '0' se supportati. Alcuni come appunto startVibrate possono restituire altri valori se prevedono possibili errori. Lo stesso fullscreen, che abbiamo visto già dalle prime lezioni, restituisce '-1' se non supportato e '0' se supportato, per cui potremmo prevedere due versioni di una stessa interfaccia e poi mandare a quella giusta in base al supporto o meno della visualizzazione in fullscreen sul cellulare. Le possibilità sono molteplici.
Abbiamo visto come il problema del mancato supporto di alcune caratteristiche da parte di qualche cellulare sia un relativo, visto che i comandi restituiscono determinati valori se non supportati. Ricordiamo che abbiamo a disposizione la lista completa degli fscommand2 sia nella guida di Flash che nel pdf presente nel Flash Lite CDK. Sempre nel CDK troviamo tra gli esempi il file capabilities.swf (nella cartella Examples/Device Capabilities), utile per vedere un esempio di funzionamento dei comandi e per scoprire cosa supporta il nostro cellulare.