Salta navigazione.
Home

Tesi: Sviluppare software per piattaforme di telefonia mobile

Capitolo
I

Background
storico e tecnologico



1.1 - L’evoluzione della
telefonia mobile

primatelefonata.jpg

//futuro.vc/tag/vintage/

         Anche
se in realtà un primo telefono mobile era già apparso  nel 1921 sulle auto
della polizia di Detroit[1],
la prima vera telefonata da un dispositivo cellulare avvenne nel 3 Aprile del
1973, data in cui l’ingegnere americano Martin Cooper[2], dipendente
della società Motorola, effettua una chiamata da una strada di Manhattan ad un
suo concorrente; il direttore dei laboratori di ricerca Bell-Labs Dr. Joel
Engel[3].
L’apparecchio in questione era un prototipo del Dyna-Tac, un telefono del peso
di 1130 grammi, senza display e altre funzioni oltre a quella di parlare,
ascoltare e comporre il numero. La sua batteria aveva una autonomia di 35
minuti e impiegava più di 10 ore per ricaricarsi. Il Dyna-Tac per comunicare si
collegava con una stazione ricevente situata a New York, che instradava la
telefonata lungo le tradizionali linee telefoniche[4].

1.1.1 - Il primo telefono
mobile sul mercato

         Il primo servizio pubblico di telefonia
cellulare avvenne nel 1979 in Giappone e nel 1983 negli Usa, data in cui il
Motorola Dyna-Tac 8000X venne lanciato per la prima volta sul mercato. Pesava
quasi 8 etti ed era soprannominato mattone per la forma poco attraente.
Il prezzo di vendita si aggirava intorno ai 4.000 dollari e chiaramente non ci fu
una esplosione immediata delle vendite. Si prevedeva comunque che alla fine del
secolo ci sarebbero stati un milione di utenti nel mondo, ma  in realtà nel
2000 c'erano già più di 109 milioni di abbonati alla telefonia cellulare solo
negli Stati Uniti. Ma erano stati necessari 15 anni di ricerche e 10 anni di
faticosi accordi per la concessione delle licenze commerciali[5].

1.1.2 - Rete cellulare

         Anche se Motorola è
stato il primo realizzatore di un telefono cellulare, lo sviluppo della rete
basata su celle la si deve ai Bell-Labs della AT&T[6], che nel 1968 proposero
un sistema basato sulla suddivisione del territorio in celle, ognuna delle
quali collegata con una stazione ricetrasmittente. In questa rete ciascuna
cella era collegata attraverso normali linee telefoniche ad  un centro di
commutazione per le telecomunicazioni mobili, che aveva il compito di dirigere
il traffico. Quando l'utente faceva una chiamata utilizzava uno dei
canali disponibili nella cella e spostandosi in una zona servita da un'altra
cella, il sistema trasferiva automaticamente la comunicazione su un nuovo
canale della nuova cella, lasciando libero il precedente per altre telefonate.
In tal modo, le frequenze usate in una cellula potevano essere riutilizzate in
una cellula non molto distante, purché non adiacente[7]. Questa
soluzione permetteva di superare i problemi di sovraffollamento delle linee
riscontrati negli esperimenti precedenti[8].

1.2 - L’evoluzione dei
protocolli di comunicazione

         Dalla sua comparsa,
il telefono cellulare ha usato diversi sistemi di funzionamento  principali e
intermedi chiamati generazioni, basati su differenti tecnologie e standard di
comunicazione. Dall’antenato del cellulare che usava uno standard di
comunicazione per i radiotelefoni di tipo RTMI[9]
e RTMS[10]
di 0G[11],
evolvendosi poi nei sistemi analogici degli anni ’70 i TACS[12] ed ETACS[13], fino a quelli
basati su standard UMTS[14]
e VSF-Spread OFDM[15]
rispettivamente terza e quarta generazione. Da pochi anni l’HSPA[16], derivato e
basato sul sistema UMTS di terza generazione, permette l'utilizzo del telefono
cellulare anche per videochiamate, registrazione e visualizzazione di filmati e
TV con una banda dati che varia dai 1.8 Mbit/s fino ai 14.4 Mbit/s dell’HSDPA.
Già da diversi anni la generazione GSM[17]
offriva in commercio cellulari con schermi a colori, possibilità di connessione
a Internet, nello speciale protocollo WAP[18]
e fotocamere digitali.

1.2.1 - Il radiotelefono 0G

         Il primo sistema ti
telefonia mobile introdotto in Italia è stato l’RTMI che, presentato dalla Sip[19] come
sperimentazione nel 1973, operava nella banda dei 160Mhz con 32 canali
bidirezionali. Il sistema presentava diverse carenze, tra cui la necessità di
dover passare la telefonata ad un operatore telefonico fisso e l’impossibilità
di passare in automatico da una cella all’altra. Inizialmente diffuso nelle
principali città Italiane di Roma e Milano, cessò di esistere quando la
richiesta pubblica iniziò ad essere maggiore della disponibilità. Il sistema
rimase attivo per circa dieci anni per essere poi sostituito dal suo successore
l’RTMS, il quale operava su una frequenza di 450 Mhz con 200 canali. Rispetto
all’RTMI era in grado di supportare il passaggio automatico da una cella
all’altra e di utilizzare terminali fissi e  mobili. L’RTMS nacque con lo scopo
di durare fino al 1995 per essere rimpiazzato da una tecnologia a  900 Mhz, ma vista
la grande richiesta, lasciò prima del tempo il passo al TACS.

1.2.2 - Telefonia di prima
generazione 1G

AMPS[20]  e TACS  furono
i più utilizzati standard di comunicazione di telefonia cellulare analogica, i
cui apparecchi appartengono allo standard noto come 1G, frutto dell’evoluzione
di tecnologie precedenti. In Italia il TACS fece il suo ingresso intorno al 1990,
ma nacque in Inghilterra alla fine degli anni 80 come evoluzione della
tecnologia AMPS, introdotta negli USA agli inizi del 1983, e della tecnologia
NMT[21]
introdotta nei paesi nordici intorno al 1981. Il sistema TACS si basava su 1000
canali di comunicazione nella banda che andava dagli 890 a 960 MHz.
Successivamente, evolutosi nello standard ETACS, si passò 1320 canali per una
banda da 872 a 950 MHz. Tale tecnologia aveva come caratteristica principale
quella di riuscire a trasmettere il segnale vocale in maniera chiara e pulita.
La voce, infatti, non essendo digitalizzata, non subiva nessun tipo di
trattamento, risultando quindi corposa e calda. Il TACS smise di
funzionare nella notte tra il 30 e il 31 dicembre 2005 cedendo le sue frequenze
al GSM. L'importanza di questo sistema è stata quella di aver consentito la
rapida diffusione della telefonia mobile in Italia[22].

1.2.3 - Telefonia di seconda
generazione 2G

         Negli anni che
vanno dal 1982 al 1985 ci si rese conto che per motivi tecnici, di qualità e
numero dei servizi e per motivi di standardizzazione, la tecnologia digitale
doveva prendere il posto di quella analogica. Nacque per questo scopo il gruppo
Francese Groupe Spècial Mobile[23],
che intraprese lo sviluppo di un nuovo protocollo di comunicazione, assumendosi
la responsabilità di iniziare ad operare nel Luglio 1991, data in cui venne
lanciato in tutta Europa un sistema di telefonia mobile digitale battezzato
GSM, che gradualmente avrebbe sostituito i vari sistemi analogici presenti in
ogni Paese.

Tale tecnologia, operante ad
una trasmissione di 9600 bps, offre sicurezza nelle trasmissioni grazie ad
algoritmi di codifica delle informazioni. L'adozione di un'unica rete per tutti
i cittadini della Comunità permette di spostarsi da un Paese all'altro senza
dover cambiare telefonino ad ogni frontiera. Infatti, uno dei
problemi dei sistemi cellulari analogici, dettato dalla mancanza di uno
standard, era che ogni paese sviluppava un proprio sistema di hardware e software,
incompatibile con qualsiasi altro sistema. Il sistema digitale consente non
solo di trasferire la voce ma anche di spedire messaggi di testo e immagini e
di poter collegare il telefono al computer. Nascono dunque nell’anno successivo
gli SMS[24],
pensati inizialmente come sistema di comunicazione di servizio, ma diventati
poi un fenomeno culturale e di costume. Successivamente, a partire dal 1997,
furono aggiunti i servizi quali l’invio di e-mail e il roaming internazionale.
Infine, con l’introduzione della tecnologia WAP, fu reso possibile l’accesso ad
Internet da una rete GSM. In realtà il WAP non è in grado di fornire per Internet
lo stesso tipo di accesso a cui si è abituati utilizzando un Personal Computer.

1.2.3.1 - Sistema Dual-band

         Quando nel 1997 la
frequenza di trasmissione intorno ai 900MHz inizia a diventare insufficiente
per sostenere tutto il traffico, viene aggiunta quella a 1800MHz e nascono
quindi i telefoni Dual-band[25].
La rete a 1800 Mhz utilizza celle di dimensioni minori rispetto a quelle della
rete a 900 Mhz. Essendo più piccole e avendo un raggio di azione più corto ed
una migliore propagazione del segnale possono gestire meglio un maggior numero
di utenti contemporaneamente. Questo è di indubbio vantaggio nelle aree urbane
dove il traffico telefonico cellulare è piuttosto intenso. Un terminale Dual-band
è in grado di comunicare tramite i due tipi diversi di rete e di passare da una
rete all'altra senza che l'utente possa accorgersi di nulla.

1.2.3.2 - Tri-Band

         A differenza
dell’Europa gli USA utilizzavano una frequenza di 1900 MHz rendendo così
inutilizzabili i dispositivi Dual-band all’interno degli States. Nacquero a
questo proposito alcuni dispositivi: i cosiddetti Tri-Band[26], in grado di
supportare oltre alle frequenze di 900 e 1800 MHZ anche le frequenze di 1900
MHz.

1.2.4 - Generazione
intermedia 2.5G

         Come generazione
intermedia intendiamo indicare il GPRS[27],
protocollo di comunicazione in grado di potenziare la rete GSM con una
comunicazione che varia da 60Kbs a 170Kbs. Il GPRS sfrutta una modalità di
trasmissione denominata a commutazione di pacchetto anziché quella a
commutazione di circuito utilizzata sui TACS e GSM. La tecnologia a
commutazione di circuito stabilisce un canale di comunicazione tra chi
trasmette e chi riceve. In pratica, il canale è assegnato ai due terminali per
tutto il tempo della comunicazione. La modalità di trasmissione a commutazione
di pacchetto consente la suddivisione delle informazioni da trasmettere in
pacchetti dati. Tali pacchetti vengono trasportati dalla rete all’interno di un
canale di comunicazione senza la necessità di assegnarne a priori uno fisso tra
i due terminali. In sostanza non esiste un unico canale su cui viaggiano i
pacchetti di una comunicazione in quanto ogni pacchetto può essere instradato
su canali diversi su cui viaggiano pacchetti di altre comunicazioni. Il GPRS supporta
i protocolli di comunicazione più diffusi in Internet, infatti uno dei vantaggi
è quello di consentire la navigazione con le stesse caratteristiche offerte da
un comune Personal computer. Il GPRS è una tecnologia di transizione che ci
guiderà verso l’UMTS, ovvero verso la terza generazione in cui assisteremo alla
trasformazione del telefono cellulare in un terminale multimediale a tutti gli
effetti.

1.2.5 - Telefonia di terza
generazione 3G

         L’UMTS è la
tecnologia di telefonia mobile successore del GSM, definita dall’ITU[28] all’interno
dell’IMT-2000[29],
rappresenta uno standard per i sistemi mobili ad alte capacità e velocità di
trasferimento dei dati. La rete UMTS supporta una velocità di trasferimento
dati fino ad un massimo di 1920Kb/s è quindi in grado potenzialmente di consentire
per la prima volta l'accesso a costi contenuti, al World Wide Web di Internet. Le
attuali reti UMTS sono state potenziate mediante i protocolli HSPA e HSDPA con
una velocità massima teorica di trasferimento dati in download di 14,4 Mbs e in
upload di 7,2 Mbs. Con il lancio di tariffe flat su tecnologia HSDPA e con
l'implementazione della tecnologia HSUPA[30]
i servizi definiti a banda larga mobile possono essere considerati come
alternativa alle connessioni ADSL fisse.

1.2.6 - Quarta generazione
4G, la telefonia di domani

         La NTT DoCoMo[31], il più
importante operatore mobile Giapponese, ha testato nel Settembre 2005 lo
streaming di 32 filmati su un terminale connesso tramite un network 4G. Questi
test sono stati fatti a bordo di un'autovettura che viaggiava a 20 Km/h e
nonostante questo i video non si sono interrotti. In pratica questi terminali
possono ricevere fino a 100 Mbs in movimento e ben 1 Gbs da fermi. La
tecnologia utilizzata si chiama VSF-Spread OFDM[32]. La notevole
velocità di download è permessa dall'utilizzo di frequenze radio-mobili
multiple in grado di veicolare lo stesso segnale dati. L'incremento della
capacità è invece il frutto dell'utilizzo della tecnologia MIMO[33], in grado di
far ricevere ad uno stesso terminale mobile dati provenienti da più centraline.
La tecnologia 4G dovrebbe poter essere disponibile a livello commerciale dal
2010.



Capitolo
II

Dispositivi
e sistemi operativi attuali



2.1 - Android OS di Google

//kreuzer33.wordpress.com/

         Android è una piattaforma open
source per la telefonia mobile basata sul sistema operativo Linux[34]  e sviluppata
dall’OHA[35];
un’alleanza di società leader nel settore della tecnologia mobile e wireless,
che hanno unito le forze ed il 5 novembre 2007 hanno annunciato lo sviluppo di
Android. L’obiettivo dell’HOA è di promuovere l’innovazione su dispositivi
mobili, dando ai consumatori una esperienza utente di gran lunga superiore a
quella disponibile oggi sul mercato e di fornire agli sviluppatori una
piattaforma aperta su cui potranno lavorare in modo collaborativo. La mancanza
di uno sforzo collaborativo difatti, rende difficile la sfida con la quale
sviluppatori, operatori wireless e produttori possono rispondere velocemente ai
bisogni sempre più frequenti dei consumatori. Android OS si muove in questa
direzione, un pieno e integrato software-stack[36] 
per periferiche mobili che consiste in un sistema operativo, middleware[37], una
interfaccia utente user-friendly[38] 
e varie applicazioni[39].
La piattaforma Android è disponibile sotto una licenza open-source[40] definita come
developer-friendly[41]
che dovrebbe permettere a operatori mobili e produttori una notevole libertà e
flessibilità nella progettazione dei dispositivi e potranno personalizzare
Android in modo da portare velocemente sul mercato prodotti innovativi e con costi
inferiori. Allo stesso modo gli sviluppatori hanno accesso completo alle
funzionalità e strumenti per l’implementazione di servizi user-friendly molto accattivanti.

2.1.1 - Il T-Mobile G1

t-mobile-g1

//tmobile.modeaondemand.com

         Il primo dispositivo mobile
dotato della piattaforma Android è il T-Mobile G1[42]  prodotto dalla
società HTC[43] 
e commercializzato dal carrier telefonico T-Mobile[44]. Il G1 è stato
presentato per la prima volta a New York il 23 Settembre 2008 e uscito sul
mercato il 22 Ottobre 2008. Come iPhone anche il G1 ha lo schermo touch-screen
ma non il multi-touch[45] 
come dichiarato dall’HTC nelle specifiche del terminale. Questo è dovuto
secondo alcune fonti, al brevetto di cui Apple detiene i diritti. Gli
sviluppatori potranno creare le loro applicazioni per la piattaforma usando
Android SDK[46]
rilasciata dall’OHA Il 12 Novembre 2007, che include: strumenti di sviluppo,
librerie, documentazione, codice d’esempio, tutorial, FAQ ed è installabile su
qualsiasi computer x86 con sistema operativo Windows XP, Vista, Mac OS e Linux.
Le applicazioni sono scritte usando il linguaggio di programmazione Java e
potranno essere testate su Dalvik[47]
Oltretutto è possibile utilizzare ADT come plug-in per Eclipse[48]  e da novembre
è disponibile NbAndroid[49]
come plug-in per NetBeans[50]
che come ADT rende disponibile un emulatore per testare il software.

2.1.2 - Android Architecture

//code.google.com/intl/it-IT/android/what-is-android.html

          L’ Android core è basato su kernel Linux 2.6,
in esso sono inseriti i driver per il controllo delle periferiche come
tastiera, wi-fi, audio, display, fotocamera. Al di spora del kernel vi sono le
librerie più importanti: OpenGL, SQLite, WebKit. L’architettura della
piattaforma Android poi prevede una virtual machine ed una libreria che vanno a
costituire la piattaforma di sviluppo per le applicazioni. Nel successivo stato
dell’architettura si trovano le applicazioni base del sistema ed i gestori
delle risorse. Lo strato più elevato dell’architettura infine è composto dalle
applicazioni di cui faranno uso gli utenti. Alcuni
sono già inclusi nell’installazione base e altri possono essere installati
dagli utenti a loro piacimento.  

2.1.3 - Android Market

//www.android.com/market/

         Con Android Market[51]  sviluppatori e
utenti possono caricare e scaricare applicazioni per telefonini basati su
software Android, come il T-Mobile G1. Gli utenti possono anche votare e
lasciare commenti. Questi voti, insieme alle statistiche di utilizzo,
contribuiscono a classificare le  applicazioni all’interno dell’Android Market.
L’area per gli sviluppatori, che rende possibile caricare le applicazioni, è
attiva dal 27 Ottobre 2008. Al fine di assicurarsi la responsabilità delle
applicazioni di ogni sviluppatore è richiesta una sola volta una quota di 25$. 
Una volta registrati le applicazioni possono essere rese disponibili all’utente
senza ulteriori convalide o approvazioni. In aggiunta alle applicazioni
gratuite, gli sviluppatori possono anche aggiungere applicazioni a pagamento. La
loro quota per ogni applicazione venduta sarà il 70%, il rimanente 30% andrà
hai gestori del servizio e Google non prenderà nessuna percentuale. Android
Market ritiene che questo modello di divisione dei profitti creerà una equa e
positiva esperienza per gli utenti, sviluppatori e gestori. Attualmente ci sono
oltre 50 applicazioni disponibili per il download che includono giochi,
multimedia, ecc..  Nei mesi a venire verranno inseriti abbellimenti e strumenti
ad Android market[52].

2.1.4 - Android Market
Developer Distribution Agreement

         Prima di poter
pubblicare applicazioni interno all’Android Market lo sviluppatore è obbligato
a eseguire tre passi iniziali: è necessario inizialmente un profilo utente
costituito semplicemente da un nome utente, una e-mail, un sito di riferimento
e un numero di telefono. Inoltre è necessario il pagamento di una quota come
visto in precedenza ed è necessario accettare l’accordo tra Android Market e lo
sviluppatore, tale accordo si chiama Android Market Developer Distribution
Agreement[53]
di cui vediamo le parti fondamentali:

- Google
definisce Android Market come un sito a disposizione del pubblico in cui gli
sviluppatori possono distribuire I loro prodotti per le periferiche e non si
possono distribuire prodotti nel market se non viene prima accettato il
contratto.

- Il
contratto verrà automaticamente a terminare se non si è uno sviluppatore in
good standing[54]
o  una persona fisica o giuridica al quale è impedito utilizzare il software
Android sotto la legislatura degli stati uniti o in altri paesi tra i quali, il
paese in cui si è residenti o in cui si utilizza il software.

- Libertà
di scelta nel distribuire un prodotto gratuito o a pagamento, in questo caso è
lo sviluppatore a decidere il prezzo dell’applicazione.

- Google
non si prende nessuna responsabilità del software distribuito e definisce
l’utente come unico responsabile.

- L’utente
concede a Google una licenza non esclusiva, modiale e royalty-free per copiare,
visualizzare, distribuire, eseguire e utilizzare i prodotti in connessione con
l’Android Market e la piattaforma Android.

- Anche
se Google non si impegna a monitorare i prodotti, provvederà comunque a
rimuovere quelli al di fuori di determinate etiche come virus o illegalità.

2.2 - iPhone OS di Apple

iPhone
OS è il sistema operativo sviluppato da Apple Inc[55] per i
dispositivi portatili come iPhone, sia il modello originale, il 3G e l’iPod
Touch[56].
Il sistema è una versione ottimizzata e privata delle componenti non necessarie
del sistema operativo MacOS X[57]
dal quale deriva. E’ stato creato combinando Darwin, un ambiente open source
derivato da Unix e Kernel XNU[58].
Anche se il sistema operativo iPhone OS  deriva da MacOS X il processore
dell'iPhone appartiene alla famiglia di processori ARM[59], difatti il
sistema operativo è compilato per questa tipologia a differenza del sistema
operativo per computer che è compilato per processori PowerPC[60] e X86[61]. Non è quindi
possibile copiare semplicemente le applicazioni da MacOS X, ma devono essere
riscritte e ricompilate per funzionare sul dispositivo iPhone. Sulle
periferiche il sistema occupa circa 0.5 GB della memoria totale, che varia da 4G
per il modello base fino a 16GB del modello più avanzato. Il sistema è
suddiviso in cinque strati o livelli: Core OS, Core Service, Media, Cocoa Touch
e  Applications. Come iPod, il sistema è fornito di default con numerose
applicazioni tra cui: Google Maps, Safari e iTunes con il quale è possibile
scaricare e installare direttamente nuovi software o aggiornamenti che Apple
rende disponibili per il dispositivo. Alla data del 16 Gennaio 2009 sono
presenti 15.000 applicazioni ufficiali per questo sistema operativo, la
maggior parte delle quali sono gratis o costano 0.8 € o poco più e il numero di
download dall’App Store[62]
ha superato i 500 milioni[63].

//www.forestgumpsays.com/?p=42

iphone3G//www.sitissimo.com/wp-content/uploads/2008/07/iphone.jpg

2.2.1 - Apple iPhone

          Il
dispositivo portatile dotato del sistema operativo sviluppato da Apple è l’iPhone,
un telefono multimediale quad-band: UMTS, HSDPA, GSM ed EDGE. Dotato di
fotocamera digitale, sensore di prossimità a infrarossi[64], un sensore di luminosità,
un dispositivo GPS[65],
Push email[66]
e può gestire connessioni WiFi. L’interfaccia utente multi-touch
del dispositivo è basata sul concetto “direct manipulation”; reagisce a
input dell’utente come il tocco, accentuato o meno, al trascinamento e il
maggiore punto di forza è il “pinching to zoom in and out”  o “pinch
and reverse pinch[67]
”.
Inoltre è disponibile un accelerometro interno che reagisce al movimento sui
tre assi principali x, y e z misurandone anche il cambiamento di velocità.

Il dispositivo è stato
presentato da Steve Jobs[68] 
nel Gennaio 2007. La commercializzazione del primo prodotto l’iPhone 3G, 
inizia il 29 Giugno 2007 ad un prezzo che varia dai 399 ai 499$ a seconda del
modello da 4, 8, 16 GB con una spesa aggiuntiva per il mercato americano che
include un contratto biennale con la AT&T. Nel settembre successivo il
prodotto raggiunge il mercato Inglese esclusivamente abbinato ad un contratto
con la O2 e il mercato Tedesco con l’operatore T-Mobile e in Francia con
l’operatore Orange SA. L’iPhone 2G viene anche commercializzato ad un prezzo di
749$  sciolto da vincoli con operatori telefonici. Inizialmente si stima che
Apple avesse un margine del 50% sul prezzo del dispositivo. Il dispositivo arriva
in Italia nel Luglio 2008 con il modello iPhone 3G, ad un prezzo che varia da
199 a 269€ a seconda del modello e del contratto stipulato con l’operatore
scelto tra TIM o Vodafone. Il telefono include dei widget, miniprogrammi già
implementati nella versione del sistema operativo per computer. Il 1º agosto
2007 Apple ha reso disponibile il primo aggiornamento di sicurezza per il
dispositivo e l'aggiornamento ha risolto alcuni problemi di stabilità e alcuni
problemi di sicurezza individuati dopo la commercializzazione del prodotto ed
elimina anche qualsiasi modifica o hack del telefono[69].

pinch.gif

Figura 9 - Pinch and reverse pinch in azione
Fonte: http://www.apple.com/it/iphone/features/appstore.html

 Figura 10 - App Store per iPhone e iPod touch direttamente sul dispositivo

2.2.2 - App Store

App Store
è l'unico store ufficiale dove gli utenti iPhone e iPod Touch possono scaricare
le applicazioni direttamente sul dispositivo, utilizzando il software iTunes[70] fornito in
dotazione, attraverso WiFi o una rete cellulare in modo da averlo a
disposizione ovunque l’utente si trova. Una volta scaricata l’applicazione, si
può essere aggiornati di eventuali aggiornamenti direttamente sul dispositivo.

In
maniera del tutto contraria all’approccio scelto da Google con il suo Android
Market, sembra che Apple volesse prima assicurarsi una certa base di telefoni
venduti, in modo da concedersi il tempo per studiare quale e quanto interesse
ci fosse intorno alla sviluppo di applicazioni native. Solo dopo questo si è
dato il via alle prime versioni dell'SDK[71],
generando ancora un ulteriore interesse per l'apertura dell'App Store in
concomitanza con l'uscita a livello mondiale del nuovo modello di iPhone. Il
tutto ha ottenuto un risultato estremamente positivo con centinaia di milioni
di download da parte degli utenti e stesso discorso per i sviluppatori visto il
gran numero di applicazioni disponibili; circa 15.000 alla data del 16 Gennaio
2009. L’utilizzo dell’App Store da parte degli sviluppatori è comunque legato
ad un costo che varia dai 99 a 299 € a seconda del programma scelto tra
Standard o Enterprise. Difatti sull’iPhone è possibile installare solo applicazioni
digitalmente firmate da Apple se disponibili sull’App Store altrimenti
digitalmente firmate dal distributore[72].

2.2.2.1
- iPhone Developer Standard and Enterprise Program

Lo
Standard Program permette la possibilità di distribuire fino a 100 copie della
propria applicazione, una per dispositivo, tramite email o web, oppure chiedendo
l’upload sull’App Store con un costo d’iscrizione di 99 € annuo. Con l'Enterprise
dedicato alle aziende con 500 o più impiegati, si ha la possibilità di creare
una specie di App Store privato ad un costo di 299 € annui. In entrambi i casi,
è comunque necessario l'accettazione del iPhone Developer Program License
Agreement, per le applicazioni a pagamento Apple detiene 30% del venduto.
Inoltre le applicazioni sono firmate digitalmente da Apple e non è possibile
distribuirne un numero maggiore di quello specificato sul contratto, l’installazione
sul dispositivo non sarebbe difatti possibile se non su device craccati.

Caratteristiche dello Standard ed Enterprise Program di Apple:

Standard Program

Enterprise Program

iPhone SDK

Si

Si

Test su iPhone[73]

Si

Si

Supporto tecnico

Si

Si

Developer Forum

Si

Si

Upload su App Store

Si

No

Distribuzione Ad Hoc[74]

Si

Si

Distribuzione In-house[75]

No

Si

2.2.2.2
- iPhone Developer Program License Agreement

         Come Google per
Android anche Apple impone agli sviluppatori di accettare un contratto, in
questo caso l’ iPhone Developer Program License Agreement,
che risulta essere molto rigido nelle regole imposte. Sono descritte di seguito
le caratteristiche più importanti:

- Non
è possibile scrivere applicazioni che girano in background .

- Le
Applicazioni possono essere distribuite esclusivamente attraverso App Store se
selezionate da Apple e su base limitata per l'uso su Dispositivi registrati.

- Se
dovessero essere selezionate, le applicazioni saranno firmate digitalmente da 
Apple e distribuite mediante App Store.

- Senza
il previo consenso scritto di Apple, un'Applicazione non può fornire, sbloccare
o abilitare funzioni o funzionalità aggiuntive mediante meccanismi di
distribuzioni diversi da App Store.

- Un'applicazione
può scrivere dati su un dispositivo solamente nella zona designata come
recipiente dell'applicazione, salvo che per quanto altrimenti specificato da
Apple.

- Le
Applicazioni devono soddisfare le linee guida contenute in "Human Interface
Guidelines" e altra Documentazione fornita da Apple.

- L'Applicazione
non può contenere funzionalità VoIP[76]
che utilizzano la rete cellulare.

- Tutte
le applicazioni devono essere firmate con un certificato emesso da Apple per
potere essere installate sui Dispositivi registrati.

- Accettate
di cooperare con Apple nel processo di rispondere alle domande e di fornire
informazioni sull'applicazione che avete inviato.

- Comprendete
ed accettate che Apple, a suo insindacabile giudizio, abbia la potestà di:
- determinare se l’applicazione soddisfa tutti i requisiti del programma o
della
  documentazione,
- rifiutare per qualunque ragione, di distribuire l’applicazione anche se  
  soddisfa tutti i requisiti richiesti,
- selezionare e firmare digitalmente l’applicazione per distribuirla mediante
  App Store.

2.3  - Microsoft Windows
Mobile

//i.gizmodo.com/330393/more-windows-mobile-61-details

          Windows
Mobile è un sistema operativo compatto sviluppato dalla Microsoft e basato
sulle sue Win32 API. Dalla versione CE del 1996[77] per dispositivi
portatili come PDA e Palmari è ora attualmente disponibile la versione 6
arricchita di funzioni riguardanti la telefonia e sviluppata appositamente per Pocket
PC che includono il modulo cellulare. L’interfaccia grafica è disegnata in
maniera molto similare alla versione desktop di windows sia come
caratteristiche ed estetica in particolare molto simile a Windows Vista nella
versione più recente. Il sistema operativo Windows Mobile 6 o  Crossbow[78] è stato
rilasciato nel Febbraio 2007 al Mobile World Congress[79] ed è ora
disponibile, dall’Aprile 2008, la versione 6.1 in tre differenti modelli:
Standard, Professional e Classic rispettivamente per cellulari senza
touch-screen, Pocket PC con funzionalità di telefono e Poket PC senza modulo
cellulare. Mentre è attualmente in corso lo studio della versione 6.5, che non
porterà con se grossi cambiamenti rispetto la versione 6.1, Windows Mobile 7 è
atteso come una vera innovazione e potrebbe essere rilasciato nel Novembre del
2009, mentre i primi dispositivi ad integrarlo appariranno nel 2010. L’ultima
versione è strettamente legata con Windows Live; un set di applicazioni web
accessibili tramite browser ed Exchange 2007. Il sistema operativo e corredato
di default di numerose applicazioni: Office Mobile, Remote Desktop, VoIP,
Outlook, SQL Server Compact Edition e Internet Explorer Mobile con supporto per
AJAX, Java Script e XMLDOM. Secondo una notizia stampa di Microsoft sono
disponibili oltre 18.000 applicazioni per Windows Mobile.

htc.gif//www.slashgear.com/verizon-htc-touch-pro-arrives-expensive-2423956/

2.3.1 - Dispositivi

          Microsoft
in risposta alla forte concorrenza nel mercato della telefonia mobile, oltre
all’uscita della versione 7, renderà il proprio sistema operativo disponibile
su un numero minore dispositivi[80]
in modo da concentrare gli sforzi diluiti su troppi modelli . Attualmente ci
sono circa 200 modelli di tali dispositivi tra smartphone e PDA realizzati da
oltre 50 produttori hardware tra cui Samsung, LG e HTC, con diverse
caratteristiche e funzionalità, ma comunque sempre inferiori rispetto ai sui
principali concorrenti come Apple e Google. Infatti anche i modelli di punta in
vetrina Microsoft offrono caratteristiche elevate come HSPDA, WiFi e tutte le applicazioni
offerte da Windows Mobile, ma mancano di alcune sottigliezze come Multi-touch
screen e sensori di movimento. Il prodotto di punta con windows Mobile sembra
essere il Verizon HTC Touch Pro che si aggira intorno al prezzo di 349,00 $ con
una memoria da 512MB Flash, 192MB di RAM, un display da 2.8’’ con risoluzione
480x640[81]
e tastiera QWERTY.

2.3.2 - Microsoft Skymarket

         Per la vendita delle
applicazioni Windows Mobile, non esiste uno store centralizzato, difatti le
applicazioni sono disponibili su molti siti commerciali e non, come per le
applicazioni desktop. Comunque, visto il successo dell’App Sore e l’innovazione
offerta da Android Market, anche Microsoft ha in preparazione un suo store
online chiamato Skymarket, che dovrebbe essere disponibile al pubblico e
sviluppatori in concomitanza con l’uscita della versione 7 di Windows Mobile e potrà
vantare già al lancio un parco software di circa 20.000 applicazioni[82], contro le
ormai 15.000 dell’App Store[83],
fermo restando che i programmi per Windows Mobile esistono da anni, mentre
quelli per iPhone da minor tempo. Inoltre, sembra che la scelta del libero
sviluppo senza approvazioni o firme digitali da parte di Microsoft continui
come ottima prospettiva per i futuri sviluppatori e utenti dello Skymarket.

2.4 - BlackBerry OS

black-berry-storm//it.blackberry.com/devices/blackberrystorm/

BlackBerry
OS è il sistema operativo proprietario sviluppato dalla RIM per la loro linea
di cellulari BlackBerry. L’ultima versione del sistema operativo è stata
rilasciata intorno agli inizi di Febbraio 2009[84]
e comprende una perfetta sincronizzazione con Novell, Lotus e Microsoft
Exchange Server, con il quale si aggiorna in tempo reale al servizio di
messaggistica. Il sistema viene fornito di default con un numero limitato di
applicazioni rispetto ai suoi concorrenti: supporto per Youtube, HTML Email e
browser web proprietario con un layout originale ed in grado di competere con
Android e iPhone. Rispetto le nuove versioni il concetto di dell’interfaccia
utente non è cambiata di molto negli ultimi anni anche su ultimi modelli come
lo Storm. Comunque gli utilizzatori si rivelano affezionati a questa scelta di
layout del sistema operativo che lo rendono di fatto molto leggero e super
veloce.

2.4.1 - BlackBerry Device

         I dispositivi
BlackBerry prodotti dalla RIM, sono popolarissimi nel mercato Americano ma
relativamente nuovi in Italia. Sono storicamente legati al mercato   business
dove  gli utenti, manager e impiegati, hanno come esigenza principale il
collegamento alle mail aziendali. Esigenza soddisfatta dal servizio push-email, 
caratteristica principale del dispositivo. BlackBerry Internet Service  e
BlackBerry Enterprise Server  sono le due modalità principali per utilizzare le
funzionalità di push-email, al quale viene aggiunto il più limitato BlackBerry
Desktop Redirector. Gli ultimi modelli del 2008 sono il Bold  e lo Storm,
quest’ultimo si avvicina di più all’interesse dei consumer nel quale la
classica trackball presente in tutti i modelli precedenti e viene sostituita
dal display touch-screen. Il BlackBerry Storm ha un ampio schermo touch-screen
da 3,25 pollici e risoluzione da 480×360 pixel, 1GB di memoria, supporto alla connessione
HSDPA, WiFi e Bluetooth 2.0, il prezzo in Italia è circa 399 €[85].

//www.crunchgear.com/2008/10/06/the-blackberry-application-center-is-rims-answer-to-the-iphone-app-store/

2.4.2 - BlackBerry Application Center

         Come
per Microsoft e Symbian sarà presto disponibile uno store online ufficiale dove
sarà possibile caricare le applicazioni per BlackBerry OS. Anche se
momentaneamente le informazioni a riguardo sono poche, si può dire che la
totalità dei programmi che saranno disponibili sullo store avranno
compatibilità firmware a partire dal 4.7 in poi, quindi lo Storm e i sui
successori, escludendo completamente i modelli precedenti. Le applicazioni
saranno comunque firmate digitalmente dallo sviluppatore per avere un
riferimento univoco da parte di RIM, ma sembra che non ci siano tasse di
iscrizione, supervisione del codice da parte di RIM ed inoltre sarà disponibile
una certa libertà di sviluppo, come scrivere applicazioni che girano in
background o intercettano eventi di sistema. Libertà di gran lunga superiore a
quella offerta da iPhone. Per lo sviluppo è disponibile un emulatore per ogni
modello di cellulare. Gli sviluppatori avranno diritto all’80% del prezzo sulle
applicazioni vendute, che per ora sono sparse per il web ad un prezzo medio
piuttosto elevato di 10 €, notevole vantaggio per un mercato con grosse
potenzialità e pochi software.

//www.agemobile.com/

2.5 - Symbian OS

         Symbian
OS è un sistema operativo progettato per cellulari prodotto da Symbian Ltd[86]. Attualmente
Symbian OS appartiene Nokia[87],
la quale crea Symbian Foundation[88];
un progetto open source per unificare tutti i Symbian OS con S60, UIQ e MOAP[89] e lanciare una
piattaforma comune. Nell'iniziativa, oltre a Nokia, partecipano: AT&T[90], LG Electronics[91], Motorola[92], NTT Docomo[93], Samsung[94], Sony Ericsson[95],
STMicroelectronics[96],
Texas Instruments[97]
e Vodafone. La piattaforma freeware distribuita dalla Fondazione si svilupperà
a partire dalla principale piattaforma software per dispositivi mobili S60, con
oltre 200 milioni di telefoni e 235 modelli già distribuiti da numerosi
rivenditori e decine di migliaia applicazioni di terzi già disponibili per
dispositivi dotati di sistema operativo Symbian.

2.5.1 - Device Symbian

          I device con
sistema operativo Symbian sono molto diffusi, basti pensare che attualmente sul
sito nokia.com è possibile acquistare online oltre 120 modelli differenti di
Nokia con S60. Attualmente non sembrano disponibili modelli con funzionalità
touch-screen, anche se sembra che Nokia e Samsung puntano in questa direzione.
La loro funzionalità e l’interfaccia utente si avvicina molto al BlackBerry, la
differenza sostanziale è che sono disponibili un gran numero di modelli a
bassissimo costo.  Il modello di punta è il Nokia E75[98], venduto in
Italia ad un prezzo di 459,00€.

2.5.2 - Store

         L’apertura di un App
Store anche per Symbian sembra confermata, ma comunque è una notizia di questi
giorni e si conoscono pochissime informazioni a riguardo. Di sicuro dal recente
progetto Symbian Foundation il nuovo store potrebbe seguire le orme
dell’Android Market



Capitolo
III

Sviluppo
dell’applicazione MyBreakOut



3.1 - Cos’è MyBreakOut

//it.wikipedia.org/wiki/Arkanoid

Come applicazione di
esempio per testare le potenzialità di sviluppo sui vari dispositivi e sistemi
operativi descritti precedentemente, adottiamo la scelta di un game software
grafico dall’aspetto e dalle caratteristiche molto simili al famoso gioco
Arkanoid[99]
prodotto dalla software house giapponese nel 1986. Il gioco consiste
nell’abbattere un certo numero di mattoncini disposti in maniera casuale nella
parte alta nello schermo colpendoli con una sfera. Sulla parte bassa dello
schermo è disposta una piattaforma controllata dal giocatore con cui far
rimbalzare la sfera per colpire i mattoncini rimasti. Il gioco termina dopo il
superamento dei 3 livelli o se la sfera cade una volta sotto la piattaforma.
MyBreakOut è comunque una versione semplificata del gioco originale, in cui
oltre ai livelli da superare che erano 33, esistevano un maggior numero di
regole, come la possibilità di un numero maggiore di sfere in gioco, oggetti ed
altri elementi che fluttuavano sullo schermo e un numero maggiore di vite.

3.1.1 - Perché MyBreakOut

         In sostanza lo scopo di questo elaborato non è
di sviluppare una applicazione completa, di fatto non sarà pubblicata sui
principali store come App Store o Android Market, anche se alcuni non
richiedono una importante validazione della correttezza del software. Quello
che ci interessa è una applicazione che ci permetta di capire:

· Come
funzionano i software di sviluppo per smartphone.

·  Figura 17 - MyBreakOut in azioneIn
che linguaggio: c#, java o Object C, loro caratteristiche e facilità d’uso e di
apprendimento.

· Come
funzionano i vari strumenti di debug.

· Come
si disegna l’interfaccia grafica: tramite codice o visuale come Visual Studio.

· Come
funzionano i simulatori dei dispositivi.

· Come
funzionano le classi offerte per interagire con la memoria del dispositivo, il
movimento e l’inserimento di oggetti e come questi possano interagire con
l’utente.

· Quali
sono gli strumenti aggiuntivi richiesti come sistemi operativi necessari allo
sviluppo.

· Reperibilità
delle informazione come forum online, esempi di codice, tutorial, guide o
documentazione.

· E
in linea teorica analizzare i costi da affrontare per licenze software o visibilità
su store ufficiali.

3.1.2 - Caratteristiche

         L’implementazione
del software in questione è basata sull’inserimento di alcuni elementi grafici
in formato PNG[100],
alcuni controllati dal giocatore come la piattaforma, altri controllati dal
programma come la sfera e i mattoncini. Questi elementi grafici sono
posizionati sullo schermo in base alle coordinate x ed y e la loro posizione
viene aggiornata ogni x millisecondi a seconda del dispositivo. Questo tipo di
approccio è utilizzato per tutti i device tranne per Symbian, nel quale
l’elemento grafico viene disegnato direttamente sullo schermo

.

3.1.2.1 - Elementi grafici

Lo sfondo

 Figura 18 - L'immagine di sfondo sfondo.png

         L’immagine sfondo.png è collocata come sfondo
del gioco, viene caricata a inizio partita e collocata nell’angolo 0,0 in alto 
sinistra ad un livello più basso di tutti gli altri. Le dimensioni coincidono
con le dimensioni dello schermo e sono state riadattate per ogni tipo di
periferica, non è previsto uno sfondo alternativo nel caso di posizionamento
orizzontale del gioco.


La piattaforma

 Figura 19 -  I due elementi grafici fiamma.png e piattaforma.png

         L’immagine
piattaforma.png invece è controllata dall’utente utilizzando il tasto centrale
di movimento, o nel caso del’iPhone, utilizzando due elementi grafici disposti
sullo schermo. Inizialmente la piattaforma si trova ad una altezza y fissa e si
muove lungo il suo asse x utilizzando una variabile accelerazione che può
variare da un valore  compreso tra -5 e +5 e nel caso di valore 0, come a
inizio partita, la piattaforma è ferma e il giocatore agendo sui pulsanti di
movimento può incrementare o decrementare questa variabile, ed a ogni refresh
del gioco la nuova posizione sarà data da: _posizione_corrente =
posizionecorrente + _accelerazione. Se il valore di accelerazione è diverso da
0 viene caricata l’immagine fiamma.png sul lato destro o sinistro a seconda della
positività o negatività di _posizione_corrente

.

I mattoncini

 _matgia.png, _matros.png, _matblu.png

         Gli
elementi grafici _matgial.png,  _matblu.png,  _matros.png sono i mattoncini colorati
disposti nella parte alta dello schermo. Il loro numero varia a seconda della
dimensione del dispositivo e il loro colore è stabilito casualmente. Sono
memorizzati in un array di interi bidimensionale con valori consentiti che
variano da 0 a 4; il valore 0 indica il mattone colpito o assente, i valori
rimanenti indicato i rispettivi colori mancanti blu, rosso e giallo.

La Sfera

         L’immagine
_sfera.png è controllata da un thread separato in tutti i progetti e rimbalza
sullo schermo in base a due tipi di angolazione: _angA e _angB a seconda di
quale zona della piattaforma viene colpita. La prima angolazione _angA,
modifica le variabili x e y della sfera in maniera simmetrica incrementandole
entrambi di 4, la sfera si trova così a compiere movimenti ad angolo retto. Se
la sfera viene colpita con una delle due parti laterali della piattaforma
l’angolo viene modificato assegnano il valore _angB che assegna un movimento
più largo alla sfera, incrementando ad ogni ciclo il valore x di 4 e il valore
y di 3. Ad ogni ciclo del thread la posizione della sfera viene controllata con
le posizioni di tutti i mattoncini e della piattaforma, in caso di impatto la
direzione della sfera viene invertita nella direzione opposta.

3.1.4 - Diagramma delle classi

La progettazione
iniziale del software è rappresentata dal diagramma delle classi che segue.
Prevedo l’uso di dodici classi, ma il progetto potrebbe cambiare a seconda dei
dispositivi. Sfera.class, Hero.class Brick.class rappresentano gli elementi
grafici del gioco. GameThread.class è il processo principale che muove gli
elementi grafici con i valori ricavati dalla classe GameVar.class che contiene
le variabili principali. Il thread è lanciato dall’utente tramite la classe
StartGame.class dopo aver creato il muro casuale da BrickWall.class. L’utente
interagisce nel gioco con la classe UserInput.class. Le classi GameScore.class
e GameRecord.class contengono il punteggio e i record dei giocatori.
CheckCollision.class controlla l’impatto della sfera sul muro o sulla
piattaforma.

                                           Figura 21 - Diagramma delle classi del progetto generale

3.2 - MyBreakOut on Android OS

ereadilavoroeclipseandroid.jpg Figura 22 - Progetto MyBreakOut su Eclipse per Android. Cartelle create di default

         Per
esportare la nostra applicazione su Android OS abbiamo bisogno di un qualche
strumento di sviluppo e di debug come NetBeans o Eclipse[101], per i quali è
disponibile un plug-in aggiuntivo scaricabile direttamente dall’interfaccia
grafica del programma[102].
Una volta installato l’IDE scelto è necessario l’SDK[103] ufficiale di
Android OS, che rende disponibili librerie, strumenti di debug, codice
d’esempio, documentazione e un emulatore della periferica. Nel nostro caso ci
siamo concentrati su Eclipse per la sua portabilità su diversi sistemi operativi
come Windows, MacOS e Linux ed è anche lo stesso strumento necessario per lo
sviluppo su Symbian e BlackBerry.  Una volta installato e configurato Eclipse,
partire con un nuovo progetto Android è estremamente semplice, avremo infatti
dal menu “file > nuovo progetto” una voce aggiuntiva chiamata “Android
Project”
che crea lo scheletro principale della nostra applicazione. Un
progetto Android è diviso sostanzialmente in due parti: i sorgenti Java nella
cartella src e le risorse nella cartella res come main.xml,
che contiene il layout grafico e icon.png come icona di default
dell’applicazione.

3.2.1 - Codice d’esempio e
documentazione

         La documentazione
on-line[104]
per Android SDK è estremamente chiara e completa. Per la sua lettura sono
sufficienti un paio di giorni dopodiché è possibile iniziare direttamente a
programmare. In questo caso è stato molto utile il codice d’esempio come
LunarLander[105]
e i numerosissimi forum presenti sul web. E’ estremamente interessante vedere
come un progetto così nuovo come Android sia estremamente documentato anche da
fonti non ufficiali; sono difatti disponibili blog e forum anche in Italiano
con esempi, tutorial e video. La documentazione ufficiale rimane comunque molto
chiara e completa e più che sufficiente per iniziare.

3.2.2 - MyBreakOut Android
project

         L’implementazione
di MyBreakOut su Android OS ha seguito abbastanza fedelmente il progetto
iniziale, elenchiamo qui di seguito i metodi e le classi più importanti:

StartGame.java

Prima
classe di avvio dell’applicazione inizializza le altre classi come BreakOutView
e la sua classe thread interna BreakOutThread.

public class StartGame extends Activity {
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
                        requestWindowFeature(Window.FEATURE_NO_TITLE);
                        setContentView(R.layout.main);
                        BreakoutView breakoutview
= (BreakoutView) findViewById(R.id.brk);
                        GameThread breakoutthread
= breakoutview.getThread();
            }
}

GameThread.java

Thread
dell’applicazione, contiene tutti gli elementi grafici e li dispone sul canvas
ad ogni avvio del metodo run() e  risponde a eventi di sistema come alla
pressione o al rilascio dei pulsanti del dispositivo.

//Costruttore di GameThread.java
public GameThread (SurfaceHolder
surfaceHolder, Context context,Handler handler) {
*/
            Costruzione del muro di mattoni in maniera casuale dalla classe
Muro, costituito da un array di interi     con valori che variano da 0 a 3
            /*
            this.muromattoni = BrickWall.getArray();
            ***
//Array di oggetti Drawable contenente
tutti gli elementi grafici del muro
            ArrayMattoni = new Drawable[_nummattoni];
            for (int i = 0; i < muromattoni.length; i++) {
                        for (int j = 0; j < muromattoni [0].length; j++) {
/*
                                   Ciclo tutto l’array e per ogni valore
trovato inserisco l’oggetto grafico corrispondente                           nell’array
di oggetti; 1 mattone blu, 2 mattone rosso e 3 mattone giallo
                                   */
                                    if (myarray[i][j] == 1) {
                                               ArrayMattoni[tmp++] = context.getResources().getDrawable(R.drawable.matblu);
                                   } else{
                                   ***
                                   }
                        }
            }
//Costruzione di tutti gli altri
elementi grafici necessari come la sfera e la piattaforma

            _esplosione  =
context.getResources().getDrawable(R.drawable.esplosione);
            _sfera = context.getResources().getDrawable(R.drawable.sfera);
            ***
            _sfondo = BitmapFactory.decodeResource(res,           R.drawable.sfondo);
}

//Metodo run() di BreakOutThread.java
public void run() {
//Fino a quando il gioco è attivo
            while (mRun) {
                        try {
                                   c = mSurfaceHolder.lockCanvas(null);
                                   synchronized (mSurfaceHolder) {
                                               updatePhysics();
//Disegno
l’interfaccia grafica
                                               doDraw(c);
                                   }
                        ***
                        }
            }
}

//Metodo doDraw di GameThread.java,
ad ogni ciclo del thread disegna l’interfaccia grafica

private void doDraw(Canvas canvas) {
            // Inserisco mattoni nel Canvas
            for (int i = 0; i < myarray.length; i++) {
                        for (int j = 0; j < myarray[0].length; j++) {
                                    if (myarray[i][j] == 1) {
                                               ArrayMattoni[tmp++].setBounds(_width
* i, _height * j, (_width * i)                                                                                            +
BrickW, (_height * j) + BrickH);
                                    ArrayMattoni[tmp].draw(canvas);
                                    } else ...
                        }
            }
            // Muovo la piattaforma e la disegno
            _xplain = _xplain + _accelerazione;
            _piattaforma.setBounds(_xplain, 374, _xplain + _width, 374
+_height);
            _piattaforma.draw(canvas);
            ...
// Muovo la pallina e controllo se urta
i mattoni o la piattaforma
            setsfera.Set(_y, _x, _xplain);
            ysfera = setsfera.getY();
            xsfera = setsfera.getX();
            _sfera.setBounds(x - _dimsfera, y - _dimsfera, x + _wsfera -
_dimsfera, y + _hsfera - _wsfera);
            _sfera.draw(canvas);
// Elimino i mattoni colpiti
            if(ArrayMattoni [setsfera.Geti()][setsfera.Getj()]<10){
                        ArrayMattoni [setsfera.Geti()][setsfera.Getj()] = null;
            }
}

BrickWall.java

//Crea un array di interi
casuale per la costruzione del muro

public class Muro {
            public Muro() {
                        for(int i=0;i<myarray.length;i++){
                                   for(int j=0;j<myarray[0].length;j++){
                                               int valorerandom =
(int)(Math.random() * 4);
                                               myarray[i][j]=valorerandom;
                                   }
                        }
            }
            public int [][] getArray(){
                        return this.myarray;
            }
            ...
}

SferaXY.java

//Controlla la collisione della
sfera sui mattoni, ai lati dello schermo e sulla piattaforma

public class SetSfera(){
            public SetBall(int larghezzapiattaforma, int[][] myarray) {
                        ...
            }
            controllaImpattoMuro(){
            }
            controllaImpattoPiattaforma(){
            }
            invertiDirezioneSfera(){
            }
            getXSfera(){
            }
            getYSfera(){
            }
}

3.2.3 - Il Debug

         Il debug
dell’applicazione è fornito dallo strumento ddms.exe lanciabile da riga
di comando e incluso nell’SDK di Android. DDMS fornisce servizi
port-forwarding, catture di schermate del dispositivo, visualizza diversi tipi
di informazioni sul dispositivo, sullo stato di logcat, processo, e altre
funzioni. DDMS gira nella directory tools dell’SDK, per eseguire DDMS basta
digitare ddms in una finestra terminale in quella directory. DDMS lavora sia
con l'emulatore che con il dispositivo se entrambi sono connessi e in
esecuzione simultaneamente.

ddms.jpg

Figura 23 - DDMS di Android in
azione

3.2.4 - Simulatore
piattaforma Android

         Il simulatore con
il software installato si avvia tramite Eclipse dal menu build. E’
possibile interagire tramite i pulsanti utente, contiene un task che indica
l’uso le processore e la memoria utilizzata o disponibile. Contiene tutte le
applicazione di default e di telefono. Il browser internet e la mail sono
funzionanti.

3.2.5 - MyBreakOut in esecuzione su Android

         Il progetto per Android
si è concluso correttamente, sono disponibili online:

· Pacchetto
.zip dell’intero progetto xCode[106]

· Video
dell’applicazione in esecuzione sul simulatore[107]

· Immagini
aggiuntive[108]

simulatoreandroid.jpg

           Figura 24 - Simulatore Android con l'applicazione funzionante

3.2.6 - Conclusioni su Android

         Di seguito sono elencati i risultati
dell’analisi di questo progetto:

Android OS
Resoconto per lo sviluppo e la distribuzione di una
applicazione

Test:

Risultato:

Nota:

Linguaggio utilizzato

Java

Tutorial e codice di esempio

Presente

Online sono disponibili tantissimi tutorial anche non
ufficiali nonostante Android sia molto recente

Strumento di Sviluppo

Eclipse

Disegno interfaccia grafica

XML

Simulatore

E5434

Sistema Operativo necessario

Mac OS, Windows, Linux

Eclipse disponibile per qualsiasi piattaforma

Supervisione codice

Inesistente

Google non supervisiona il codice inserito nell’Android Market

Limiti di sviluppo

Inesistenti

Store Ufficiale

Android Market

Percentuale sul venduto

70%

Potenzialità di sviluppo e visibilità

Elevate ma presto concorrenziali

Prezzo medio applicazioni esistenti

1€


3.3 - MyBreakOut su iPhone OS

         Per lo sviluppo di
MyBreakOut per iPhone, Mac mette a disposizione un tool gratuito chiamato xCode
in dotazione ai computer con sistema operativo MacOS X, è comunque sempre
consigliabile scaricare l’ultima versione dell’SDK dal sito ufficiale Apple[109]. xCode
permette lo sviluppo di applicazioni per iPhone OS, iPod touch e Mac OS X. Con
la sua installazione abbiamo disposizione tutti gli strumenti necessari allo
sviluppo e al debug, sono inoltre disponibili video, documentazione e codice
d’esempio. Per l’installazione di xCode è sempre necessario un sistema
operativo Mac OS X, sempre aggiornato all’ultima versione e non sono
disponibili alternative alla documentazione e codici d’esempio forniti dalla
Apple. Difatti online si trova pochissimo, escludendo il recentissimo progetto 31
Days of iPhone Apps
[110].
xCode prevede l’implementazione delle sue applicazioni in Object-c[111], un linguaggio
di programmazione ad oggetti sviluppato da Brad Cox[112] verso  la metà
degli anni ’80. E’ altresì importante segnalare Become an Xcoder[113], una
risorsa gratuita in pdf di 15 capitoli e 105 pagine, disponibile anche in
lingua Italiana  tradotto da XCode Italia[114].
Lo studio di questo libro è assolutamente indispensabile per muovere i primi
passi verso il linguaggio Object-c con xCode e iniziare a sviluppare
applicazione Cocoa[115].

3.3.1 - Xcode IDE e
Interface Builder di xCode

         La applicazioni per
iPhone così come per Mac OS X devono aderire alle linee guida stabilite
dall’Apple. xCode contiene al suo interno Xcode IDE[116] e Interface
Builder[117],
la prima è un IDE per agevolare lo sviluppo di software per Mac ed è in grado
di compilare codice C, C++, Java e Object-c. Ma per iPhone sono compatibili
solo applicazioni scritte in Object-c. Xcode lavora in congiunzione con
Interface Builder, una ulteriore applicazione che permette agli sviluppatori di
disegnare interfacce grafiche per le applicazioni usando gli strumenti grafici
a disposizione senza la necessità di scrivere decine di righe di codice. Xcode
insieme ad Interface Builder diventa uno strumento di sviluppo molto potente
alla pari di Visual Studio.

3.3.2 - Strumenti di debug

         All’interno di
xCode è presente il debugger GDB, dotato di interfaccia grafica è integrato
all’interno dell’ambiente di sviluppo. Per l’uso di GDB è necessario che il
progetto si compili senza errori, difatti è utilizzato per trovare errori di
esecuzione e non di compilazione quando il progetto è lanciato in modalità
debug o deployment. Per visualizzare messaggi sulla finestra di output di GDB è
necessario inserire dei breakpoint o utilizzare alcune righe di codice come NSLog(@"messaggio"+
var)
per stampare a video i valori di alcune variabili o stringhe. Un
breakpoint è un punto all’interno del codice dove si vuole che un programma sospenda
momentaneamente la sua esecuzione, questo vale anche per eventuali thread in
esecuzione. Il programma può successivamente essere riavviato dal quel punto.
L’inserimento di un breakpoint avviene posizionandosi sulla riga di codice
desiderata e intervenendo poi sull’apposita voce di menu Add Breakpoint.
Inoltre è possibile associare ad un breakpoint una condizione per attivarlo
solo in particolari occasioni, oppure associargli un'azione come la scrittura
all’interno di un file e permette anche la modifica del codice caricandolo poi
nel debugger senza uscire dalla sessione di debug, come avviene anche per DDMS
di Android.

Figura 25 - GDB di xCode in
azione per l'applicazione MyBreakOut, è possibile vedere il breakpoint
posizionato a lato del codice e la finestra di output con i comandi per
avviare, sospendere o disattivare i breakpoint

3.3.3 - MyBreakOut iPhone
project

 Figura 26 - Interface builder di xCode

         Per iniziare lo sviluppo di una applicazione per
iPhone è necessaria la creazione di un nuovo progetto in xCode, dopo aver
aggiornato all’ultima release dell’SDK ne avremo a disposizione varie tipologie
sia per Mac OS X che iPhone. Alla creazione del progetto, xCode crea l’intera
struttura necessaria, come le classi già pronte ad eventi particolari come l’arrivo
di una chiamata ed in particolare i file con estensione .xib: il loro avvio
lancia Interface Builder, dove possiamo trascinare gli elementi grafici direttamente
all’interno dell’iPhone virtuale per comporre ‘interfaccia utente. Di seguito
sono elencati i metodi principali commentati dell’applicazione.

MyBreakOutAppDelegate.m

//Classe principale di avvio dell’applicazione
#import "MyBreakOutAppAppDelegate.h"
#import "MyBreakOutAppViewController.h"
@implementation test6AppDelegate
@synthesize window;
@synthesize viewController;
...
- (void)onTimer{
/*
                Alla scadenza del timer vengono richiamati gli eventi:
                updeteLabel: aggiorna lo schermo di gioco
                moveHero: gestisce la piattaforma
                moveSfera: Gestisce la sfera di gioco
                nascondiMattoniColpiti: si occupa di rimuovere gli elementi
grafici non più necessari
                /*
                [viewController
updateLabel];
                [viewController moveHero];
                [viewController moveSfera];
                [viewController nascondiMattoniColpiti];
}
- (void)applicationWillTerminate:(UIApplication
*)application{
                ...
}
- (void)dealloc {
                ...
}
@end

MyBreakOutViewController.m

/*
Contiene i metodi richiamati da MyBreakOutAppDelegate
*/
#import "MyBreakOutViewController.h"
#import "gameSfera.h"
@implementation MyBreakOutViewController
int larghezzapiattaforma;
BOOL fiamdx = FALSE;
...
int arrayMuro [ ][ ];
...

//Controlla il movimento della piattaforma
-(void)moveHero {
                ...
                 if(pos.check){
                                myHero.center = CGPointMake(myHero.center.x +
_accehero,myHero.center.y);
                                pos = myHero.center.x - 35;
                }
                ...
}
//Controlla il movimento della sfera
-(void)moveSfera {
                //
myBall.center = CGPointMake(myx, myy);
                ...
}
//Gestione degli eventi utente
- (IBAction)pulDestro {
NSLog(@"Premuto
pulsante destro");
                ...
}
- (IBAction)pullSinistro {
NSLog(@"Premuto
pulsante sinistro");
                ...
}
//Controllo impatto sfera
void controllaImpattoMuro(int temp){
for (int i = 0; i < myarray.lenght; i++) {
for (int j = 0; j < myarray[0].lenght; j++) {
                                                               ...
                                                               //
                                               }
                               }
                }
void aggiornaXbalYball(int temp) {
NSLog(@"Aggiorno XbalYball");
                ...
}

//Nasconde gli elementi grafici non
necessari
-(void) nascondiMattone {
                ...
}
@end

3.3.4 - MyBreakOut in
esecuzione

         Il progetto per
iPhone si è concluso con successo, sono disponibili online:

· Pacchetto
.zip dell’intero progetto xCode[118]

· Video
dell’applicazione in esecuzione sul simulatore[119]

· Immagini
aggiuntive[120]

mybreakoutoniphone.png

Figura 27 - MyBreakOut in esecuzione sul simulatore iPhone

l’applicazione
gira regolarmente sul simulatore, non è possibile però il test su una vero
iPhone, non per la disponibilità del prodotto ma è necessario aderire a iPhone
Developer Program
per firmare le applicazioni anche per il test.  Di
seguito sono elencati i risultati dell’analisi di questo progetto:       

iPhone OS

Resoconto per lo sviluppo e la distribuzione di una
applicazione

Test:

Nota:

Descrizione:

Linguaggio utilizzato

Object-C

Tutorial e codice di esempio

Pochi

Solo quelli ufficiali Apple

Strumento di Sviluppo

XCode

Di facilissimo utilizzo

Disegno interfaccia grafica

Visuale

Interface Builder è un ottimo strumento per la creazione dell’
interfacce utente

Simulatore

iPhone

Velocissimo e affidabile, non inoltre disponibili anche
strumenti per il test dell’accelerometro

Sistema Operativo necessario

Mac OS

Disponibile solo su Apple Computer

Supervisione codice

Presente

Validazione codice molto severa da parte di Apple

Limiti di sviluppo

Elevati

Molti metodi, come intercettare eventi di sistema o l’utilizzo
di librerie esterne non sono consentiti da Apple

Store Ufficiale

App Store 99€/anno

Percentuale sul venduto

70%

Potenziabilità di sviluppo e visibilità

Concorrenziali,    ma buona visibilità con le giuste parole
chiave

Prezzo medio applicazioni esistenti

1€


3.4 - MyBreakOut su BlackBerry

DEBUGBLACKBERRY.jpg Figura 28 - Semplice interfaccia di debug per BlackBerry

         Come
per Android, per sviluppare applicazioni Java per BlackBerry OS è disponibile
un plug-in aggiuntivo per Eclipse[121]
scaricabile dall’interfaccia grafica[122],
oppure un JDE completo derivato sempre dall’ambiente di sviluppo Eclipse. Il
pacchetto mette a disposizione tutte le librerie necessarie e il simulatore
BlackBerry 8300, anche se sono disponibili on-line simulatori per tutti i
dispositivi BlackBerry. Non è disponibile uno strumento di debug valido e la
documentazione e i codici d’esempio disponibili sul sito ufficiale sono
veramente dispersivi. Sviluppare per BlackBerry ha richiesto più tempo del
necessario, al contrario degli altri progetti e l’implementazione del codice si
è svolta in maniera completamente differente. Da una applicazione presente sul
web: Creating a Blackberry Game[123],
che sembrava l’unica disponibile con i file sorgente è nato lo studio del
codice e dei metodi necessari, esportati poi per il progetto MyBreakOut per
BlackBerry.

3.4.1 - Strumenti di debug

         L’unico sistema di
debug fornito per BlackBerry è l’output console di Eclise su cui è possibile
stampare il valore di variabili o stringe utilizzando il comando java
System.out(“stringa”+variabile)
. Errori di esecuzione, come eccezioni non
gestite, vengono visualizzate sullo schermo del simulatore. Una volta
individuato il problema nel codice bisogna interrompere l’esecuzione del
programma e riavviare completamente il simulatore in modo che venga caricata la
nuova versione corretta del codice. Questo comporta una perdita di tempo
notevole nel caso di test frequenti o problemi difficilmente individuabili.

3.4.2 - MyBreakOut:
BlackBerry project

         La creazione di un
nuovo progetto BlackBerry su Eclipse, a differenza di tutti gli altri strumenti
di sviluppo visti in precedenza, non crea uno scheletro dell’applicazione,
viene creata unicamente una cartella vuota in cui implementare le classi
necessarie compresa quella contenente il Main. L’interfaccia utente
viene costruita tramite codice come una normale applicazione Java, non vi è
infatti nessun supporto visivo ad aiuto dello sviluppatore.

Classi e metodi principali:

MyBreakOut.java

/*
Classe principale contenente il Main
Chiama semplicemente una istanza di GamePlay.java
*/
public class GalacticBlast extends UiApplication {
    public static void main(String[] args) {
        GalacticBlast GalacticBlast = new GalacticBlast();
        GalacticBlast.enterEventDispatcher();
    }
    public GalacticBlast() {
        pushScreen(new GamePlay());
    }
}

GamePlay.java

public class GamePlay extends FullScreen {
            ...
//Refrescher, thread interno che dispone
gli elementi grafici sullo schermo e nella giusta posizione
            private class Refresher extends Thread {
//Il metodo run viene
chiamato in automatico ogni 25 millisecondi
            public void run() {
                        while (_active) {
//Ciclo tutti
gli elementi grafici allinterno del vettore lcv
                                   for (int lcv = 0; lcv < _objects.size();
lcv++) {
                                               // Controllo se l’oggetto è un
mattone e se non è stato colpito lo disegno
                                               if ((OBJ)
_objects.elementAt(lcv).getType().equals(”mattone”))
                                               ...
                                               //Controllo se l’oggetto è la
piattaforma e aggiorno la posizione
                                               if((OBJ) _objects.elementAt(lcv).getType().equals("hero"))
                                               ...
                                               //Altrimenti è la sfera e la
disegno nella posizione data dalla classe setSfera
                                               if((OBJ)
_objects.elementAt(lcv).getType().equals("sfera")){
                                                           ((OBJ)
_objects.elementAt(lcv)).setX(setSfera.getX());
                                                           ((OBJ)
_objects.elementAt(lcv)).setY(setSfera.getY());
                                               }
                                   }
                        }
            }
            //Costruttore di GamePlay.java inserisce tutti gli elementi grafici
sullo schermo
            public GamePlay() {
                        _objects.addElement(new Hero(_xhero, _yhero, "hero",
true));
                        ...
                        //Inizializzo il muro di mattoni casuale sullo schermo
                        _ myarraymuro = muro.getArray();
                        for (int j = 0; j < myarraymuro.length; j++) {
                                   for (int i = 0; i <
myarraymuro[0].length; i++) {
                                                _objects.addElement(new Matton(50
* i, 20 * j, "rosso",true));
                                               ...
                                               }
}
                        }
                        //Richiamo il thread
                        _refresher = new Refresher();
            }
            //Metodo keyChar ritorna true se l’utente preme un tasto
            public boolean keyChar(char key, int status, int time) {
                        switch (key) {
                                    case Characters.ESCAPE:
                                   ..._
}
            }
            ...
}

3.4.3 - MyBreakOut in esecuzione

         L’applicazione MyBreakOut per BlackBerry gira
regolarmente sul simulatore ed è stato possibile il riutilizzo di codice già
implementato per Android. Anche per questo progetto sono disponibili online:

· Pacchetto
.zip dell’intero progetto Eclipse[124]

· Video
dell’applicazione in esecuzione sul simulatore[125]

breackoutonblackberry.jpg

Figura 29 - MyBreakOut in esecuzione sul simulatore BlackBerry

3.4.4 - Risultati dell’analisi Black Berry

         Di seguito sono elencati i risultati
dell’analisi di questo progetto:       

Black Berry

Resoconto per lo sviluppo e la distribuzione di una
applicazione

Test:

Nota:

Descrizione:

Linguaggio utilizzato

Java

Tutorial e codice di esempio

Pochi

Solo quelli ufficiali BlackBerry

Strumento di Sviluppo

Eclipse

Disegno interfaccia grafica

Tramite codice

Simulatore

Sono disponibili tutti i simulatori per tutti i dispositivi

Sistema Operativo necessario

Mac OS, Windows, Linu

Eclipse disponibile per qualsiasi piattaforma

Supervisione codice

Assente

Sembra comunque che sia necessaria una firma digitale per le
applicazioni distribuite sul nuovo App Store BlackBerry

Limiti di sviluppo

Bassi

Tra le classi di J2ME e le estensioni di RIM è possibile
interagire con il sistema operativo e le applicazioni di sistema in modo
piuttosto completo

Store Ufficiale

Presto disponibile

Potenziabilità di sviluppo e visibilità

Buone

Pochi software in circolazione, le prospettive di sviluppo per
questo dispositivo sono buone

Prezzo medio applicazioni esistenti

10€


3.5 - MyBreakOut su Windows Mobile

visualstudiointerfacebuilder.png Figura 30 - Disegno dell'interfaccia utente di Visual Studio, dalla libreria è possibile trascinare gli elementi grafici direttamente sul dispositivoprogettovisualbasic.png Figura 31 - Possibilità di scelta tra vari ripi di progetto in C# fornita da Visual Studio

         Per lo sviluppo di
applicazioni Windows Mobile è necessario il download del relativo SDK per le
diverse tipologie di device tra Smartphone e Pocket PC. Per poter utilizzare l’SDK
e testare le applicazioni dobbiamo disporre dell’ambiente di sviluppo Visual
Studio, fornito da Microsoft e giunto alla versione 2008. Visual Studio non è
uno strumento gratuito, il prezzo della versione professional si aggira intorno
ai 1.014,00€. Per questo progetto, grazie all’iniziativa Microsoft Dream Spark,
è stata utilizzata una versione gratuita di Visual Studio disponibile per
studenti universitari[126].

Visual Studio è uno
strumento estremamente potente, abbiamo un designer molto comodo per realizzare
interfacce grafiche direttamente sull’emulatore ed inoltre la possibilità di
distribuire e compilare sia sull’emulatore o sul device connesso. Dopo
l’installazione di Visual Studio e il relativo SDK per i device con Windows
Mobile abbiamo la possibilità di creare applicazioni per ogni tipo di
periferica, da Pocket PC 2003 a Windows Mobile 5.0 e con diversi linguaggi di
programmazione come: Visual Basic, Visual C++, Visual j++. L’ultima versione
include il supporto per il linguaggio C#[127]
utilizzato in questo progetto. Come avviene per xCode di Apple, la creazione di
un progetto crea un intero scheletro dell’applicazione con le classi necessarie
e sempre come Interface Builder della Apple, abbiamo la possibilità di
trascinare gli elementi grafici direttamente sull’emulatore. Per ogni oggetto
grafico inserito Visual Studio scrive nel codice i metodo necessari per la
gestione degli eventi di quell’oggetto, come per esempio l’evento KeyUp
di un pulsante, eventi richiamabili semplicemente col posizionamento del mouse.
Visual Studio nella sua completezza è uno strumento estremamente semplice.
Sviluppare applicazioni per Pocket PC o desktop utilizzando per esempio Visual
Basic, non richiede una elevata conoscenza sia del linguaggio utilizzato che
della programmazione in generale. Anche lo sviluppo in C# dell’applicazione
MyBreakOut è stata molto veloce e senza particolari problemi.

3.5.1 Strumenti di debug

         Esattamente come
per xCode, Visual Studio mette a disposizione uno strumento di debug molto
potente con la possibilità di inserire nel codice dei breakpoint; sospensioni
temporanee dell’applicazione con la possibilità di associargli degli eventi.

breakpoinvisualstudio.png

Figura 32 - Gestione di un breakpoint in Visual Studio

3.5.2 - MyBreakOut: Visual Studio
project

MyBreakOut.cs

namespace MyBreakOut {
    public partial class FinPrinc : Form {
        public FinPrinc() {
            //Al richiamo della classe principale vengono inseriti tutti gli
elementi grafici necessari
           InitializeComponent();
            myDelegate1 = new AddListItem(piattaforma);
           //E inizializzate le classi per le variabili e il gioco con il
thread della sfera
            variabili = new Variabili();
            game = new Game(variabili, this);
            thread = new Thread(game.Start);
        }
        //Questo medoto richiama la posizione x e y della sfera e la colloca
nel nuovo punto
        public void setBall() {
            int x = variabili.getXpalla();
            int y = variabili.getYpalla();
            myBall.Location = new Point(x, y);
        }
        public void setHero() {
           //setHero muove la piattaforma con la variabile accelerezione
gestita dall’utente
            int tmp = variabili.getAccelerazione();
            myHero.Location = new Point(tmp,250);
           ...
        }
        //Gestione dei pulsanti
        private void FinPrinc_KeyDown(object sender, KeyEventArgs e) {
            if ((e.KeyCode == System.Windows.Forms.Keys.Up)) {
                startGame();
            }
            if ((e.KeyCode == System.Windows.Forms.Keys.Down)) {
                // Pulsante Down
                stopGame();
            }
            if ((e.KeyCode == System.Windows.Forms.Keys.Left)) {
                // Pulsante Left
                ...
            }
if ((e.KeyCode == System.Windows.Forms.Keys.Right))
{
                //Pulsante Right
               ...
            }
            if ((e.KeyCode == System.Windows.Forms.Keys.Enter)) {
                // Pulsante Enter
            }
        }
    }
}

Wall.cs

namespace MyBreakOut {
    //La classe  Wall gestisce il muro di mattoni
    class Wal {
            //costruisce il muro di mattoni in maniera casuale
            private void BuidWall() {
                        for(int i=0;i<5;i++) {
                                   for(int j=0;j<7;j++){
                                               int random = random.Next(MAX)+MIN_NUM;

                                               ...
                                   }
                        }
            }
            public int[,]getArray(){
                        return this.myarray;
            }
      }
}

SetSfera.cs

namespace MyBreakOut {
    class SetSfera {
    //La classe SetSfera gestisce il movimento della sfera nel gioco, viene
richiamata con un valore intero che
    //rappresenta la larghezza della piataforma e un array di interi che
rappresenta la disposizione dei mattoni
        public SetBall(int larghezzapiattaforma, int[,] myarray) {
            ...
        }
        //Il metodo check controlla l’impatto della sfera sul muro o sulla
piattaforma e ne inverte la direzione o
        //l’angolo in caso di impatto
        public void check(int pos) {
            ...
        }
        //getBrick ritorna il numero del mattone colpito per poter essere
nascosto
        public int getBrick() {
            for (int j = 0; j < 7; j++) {
                ...
            }
            return _numbrick;
        }
        //getX e getY ritorna la posizione in cui la sfera si deve muovere
        public int getY() {
            return y;
        }
        public int getX() {
            return x;
        }
        //getD ritorna la direzione di movimento della sfera
        public int getD() {
            return x;
        }
    }
}

3.5.3 - MyBreakOut in esecuzione

         Il progetto per iPhone si è concluso con
successo, sono disponibili online:

· Pacchetto
.zip dell’intero progetto Visual Studio[128]

· Video
dell’applicazione in esecuzione sul simulatore[129]

· Immagini
aggiuntive[130]

myvisual.gif

Figura 33 - MyBreakOut in azione sull'emulatore di Wodows Mobile

Di seguito sono elencati i risultati dell’analisi di
questo progetto:

Windows Mobile
Resoconto per lo sviluppo e la distribuzione
di una applicazione

Test:

Nota:

Descrizione:

Linguaggio utilizzato

C Sharp

Tutorial e codice di esempio

Disponibile

Tantissima documentazione disponibile anche non ufficiale

Strumento di Sviluppo

Visual Studio

Il suo prezzo si aggira intorno ai 1000,00€

Disegno interfaccia grafica

Visuale

Ottimo tool per il disegno dell’ interfaccia utente

Simulatore

                           Sono disponibili tutti i simulatori
per le piattaforme Pocket PC
                           o Smartphone

Sistema Operativo necessario

Windows

Visual Studio disponibile solo su sistemi operativi Microsoft

Supervisione codice

Assente

Per ora assente, nessuna approvazione o firma è necessaria per
i propri applicativi, ma non si conoscono le caratteristiche del nuovo App
Store Microsoft Skymarket

Limiti di sviluppo

Bassi

l'SDK permette di fare praticamente qualunque cose. Dove non con
il .NET Compact Framework, è di solito possibile con C++ a più basso livello

Store Ufficiale

Skymarket           Presto disponibile

Potenziabilità di sviluppo e visibilità

Basse

Mercato saturo, è difficile creare applicazioni
particolarmente originali


3.6 - MyBreakOut su Symbian

         Per sviluppare su
Symbian OS S60[131]
è possibile utilizzare una serie di linguaggi di programmazione come Python,
Java, C#, Adobe Flash e C++, quest’ultimo è nativo del Symbian e per permette
di sviluppare applicazioni di qualunque tipo su periferiche S60. In questo progetto
come per Android e BlackBerry, sviluppiamo la nostra applicazione in Java.
Abbiamo utilizzato Eclipse con l’SDK[132]
necessario, le cui caratteristiche sono molto simili all’SDK per BlackBerry,
difatti non abbiamo a disposizione uno strumento completo come potrebbe essere
Visual Studio o xCode. Sono comunque disponibili sul sito forum.nokia.com una
quantità enorme di esempi, documentazione, guide e tutorial per questa
piattaforma, che risulta essere la più diffusa al mondo. Anche esternamente al
forum ufficiale è possibile trovare ogni tipo di informazione, aiuto ed ogni
tipo di applicazione. Ne esistono difatti a migliaia, la maggior parte delle
quali gratuite, anche se si tratta di software complessi, come per esempio:
emulatori PSP, Game Boy e il famoso Mame che solo lui trasforma il dispositivo
in una console da gioco con migliaia di applicazioni.

3.6.1 - Strumenti di sviluppo e di debug

         Con l’SDK per S60
installato su Eclipse, abbiamo a disposizione le librerie necessarie, la
documentazione e il nostro simulatore per il test delle applicazioni con
sistema operativo Symbian. Sono comunque disponibili un buon numero di
emulatori con diverse caratteristiche e funzionalità, così come tutte le
specifiche dei modelli Nokia in circolazione[133];
come dimensione dello schermo, memoria e versione del sistema operativo. Per lo
sviluppo abbiamo utilizzato un approccio diverso dai progetti precedenti, anche
se abbiamo rutilizzato una buona parte delle classi create in precedenza per
BlackBerry, per il disegno dell’interfaccia utente non ci siamo serviti di
oggetti grafici in PNG, ma abbiamo disegnato direttamente sull’interfaccia del
dispositivo utilizzando i metodi fillArc e fillRect della classe Graphics,
i quali permettono di disegnare cerchi o rettangoli sullo schermo nelle
coordinate interessate. Il sistema è molto utile in questo caso utilizzando un
simulatore con schermo molto ridotto dove i PNG perdevano la loro particolarità
grafica e risultavano molto lenti. L’avvio del simulatore è invece molto veloce,
l’unico problema è che l’applicazione a volte si avvia con la versione
precedente non aggiornata e non è chiaro in quali casi. Per ovviare a questo
problema abbiamo utilizzato molto spesso la finestra di output per stampare a
video una indicazione per riconoscere se il simulatore ha caricato il nuovo
codice.

3.6.2 - Metodi principali

         Di seguito sono
elencati i metodi e le classi principali dell’applicazione MyBreakOut su
Symbian:

Sfera.java

//La classe Sfera crea l’elemento grafico utilizzando il
metodo fillArc della classe Graphics, cosi come per gli //altri oggetti
public class Sfera extends Entity {
  ...
public Sfera (int radium){
    this.radium = radium;
    width = radium * 2;
    height = radium * 2;
 }
public void paint(Graphics g) {
    g.setColor(color);
    g.fillArc(x, y, radium*2, radium*2, 0, 360);
  }

GameStart.java

//La classe GameStart contiene
il thread dell’applicazione
public class GameStart extends GameCanvas implements Runnable {
            public void start() {
                        //Il costruttore richiama il metodo run di questa
classe
                        Thread runner = new Thread(this);
                        runner.start();
            }
            ...
//ckKey si occupa di modificare
i valori a seconda dei tasti premuti dall’utente
            public void ckKey(int iKey, long currTick) {
                        ...
            }
            //Il metodo run a gioco avviato controlla tutti gli elementi
grafici e le variabili utente
            public void run() {
                        ...
                        //fino a quando il gioco è attivo
                        while (isRunning) {
                                   ...
                                   //Controlla i tasti premuti
                                   if ((iKey & GameCanvas.UP_PRESSED) != 0)
{
                                               ...
                                   } else if ((iKey & GameCanvas.DOWN_PRESSED)
!= 0) {
                                               ...
                                   } else if ((iKey & GameCanvas.LEFT_PRESSED)
!= 0)
{
                                               ...
                                   } else if ((iKey &
GameCanvas.RIGHT_PRESSED) != 0) {
                                               ...
                                   }
                                   //e setta la posizione di tutti gli elementi
                                   setPosition();
                                   //Il thread viene eseguito con pause di 30
millisecondi
                                   try {
                                               Thread.sleep(30);
                                   }catch (Exception ex) {
                                   }
                        }
            }
}

3.6.3 - MyBreakOut in esecuzione

         Il progetto per Symbian si è concluso con
successo, sono disponibili online:

· Pacchetto
.zip dell’intero progetto Eclipse[134]

· Video
dell’applicazione in esecuzione sul simulatore[135]

mybrackoutonsymbian.png

Figura 34 - MyBreakOut in azione sul simulatore Symbian

Di seguito sono elencati i risultati dell’analisi di
questo progetto:

Symbian

Osservazione per lo sviluppo e la distribuzione di una
applicazione

Test:

Risultato:

Nota:

Linguaggio utilizzato:

Java

Java ME o Micro Edition ottimazzato per terminali mobili

Linguaggi disponibili:

Java, Python, C, C++ e C Sharp

Limiti di sviluppo:

Assenti

Esistono alcuni limiti di sviluppo per Java o Python ma per
C++, linguaggio nativo di questo sistema è possibile fare di tutto, come
intercettare eventi di sistema o applicazioni che girano in background

Strumento di Sviluppo

Eclipse, NetBeans

Con compilatore, emulatore e documentazione

Tutorial e codice di esempio ufficiali:

Alta disponibilità

Sul sito ufficiale nokia.forum.com è disponibile una
documentazione supplementare, numerose applicazioni con codice sorgente,
tutorial, esempi e assistenza tramite forum. Questo per tutti i linguaggi
utilizzati

Tutorial e codice di esempio non ufficiali:

Alta disponibilità

In rete si trovano tutte le risorse necessari per creare
applicazioni in per tutti i linguaggi

Disegno interfaccia utente

Tramite codice

Non è disponibile nell’SDK uno strumento di sviluppo visuale
per la creazione dell’interfaccia utente

Simulatore

Presenti

Sono disponibili i simulatori per piattaforme UIQ e S60 e le caratteristiche tecniche di tutti i dispositivi in
commercio.

Sistema Operativo necessario

Windows, Mac OS X e Linux

Supervisione codice

Assente

Nessun controllo del codice prodotto

Store Ufficiale

Assente

Presto disponibile un App Store anche per Symbian

Trattenute sul venduto

Assenti

Nessuna trattenuta per applicazioni vendute su store non
ufficiali, firma digitale non necessaria. Per l’App Store ufficiale non sono
disponibili informazioni

Potenziabilità di sviluppo e visibilità

Basse

Sono presenti in circolazione numerosissime applicazione di
qualunque tipologia sparse per tutto il web, la visibilità della nostra
applicazione potrebbe essere molto bassa

Prezzo medio applicazioni esistenti

Tra 0 e 1€

Sono disponibili applicazioni a costi più elevati, ma la
numerosità di quelle gratuite abbassa notevolmente la media



Capitolo
IV

Osservazioni
finali



4.1 - Considerazioni

         Abbiamo discusso i
precedenti progetti a cui sono seguite diverse  considerazioni a riguardo degli
strumenti di sviluppo, tutorial ufficiali e non, interfaccia grafica,
simulatori, sistemi operativi necessari, supervisione del codice, presenza o
meno di store ufficiali e prezzi delle applicazioni. Raggruppiamo questa
quantità di concetti in quattro fondamentali:

- Strumenti:
riguardo la loro facilità d’uso, la presenza o meno di strumenti aggiuntivi di
debug e visuali, al loro costo e la loro disponibilità per diversi sistemi
operativi come Windows o Mac OS. In questo caso consideriamo un voto maggiore
per lo strumento più completo.

- Limiti:
 riguardo a che tipo di applicazioni si possono sviluppare e alla loro
profondità. Eventuali approvazione del codice e la presenza o meno di firme
digitali. Considereremo un voto maggiore per politiche con meno limiti.

- Costi:
Includendo i costi dei tools e dei sistemi operativi, consideriamo anche quelli
legati alla visibilità sui App Store ufficiali, alla percentuale sul venduto
per lo sviluppatore e i costi medi delle applicazioni, considerando un voto
maggiore per la scelta meno dispendiosa

- Tutorial:
legato alla quantità di documentazione ufficiale e non, come tutorial, video,
codice d’esempio, dando un voto superiore alla maggiore presenza di questi
elementi

4.1.1 - Strumenti

     Il
grafico che segue mostra la qualità e la completezza degli strumenti di
sviluppo escludendo il loro costo. Il voto maggiore spetta a Microsoft per la
completezza del suo Visual Studio, subito dopo iPhone per xCode. Android
utilizza Eclipse e il suo SDK ne sfrutta al pieno le potenzialità. Mentre per
Symbian e BlackBerry su Eclipse l’SDK è relativamente magro.

 Figura 35 - Grafico strumenti di sviluppo

4.1.2 - Limiti

         Il limiti di sviluppo per le applicazioni sono
molto alti per iPhone che come visto in precedenza, deve approvare il codice
presente sul suo App Store e a sua discrezione può negare la pubblicazione
anche se il progetto presenta tutte le caratteristiche richieste. Mentre i
valori sono abbastanza simili per Symbian, BlackBerry e Windows Mobile mentre
ad Android spetta la fetta più grande per la politica scelta del suo sistema
operativo a sorgente aperto.

 Figura 36 - Grafico limiti di sviluppo

4.1.3 - Costi

Per
Microsoft con il suo Visual Studio non gratuito, necessita di un sistema
operativo Windows per lo sviluppo, come Apple per xCode necessita di un sistema
Mac OS e un pagamento elevato per comparire su App Store, questo va aumentare i
costi di sviluppo per i due dispositivi. Al contrario per i rimanenti i costi
risultano essere molto ridotti.

 Figura 37 - Grafico costi

4.1.4 - Tutorial

         Il pregio maggiore
di Symbian è la disponibilità di una enorme documentazione accompagnata da
relativo codice sorgente, questo aiuta lo sviluppo per qualsiasi applicazione.
BlackBerry dispone esclusivamente della documentazione ufficiale leggermente
dispersiva. Mentre per Windows Mobile, IPhone e Android i valori sono molto
simili, per quest’ulimo dobbiamo sottolineare il fatto che è un prodotto
recente e nonstante questo l’interesse è molto elevato e sembra essere già al
pari dei suoi concorrenti.

 Figura 38 - Grafico tutorial

Figura 39 - Tutte le analisi sui dispositivi, riguardo costi, limiti, tutorial e strumenti

4.2 - Sintesi finale

         Sviluppare una
applicazione come MyBreakOut per i principali dispositivi è stata una
esperienza sicuramente istruttiva. Ogni sistema presenta i suoi fattori
positivi e negativi a seconda della politica scelta, come la preferenza di
Google nel produrre un sistema operativo completamente aperto e senza limiti di
sviluppo in netto contrasto con la politica per esempio, di iPhone, dove tutte
le applicazioni per i loro dispositivi sono controllate fino al minimo
dettaglio con grossi limiti per lo sviluppatore. Android e iPhone sono le due
tipologie di sviluppo più estreme e in netto contrasto fra loro, con in mezzo
Symbian, BlackBerry e Windows Mobile, entrambi si rivelano le più interessanti
per l’utente ed il programmatore. Mentre da un lato Apple controlla il codice,
riguardo la sua esecuzione, la correttezza dei metodi e la sua scrittura, (una
applicazione iPhone potrebbe essere anche rifiutata solo per non aver
rispettato una corretta indentazione del programma) dall’altro Android non ha
controlli, neanche sulle applicazione presenti sullo store ufficiale, anche se
esiste un sistema di votazione a protezione dell’utente. Sviluppare per
entrambi questi prodotti la considero una buona scelta anche per la tipologia
di hardware, i modelli che montano questi sistemi operativi sono molto pochi e
recentissimi, inoltre presentano caratteristiche che danno spazio a nuove idee,
come l’accelerometro per l’iPhone. Tra le altre scelte, subito dopo Android
troviamo Symbian e Windows Mobile. Symbian lo vediamo come un  sistema
operativo diffusissimo e che lascia molte libertà di programmazione. Sviluppare
per Symbian è di certo meno emozionante di iPhone o Android ma molto ben
collaudato e ricco, lo considero un buon ambiente dove muovere i primi passi
verso questa professione. Stesso discorso per Windows Mobile, escludendo
naturalmente il costo di Visual Studio giustificato per la sua facilità d’uso, dove
esistono in commercio tantissimi dispositivi. Il progetto per Windows Mobile è
quello che ha richiesto meno tempo di lavorazione. Per ultimo più vicino a
iPhone, ma comunque più distaccato troviamo BlackBerry, sembra che questi
dispositivi non siano molto diffusi in Italia, almeno come negli USA, ma il fatto
che lega il prodotto RIM al settore business e manageriale è molto importante,
difatti è diffusissimo nelle aziende come strumento di lavoro, questo grazie
alla sua nota compatibilità con i più importanti sistemi di messaggistica
aziendali come Microsoft Exchange, che non lo rende uno strumento per lo
sviluppo di applicazioni di intrattenimento ma è molto più legato ad un
ambiente professionale. Sarebbe valutabile una professione come consulente di
questo prodotto.





[1]
Tratto dall’articolo: “Quando il telefono stava nel  bagagliaio
dell’automobile”. Fonte: http://www.torinoscienza.it/dossier/apri?obj_id=2721 -
[TRN001]

[2] Martin Cooper nato nel 1928  è considerato il padre della telefonia
mobile. Fonte: http://en.wikipedia.org/wiki/Martin_Cooper_(inventor) - [WKP001]

[3]
Tratto da: http://af.wikipedia.org/wiki/Selfoon - [WKP002]

[4] Dyna Tac, abbreviazione di Dynamic Adaptive Area Coverage, Articolo
tratto da: “Motorola Dyna Tac”. Fonte: http://en.wikipedia.org/wiki/Motorola_DynaTAC
- [WPD003]

[5] Trent'anni di storia del telefono cellulare - Fonte: www.torinoscienza.it/dossier/apri?obj_id=2481
- 8k - [WKP004]

[6] Bell Telephone Laboratories; laboratori di ricerca e sviluppo di
proprietà di Alcatel-Lucent anno la loro sede principale nel New Jersey USA e i
loro centri di ricerca sono distribuiti in tutto il mondo. Fonte:
http://en.wikipedia.org/wiki/Bell_Labs - [WKP057]

[7]
Fonte: http://www.torinoscienza.it/dossier/apri?obj_id=2722 - [TRN003]

[8]
Altrimenti conosciuto come Roaming; un insieme di normative e apparecchiature
utilizzate dagli operatori telefonici per permettere agli utenti di collegarsi
anche usando reti non di loro proprietà. Utile soprattutto quando l’utente si
trova al di fuori del paese d’origine - Fonte: http://en.wikipedia.org/wiki/Roaming
- [WKP005]

[9] RTMI, Radio Telefono Mobile Integrato - Fonte: http://en.wikipedia.org/wiki/RTMI
- [WKP006]

[10]
Radio Telefono Mobile di Seconda generazione, standard di rete operante sulla
frequenza dei 450 MHZ

[11] 0G, 1G, 2G, 3G, 4G indicano in gergo le
generazioni delle telefonia mobile, rispettivamente: Generazione zero, prima
generazione, seconda generazione ...

[12]
TACS
, Total Access Communication System, standard per i telefoni cellulari
di prima generazione - Fonte: http://en.wikipedia.org/wiki/TACS - [WKP007]

[13] Enhanced TACS, introdotto per aumentare le capacità di rete utilizzando
una gamma di sequenza più ampia, da 450 MHZ a 900MHZ - Fonte: http://en.wikipedia.org/wiki/Total_Access_Communication_System
- [WKP008]

[14] UMTS, Universal Mobile
Telecommunications System - Fonte: http://it.wikipedia.org/wiki/Umts - [WKP009]

[15] VSF-Spread OFDM , Variable Spreading
Factor Spread Orthogonal Frequency Division Multiplexing - Fonte: http://it.wikipedia.org/wiki/4G_(telefonia)
- [WKP010]

[16] HSPA , High Speed Downlink
Packet Access - Fonte: http://en.wikipedia.org/wiki/Hdspa - [WKP056]

[17] GSM, Global System for Mobile communications, è il protocollo di comunicazione
più diffuso nel mondo - Fonte: http://en.wikipedia.org/wiki/GSM - [WKP011]

[18] WAP, Wireless Application Protocol e il protocollo di connessione ad
internet per telefoni cellulari - Fonte: http://en.wikipedia.org/wiki/Wireless_Application_Protocol
- [HSPA012]

[19] SIP, Società Italiana per l’Esercizio delle Telecomunicazioni,
società
italiana sorta nel 1967 inglobata poi nel 1994 dalla Telecom Italia -
Fonte:
http://it.wikipedia.org/wiki/SIP_-_Società_Italiana_per_l’Esercizio_delle_Telecomunicazioni
-
[HSPA013]

[20] AMPS, Advanced Mobile Phone Service
- Fonte: http://en.wikipedia.org/wiki/Advanced_Mobile_Phone_System - [WKP014]

[21]NMT
Nordisk Mobil Telefoni, la prima rete per cellulari con commutazione automatica
- Fonte: http://it.wikipedia.org/wiki/Nordisk_MobilTelefoni  - [WKP015]

[22]
Articolo tratto da “TACS” - Fonte: http://it.wikipedia.org/wiki/TACS - [WKP016]

[23]
Informazioni tratte da “GSM” - Fonte: http://en.wikipedia.org/wiki/GSM -
[WKP017]

[24] SMS, Short message service -
Fonte: http://en.wikipedia.org/wiki/SMS - [WKP018]

[25] Dual-band, Fonte:
http://en.wikipedia.org/wiki/Dual-band - [WPK018]

[26] Tri-Band, Fonte:
http://en.wikipedia.org/wiki/Tri-Band - [WPK019]

[27] GPRS, General Packet Radio Service, progettato per realizzare il
trasferimento di dati a media velocità, usando i canali TDMA - Fonte: http://en.wikipedia.org/wiki/GPRS
- [WPK020]

[28]ITU,
International Telecommunication Union è una organizzazione internazionale che
si occupa di definire gli standard nelle telecomunicazioni - Fonte:
http://en.wikipedia.org/wiki/ITU - [WPK021]

[29] IMT-2000, Standard di comunicazione per la telefonia mobile di terza
generazione - Fonte: http://www.itu.int/home/imt.html - [ITU001]

[30] HSUPA, High Speed Uplink Packet Access, protocollo di accesso alla rete
con la caratteristico di una estrema velocità nell’invio dei dati - Fonte: http://it.wikipedia.org/wiki/HSUPA
- [WKP022]

[31] DoCoMo, Do Communications Over
the Mobile Network - Fonte: http://it.wikipedia.org/wiki/NTT_DoCoMo - [WKP023]

[32] VSF-Spread OFDM, Variable-Spreading-Factor
Spread Orthogonal Frequency Division Multiplexing

[33]
Articolo tratto da “4G” - Fonte: http://en.wikipedia.org/wiki/4G - [WKP024]

[34]
Linux
è un sistema operativo libero di tipo Unix costituito
dall'integrazione del kernel Linux con elementi del sistema GNU e di altro
software sviluppato e distribuito con licenza GNU GPL o con altre licenze
libere. Linux è in realtà il nome del kernel sviluppato da Linus Torvalds a partire
dal 1991 - Fonte: http://it.wikipedia.org/wiki/Linux [Wik025]

[35] OHA, Open Handset Alliance, abbreviato OHA, è un accordo fra  47
differenti compagnie, tra cui Google Inc, Intel, T-Mobile, Sprint, HTC,
Qualcomm, Motorola e molte altre, il cui obiettivo è accelerare l’innovazione
nei dispositivi mobili. Hanno sviluppato Android che, come lo definiscono,  è
la prima aperta, completa e libera piattaforma per dispositivi mobili - Fonte: http://www.openhandsetalliance.com
- [OHA001]

[36] Software-stack o Solution-stack è un insieme di software,
sottosistemi o componenti necessari a rilasciare soluzioni funzionali e
complete per prodotti o servizi. Per lo sviluppo di applicazioni  web, ad
esempio, è necessario disporre di un sistema operativo, un web server, un
database e un linguaggio di programmazione. Un software-stack in questo caso
potrebbe essere LAMP; Linux (sistema operativo), Apache (web server) MySql
(database)  e Php (linguaggio di programmazione) - Fonte: http://en.wikipedia.org/wiki/Software_stack
- [WIK026].

[37]
Con Middleware si intende un software che permette  a più processi di
interagire tra di loro a dispetto di differenze nei protocolli di
comunicazione, architetture dei sistemi locali o  sistemi operativi. Un esempio
in Android potrebbe AIDL (Android Interface Definition Language) un linguaggio
usato per generare codice che permette a due processi su un dispositivo Android
di comunicare usando IPC (InterProcess Communication ) - Fonte: http://redomino.com/it/labs/
[RDM001] - http://docs.google.com/View?docid=d4wk9rb_1830s57drddt - [DCG001]

[38]
Con il termine user-friendly si intende tutto ciò che rende più facile
all’utente l’utilizzo dell’interfaccia. Per esempio una interfaccia grafica
(GUI) oppure chiarezza nella documentazione con  una buona guida il linea -
Fonte: http://translate.google.com [GOG001] - http://www.manuali.it/glossario/Informatica-e-Internet/
[MAN001].

[39]
Con Android sono disponibili applicazioni preinstallate come G-Mail, You-Tube o
Google-Maps oltre a quelle disponibili su Android Market.

[40] Open-source  - Fonte:
http://en.wikipedia.org/wiki/Open_source - [WKP0027]

[41]
Con il termine developer-friendly si intende una interfaccia di sviluppo
competa di tutti gli strumenti necessari per agevolare il lavoro dello
sviluppatore

[42] T-Mobile G1 è il telefonino della HTC rilasciato sul mercato
statunitense al prezzo di 180 $, in Italia sarà disponibile entro Aprile 2009 a
non meno, come previsione, di 300/ 400 €.

Software preinstallato: Amazon MP3
Store, Google Maps, GMail etc. E in più gli applicativi vincitori
dell'Android Developer Contest:  ShopShavvy, Ecorio e BreadCrumbz .

Caratteristiche: Fotocamera da 3.2 Megapixel, supporto
WiFi, Bluetooth, memoria espandibile, MicroSD, tastiera QWERTY con apertura
slide, USB 2.0 e piattaforma Android.

Sito ufficiale: http://www.t-mobileg1.com/.
Emulatore online: http://tmobile.modeaondemand.com/htc/g1/.

[43] High Tech Computer Corporation, abbreviato HTC, è una società fondata
nel 15 Maggio 1997 che produce principalmente dispositivi mobili basati su
Windows Mobile. HTC è anche membro del’Open Handset Alliance, il quale comporta
che sono conformi alle norme che consentono al sistema operativo Android di
essere eseguito sui loro hardware - Fonte: en.wikipedia.org/wiki/High_Tech_Computer_Corporation
[WKP028]

[44] T-Mobile è un operatore multinazionale di telefonia mobile. È costituita
da un gruppo di società controllate che  gestiscono reti GSM in Europa e negli
Stati Uniti. Globalmente T-Mobile ha 120 milioni di abbonati, essendo così il
terza per numero di abbonati.  È presente in 9 paesi: Austria, Croazia,
Repubblica Ceca, Germania, Ungheria, Olanda, Repubblica Slovacca, Gran
Bretagna, Montenegro, Macedonia e Stati Uniti - Fonte: http://en.wikipedia.org/wiki/T-Mobile
-  [WKP029]

[45]
Il multi-touch  si differenzia dal touch singolo per il fatto che è
sensibile al tocco in più punti diversi della superficie contemporaneamente

[46] Software Development Kit, abbreviato SDK è un termine che in italiano si
può tradurre come "pacchetto di sviluppo per applicazioni", e sta a
indicare un insieme di strumenti per lo sviluppo e la documentazione di
software - Fonte: http://en.wikipedia.org/wiki/Sdk - [WKP030]

[47]
Dalvik è una virtual machine per i dispositivi mobili. Essa permette di
eseguire applicazioni Java per Android

[48] Eclipse è una piattaforma software open source per sviluppatori, basata
principalmente su Java - Fonte: http://www.eclipse.org/ - [ECL001]

[49] NbAndroid (http://kenai.com/projects/nbandroid) è un Android Plug-in,
progetto di Martin Adamek,  Novembre 2008, ad oggi ha 38 membri.

[50] NetBeans è un ambiente di sviluppo scritto in Java ed  è anche
l’integrated development environment (IDE) ufficiale scelto dalla Sun
Microsystem (http://www.sun.com/), in contrapposizione col più diffuso Eclipse
(http://www.netbeans.org/downloads/index.html).

[51] Android Market: (
http://www.android.com/market/).

[52]
Articolo tratto dalla documentazione di Android disponibile all’indirizzo: http://code.google.com/intl/it-IT/android/
- [GOG002]

[53]
Disponibile all’indirizzo: http://www.android.com/us/developer-distribution-agreement.html

[54]
Ottemperante con tutti i requisiti di legge - Fonte:
http://www.proz.com/kudoz/english_to_italian/law_patents/455212-in_good_...
-
[PRZ001]

[55] Apple Inc. è una società con sede a Cupertino, California, che dai primi
anni Ottanta ha conquistato un posto preminente nella storia dell'informatica e
ha portato più volte grandi innovazioni nel settore dell'alta tecnologia -
Fonte: http://en.wikipedia.org/wiki/Apple_Inc. - [WKP031]

[56]
L’iPod touch è un dispositivo PDA con la stessa versione del sistema
operativo utilizzato per iPhone, con escluse le funzionalità di telefono. I
software sviluppati per l’iPod touch possono anche essere distribuiti per
iPhone e viceversa - Fonte: http://en.wikipedia.org/wiki/IPod_touch - [WKP032]

[57] MacOS X è il sistema operativo sviluppato nel 2001 dalla Apple Inc. per
computer Macintosh. Attualmente è disponibile nella versione 10.5.5 (Leopard) -
Fonte: http://www.apple.com/it/macosx/ - [APP001]

[58]
XNU
è il nome del kernel utilizzato nel sistema operativo open source
Darwin usato da Apple Inc. come base per il suo sistema operativo Mac OS X. XNU
è un acronimo che sta per XNU's Not Unix - Fonte:  http://code.google.com/p/xnu-dev/
 - [GOG005] - http://code.google.com/p/xnu-dev/ - [GOG004]

[59]
Advanced RISC Machine, i processori ARM, grazie alle sue caratteristiche
di basso consumo vengono utilizzati principalmente su PDA, cellulari,
videogiochi, router e altri dispositivi di ridotte dimensioni - Fonte: http://en.wikipedia.org/wiki/ARM_architecture
- [WKP033]

[60] PowerPC, Power Performance Computing o Power PC è una architettura di
processori creati nel 1991 da Apple, IBM e Motorola - Fonte: http://en.wikipedia.org/wiki/PowerPC
- [WKP034]

[61] X86, i primi computer Apple con processore X86 sono usciti nel 2006 con
la versione Tiger del sistema operativo, data in cui appaiono sul mercato
computer Apple con dual boot tra MacOS X e Windows XP

[62]
App Store per iPhone e iPod Touch disponibile all’indirizzo: http://store.apple.com/it?cid=OAS-EMEA-KWG-IT_General-IT

[63]
Informazioni tecniche su iPhone - Fonte: http://www.apple.com - [APP002]

[64]
Il sensore di prossimità a infrarossi permette di spegnere il display e
disattivare i controlli dello schermo quando si avvicina il dispositivo
all'orecchio, risparmiando così energia e ignorando i tocchi involontari -
Fonte: http://iphonecountry.myblog.it/archive/2008/12/21/cos-e-l-iphone.html -
[IPH001]

[65] GPS, Global Positioning System è un sistema di posizionamento su base
satellitare - Fonte: http://en.wikipedia.org/wiki/Gps - [WKP035]

[66]
Push Email indica la possibilità per uno smatrphone di ricevere email in tempo
reale tipo SMS, molto conosciuto sui telefoni Black Berry - Fonte: http://en.wikipedia.org/wiki/Push_e-mail
 - [WKP036] - http://www.tim.it/consumer/c365/i70113/o69684/prodotto.do?gclid=CMjbuZ74...
- [TIM001]

[67]
Indicano il movimento delle dita per interagire col dispositivo. Inoltre è un
brevetto Apple

[68]
Steve Jobs presenta l’iPhone al MacWorld 2007 di San Francisco - Fonte:
-
http://www.pasqualeborriello.com/2007/01/09/finalmente-apple-steve-jobs-...
-
[PSQ001]

[69]
Informazioni tratte da iPhone - Fonte: http://en.wikipedia.org/wiki/IPhone -
[WKP037]

[70] iTunes è il programma sviluppato dalla Apple Inc. per  organizzare  file
multimediali, permettendo l'acquisto online - Fonte: http://en.wikipedia.org/wiki/ITunes
- [WKP038]

[71]
Software development kit per iPhone e iPod touch e disponibile all’indirizzo: http://developer.apple.com/iphone/sdk1/

[72]
Informazioni tratte dal sito: http://developer.apple.com/iphone/program/ dopo
previa registrazione - [APP003]

[73]
Senza aderire allo Standard o all’Enterprise Program di Apple non è possibile
testare le applicazioni anche sul dispositivo personale

[74] Ad Hoc permette di firmare le applicazioni per la distribuzione tramite
web o mail

[75] In-house permette di firmare la applicazioni anche per la distribuzione
su store privati

[76] VOIP, Voice over Internet Protocol, tecnologia che permette di
utilizzare internet per le chiamate telefoniche

[77] Windows CE:
http://it.wikipedia.org/wiki/Windows_CE - [WKP040]

[78] Crossbow:
http://www.telefonino.net/Cellulari/Notizie/n15294/microsoft-crossbow.html -
[TLF001]

[79]
Fonte: http://www.3gsmworldcongress.com/ - [GSM001]

[80]
Tratto da: http://www.microsoft.com/windowsmobile/en-us/default.mspx - [MCR001]

[81]
Tratto  da:
http://www.verizonwireless.com/b2c/store/controller?item=phoneFirst&acti...
-
[VRZ001]

[82]
Tratto da: http://www.iphoneitalia.com/ecco-microsoft-skymarket-un-altro-clone-di-a...
- [IPH002]

[83]
Tratto da: http://www.theapplelounge.com/app-store/app-store-download-app/ -
[THP001]

[84]
Tratto da: http://en.wikipedia.org/wiki/BlackBerry_OS - [WKP039]

[85]
Fonte: http://blackberry.vodafone.it/storm/offerta.php - [BLK001]

[86] Symbian Ltd. È una società sviluppatrice di software fondata le 1998, ha
sede in Inghilterra e nel Settembre 2008 è stata acquistata da Nokia - Fonte: http://en.wikipedia.org/wiki/Symbian_Ltd
- [WKP040]

[87] Nokia è una delle più grandi società produttrici di apparecchiature per
telecomunicazioni, ah seda a Espoo in Finlandia ed è stata fondata nel 1865 -
Fonte: http://en.wikipedia.org/wiki/Nokia - [WKP041]

[88]
Nokia per contrastare Android  rende Symbian open source - Fonte: www.symbianfoundation.org/
- [SYM001]

[89]
S60, UIQ e MOAP sono interfacce del sistema operativo Symbian utilizzate in
maniera diversa sui vari dispositivi Nokia e non.

[90] AT&T, American Telephone and Telegraph Company, compagnia telefonica
statunitense con sede in Texas - Fonte: http://en.wikipedia.org/wiki/AT%26T -
[WKP041]

[91]
LG
Electronics produce vari componenti elettronici per la casa tra cui
telefoni cellulari - http://it.lge.com/index.jhtml

[92] Motorola è un'azienda statunitense di elettronica produttrice di
microprocessori, telefoni cellulari, nonché innumerevoli tipologie di
componenti elettronici, adatti per svariate applicazioni, dai diodi ai circuiti
integrati. Ha sede a Schaumburg, Illinois ed è stata fondata nel 1928 - Fonte: http://en.wikipedia.org/wiki/Motorola
- [WKP042]

[93] DOCOMO, Do Communications Over the Mobile Network, operatore principale
per la telefonia mobile in giappone, fondata nel 1991 - Fonte: http://en.wikipedia.org/wiki/NTT_docomo
- [WKP043]

[94] Samsung, un'azienda multinazionale coreana che produce elettronica di
consumo. Il gruppo possiede filiali in 58 paesi e più di 208.000 dipendenti -
Fonte: http://en.wikipedia.org/wiki/Samsung_Group - [WKP044]

[95]
Sony Ericsson Mobile Communications, joint venture fondata nel 2001 dalla Sony
Corporation - Fonte: http://en.wikipedia.org/wiki/Sony_Ericsson - [WKP045]

[96]
Azienda di elettronica con sede in Svizzera fondata nel 1987 - http://www.st.com/
- [ST001]

[97] Texas Instruments Incorporated, una compagnia statunitense con sede a
Dallas in Texas. Peceduta dalla Intel e dalla Samsung, risulta attualmente
essere il terzo produttore mondiale di dispositivi elettronici - Fonte: http://en.wikipedia.org/wiki/Texas_Instruments
- [WKP046]

[98]
Caratteristiche tecniche del Nokia E75 disponibili all’indirizzo:
http://shop.nokia.it/nokia-it/product.aspx?sku=3971029&section_id=916&cu...
-
[NKI001]

[99]
Caratteristiche del software all’indirizzo: http://en.wikipedia.org/wiki/Arkanoid
- [WKP47]

[100] PNG, Portable Network Graphics, ulteriori informazioni: http://it.wikipedia.org/wiki/Portable_Network_Graphics
- [WKP048]

[101] Eclipse è disponibile per il download sul sito ufficiale http://www.eclipse.org/.

[102]
E’ possibile installare il plug-in aggiuntivo direttamente dal menù Help >
Software Updates > Available Software, inserendo nel campo di testo
l’indirizzo https://dl-ssl.google.com/android/eclipse/.

[103]
All’indirizzo http://code.google.com/android/download.html è possibile
scaricare l’ultima versione dell’SDK per Android.  Attualmente la 1.0 Release
2. Inoltre all’indirizzo http://code.google.com/intl/it-IT/android/intro/installing.html
è disponibile una guida all’installazione per Eclipse e NetBeans.

[104]
La documentazione Android SDK è disponibile all’indirizzo: http://code.google.com/intl/it-IT/android/documentation.html
- [GOG006]

[105] LunarLander è una applicazione d’esempio consultabile
all’indirizzo
http://code.google.com/intl/it-IT/android/samples/LunarLander/index.html,
è
estremamente utile per iniziare a programmare e nella sua semplicità
fornisce
le basi essenziali per la grafica, l’orientamento dello schermo e
l’iterazione
con l’utente - [GOG007]

[106] Pacchetto zip disponibile all’indirizzo:
http://www.natt.it/tsi/Android.zip

[107] Video disponibili all’indirizzo: http://www.natt.it/tsi/Android.php

[108] Immagini disponibili all’indirizzo: http://www.natt.it/tsi/AndroidImages.php

[109]
iPhone SDK per iPhone OS è disponibile all’indirizzo http://developer.apple.com/iphone/sdk1/
dopo previa registrazione gratuita.

[110] 31 Days of iPhone Apps , http://www.appsamuck.com/
- [APP001]

[111] Object-C:
http://it.wikipedia.org/wiki/Objective_C - [WKP049]

[112] Brad Cox :
http://it.wikipedia.org/wiki/Brad_Cox - [WKP050]

[113] Become an Xcoder :
http://www.cocoalab.com/BecomeAnXcoder.pdf - [COC001]

[114] XCode Italia: http://www.xcodeitalia.com/ - [XCT001]

[115] Cocoa:
http://en.wikipedia.org/wiki/Cocoa_(API) - [WKP051]

[116] xCode IDE:
http://en.wikipedia.org/wiki/Xcode - [WKP052]

[117] Interface Builder: http://en.wikipedia.org/wiki/Interface_Builder
- [WKP053]

[118] Pacchetto zip disponibile all’indirizzo:
http://www.natt.it/tsi/iPhoneXcode.zip

[119] Video disponibili all’indirizzo: http://www.natt.it/tsi/iPhone.php

[120] Immagini disponibili all’indirizzo: http://www.natt.it/tsi/iPhoneImages.php

[121] Plug-in Eclipse: http://na.blackberry.com/eng/developers/javaappdev/javaeclipseplug.jsp

[122]
Istruzioni per l’installazione: http://na.blackberry.com/eng/developers/javaappdev/InstallInstructions.doc
- [BLB001]

[123] Creating a Blackberry Game:
http://www.toniwestbrook.com/archives/69 - [TNW001]

[124] Pacchetto zip disponibile all’indirizzo: http://www.natt.it/BB.php

[125] Video dell’applicazione disponibile all’indirizzo:
http://www.natt.it/VideoBB.php

[126]
Microsoft rende disponibile gratuitamente per studio il pacchetto Visual Studio
per studenti universitari, è necessario disporre di un indirizzo e-mail di una
università riconosciuta da Microsoft - Fonte:  https://www.dreamspark.com/default.aspx
- [DRM001]

[127]
Caratteristiche del linguaggio C Sharp: http://it.wikipedia.org/wiki/C_sharp -
[WKP055]

[128] Pacchetto zip progetto per Visual Studio disponibile all’indirizzo:
http://www.natt.it/VS.php

[129] Video dell’applicazione su simulatore Windows Mobile disponibile
all’indirizzo: http://www.natt.it/Video.php

[130] Immagini aggiuntive del progetto disponibili all’indirizzo: http://www.natt.it/VS/images.php

[131] Symbian S60:
http://en.wikipedia.org/wiki/Series_60 - [WKP054]

[132] SKD Symbian e documentazione disponibile all’indirizzo:
http://www.forum.nokia.com - [FRM001]

[133]Caratteristiche
di tutti i modelli Nokia disponibili sul mercato all’indirizzo: http://www.forum.nokia.com/devices/matrix_all_1.html
- [FRM002]

[134] Pacchetto zip del progetto per Symbian disponibile all’indirizzo:
http://www.natt.it/SB.php

[135] Video dell’applicazione in esecuzione disponibile all’indirizzo:
http://www.natt.it/SBVideo.php