Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

System capabilities, il segreto è adattarsi

Creare applicazioni adatte ai diversi modelli di cellulari e alle diverse capacità
Creare applicazioni adatte ai diversi modelli di cellulari e alle diverse capacità
Link copiato negli appunti

Ci sono aspetti che differenziano le applicazioni "amatoriali" da quelle di un certo livello di professionalità. Si nota subito ad esempio se una applicazione ha un'interfaccia intuitiva o se è affidabile e funzionale.

In Flash Lite abbiamo la possibilità di sviluppare applicazioni installabili su diversi modelli di cellulari. Per questo dobbiamo renderle scalabili mettendo in piedi meccanismi per evitare che l'assenza di una caratteristica su un particolare modello impedisca all'utente l'uso del nostro programma.

Le System capabilities

Per creare un'applicazione in grado di rilevare l'eventuale assenza di requisiti necessari alla sua corretta esecuzione possiamo usare i comandi relativi alle "System capabilities" (caratteristiche di sistema) disponibili fin dalla prima versione di Flash Lite e ulteriormente ampliate in Flash Lite 2. Questi comandi restituiscono un valore a seconda della capacità che ha un dispositivo di supportare o meno una certa caratteristica.

Basandoci sul risultato restituito da questi comandi sarà possibile far "reagire" la nostra applicazione modificando un certo comportamento o mostrando messaggi che informino l'utente di eventuali problemi. In questo modo il limite del dispositivo può solo limitare le funzionalità del programma ma non ne comprometterà il funzionamento generale.

Queste precauzioni richiedono più tempo in fase di sviluppo per impostare le varie condizioni, ma come risultato finale avremo un'applicazione sicuramente più professionale.

La lista di capabilities a disposizione è piuttosto lunga, le più importanti sono relative a immagini, video, audio e shared object, ovvero quelle più spesso utilizzate all'interno di un'applicazione e non sempre supportate da tutti i modelli.

Immagini, audio e video

Per queste categorie esiste una capability in grado di fornirci l'elenco delle risorse e delle estensioni che il cellulare riesce a caricare dinamicamente.

L'inserimento di questi elementi all'interno del filmato durante lo sviluppo invece non crea problemi poiché, inglobati all'interno dell'swf, non sono soggetti alle eventuali limitazioni della periferica. L'unica limitazione in questo caso è data dal supporto che Flash stesso ha del formato.

Ottenere la lista dei formati caricabili esternamente

System.capabilites.MIMETypes

Trace del comando precedente

image/gif,image/jpg,image/png,video/3gpp,video/mp4,video/mov,audio/x-midi,audio/aac

Questi valori sono contenuti all'interno di un array, pertanto possiamo accedere ad ogni singolo valore in questo modo:

System.capabilities.MIMETypes[0]
System.capabilities.MIMETypes[1]
System.capabilities.MIMETypes[2]
...

Abbiamo a disposizione anche dei comandi in grado di fornirci le estensioni riguardanti le singole categorie, quali:

  • System.capabilities.audioMIMETypes
  • System.capabilities.imageMIMETypes
  • System.capabilities.videoMIMETypes

Il loro funzionamento è analogo al comando visto in precedenza.

Grazie a questi comandi possiamo valutare quale formato sia supportato dal cellulare e caricare di conseguenza il file desiderato. Questo significa avere a disposizione diversi formati per ogni ogni risorsa (audio, immagini ...) con una conseguente spesa di memoria, ma con il vantaggio di una maggiore compatibilità del programma.

Ancora, per l'audio abbiamo a disposizione ulteriori capabilities per poter stabilire il supporto per il singolo formato, che sono

  • System.capabilities.hasCMIDI
  • System.capabilities.hasMIDI
  • System.capabilities.hasMMF
  • System.capabilities.hasMP3
  • System.capabilities.hasSMAF

Possiamo facilmente immaginare un esempio per permettere l'esecuzione di un suono esterno, utilizzando il costrutto if else if.

suono = new Sound();

if(System.capabilities.hasMP3)
{
  suono.loadSound("suono.mp3");
}
else if(System.capabilities.hasMMF)
{
  suono.loadSound("suono.mmf");
}
else if(System.capabilities.hasMIDI){
  suono.loadSound("suono.midi");
}

Analogamente possiamo effettuare il controllo sull'array contenente i formati di immagine supportati

if(System.capabilities.imageMIMETypes[0] == "image/jpg")
{
  loadMovie("foto.jpg");
}
else if(System.capabilities.imageMIMETypes[0] == "image/gif")
{
  loadMovie("foto.gif");
}

Shared object

Per quanto riguarda gli Shared Object vi è un solo comando, del resto l'unica cosa che ci serve sapere è se siano supportati o meno. Questa informazione ci viene fornita dal comando:

System.capabilities.hasSharedObjects

Questa capability restituisce true se gli shared object sono supportati, false se non lo sono.

Se gli Shared Object non sono supportati da una periferica difficilmente possiamo intervenire con un comportamento alternativo. Si tratta, infatti, di una carenza importante: non possiamo salvare o caricare informazioni. In questo caso possiamo comunque fornire all'utente un messaggio per informarlo del problema.

If(System.capabilities.hasSharedObjects)
{
  // azioni per scrivere il file
}  
else
  trace("Errore, non è possibile salvare i dati, non sono supportati gli shared objects")

Messaggistica

Nella creazione di applicazioni in cui realizzare l'invio di MMS e/o SMS, possiamo avvalerci di due caratteristiche: hasMMS e hasMMS. Con queste possiamo creare un controllo che in condizioni normali invii un MMS, ove l'invio di MMS non fosse supportato invii un SMS e nel caso fosse impossibile inviare messaggi, restituisca un messaggio di errore.

if(System.capabilities.hasMMS)
{
  // invia MMS
}
else if(System.capabilities.hasSMS)
{
  trace("Si possono inviare solo SMS");
  // invia SMS
}
else
{
  trace("Non è possibile inviare messaggi");
}

Sempre per quanto riguarda la messaggistica, è possibile controllare anche il supporto per le e-mail.

trace(System.capabilities.hasEmail)

Conclusione

Oltre alla capabilities esaminate in questo articolo ve ne sono anche molte altre, alcune rilevano caratteristiche attualmente non supportate dalla maggior parte dei dispositivi (mouse, penna, tastiere esterne) ed altre di utilizzo meno comune (rilevazione dell'orientamento dello schermo, rilevazione del sistema operativo, etc.). Grazie a questi comandi possiamo avere una panoramica generale dello stato e delle caratteristiche della periferica ed ottenere applicazioni decisamente più professionali.

Ti consigliamo anche