+ Lezione 19 Blackberry
+ Credits I lucidi di questa lezione sono stati redatti dal Dr. Paolo Casoto nel 2012. Sono rilasciati con licenza Creative Commons Attribuzione, non commerciale e non opere derivate.
+ La piattaforma BlackBerry La piattaforma BlackBerry utilizza Java, fin dalla versione 4, come linguaggio unico per lo sviluppo di applicazioni. Andando a rimpiazzare il precedente sistema operativo in C++ Non è possibile scrivere una applicazione che non sia scritta in Java Tutto il codice in esecuzione sul BlackBerry è interpretato e gestito dal Garbage Collector. Multitasking fornito nativamente dal sistema operativo Applicazioni che possono richiedere molteplici risorse anche in background, sia in termini di RAM sia in termini di CPU Accesso al dispositivo mediante tastiera o schermo touch Da considerare con cura, la tastiera è ancora un MUST nel mondo BlackBerry
+ Come programmare in BB Linguaggio: J2ME. Già lo conosciamo molto bene!!! Ambiente di sviluppo: solo in ambiente Windows. E possibile scaricare gratuitamente dal sito BB, solo previa registrazione, tutti i simulatori dei dispositivi BB e l ambiente di sviluppo basato sulla piattaforma Eclipse. https://bdsc.webapps.blackberry.com/java/download/eclipse Sono disponibili anche strumenti per la simulazione dell eventuale piattaforma di amministrazione e gestione dei dispositivi BB (BlackBerry Enterprise Service) Documentazione: https://bdsc.webapps.blackberry.com/java/
+ Attenzione ai tablet Queste slide trattano ESCLUSIVAMENTE la programmazione BB in ambito smartphone e non il caso dei tablet BB. E questi come si programmano? In diversi modi: CSS + HMTL5 Adobe Air C / C++ SDK 2.0 Android Cosa??? Android Si, proprio così, il BB PlayBook è in grado di eseguire codice Android 2.3.3 opportunamente ricompilato Ma a che pro?
+ Il ciclo di vita di una applicazione BlackBerry Tutte le applicazioni BlackBerry che visualizzano elementi grafici devono estendere la classe astratta UiApplication E possibile creare una sola istanza di ciascuna applicazione. In generale l applicazione deve essere creata all interno del metodo statico main della classe principale della nostra applicazione. La piattaforma BlackBerry non avvia automaticamente il thread di gestione dell interfaccia grafica e degli eventi. E necessario avviare manualmente il thread di gestione degli eventi mediante il metodo UiApplication.enterEventDispatcher Ma quali eventi: touch, tastiera, trackball, messaggi di sistema ed interazione con altri servizi
+ Il ciclo di vita di una applicazione BlackBerry Le applicazioni BlackBerry consentono ad un unico thread di interagire con l interfaccia grafica. Eventi di lunga durata sono bloccanti per l interfaccia Non è possibile per un thread parallelo modificare gli elementi dell interfaccia grafica senza sollevare una eccezione. In modo analogo a molti altri linguaggi (e.g.: Objective C su ios o C#) è possibile per un thread secondario invocare una attività da svolgere all interno del thread principale Mediante l invocazione dei metodi InvokeLater ed InvokeAndWait che ricevono come argomento un oggetto Runnable che determina il contenuto della operazione da eseguire.
+ Applicazioni in background BlackBerry consente l esecuzione di applicazioni in background, ad esempio i servizi, anche se la loro interfaccia grafica non è visualizzata. E possibile gestire il passaggio di stato da esecuzione foregroud ad esecuzione background. Utilizzo del metodo UiApplication.getUiApplication().requestBackground(); E possibile implementare, in questo modo, applicazioni in grado di gestire servizi e dati anche ove non visualizzate direttamente.
+ Breve accenno alle componenti grafiche nel mondo BB 3 tipologie di componenti grafiche: Field: elementi basilari dell interfaccia utilizzati per la gestione dell interazione con l utente E.g.: campi di testo, pulsanti Manager: layout applicati agli elementi grafici, al fine di modificarne il posizionamento all interno dello schermo. Screen: rappresentano le finestre all interno delle quali sono collocati i field mediante i rispettivi manager. E possibile visualizzare un solo screen alla volta. Gli screen sono responsabili della gestione degli eventi associati ai singoli field. Ma come gestiamo gli eventi? Ovviamente implementando una opportuna serie di listener.
+ Memorizzazione dei dati La piattaforma BB consente 4 tipi diversi di meccanismi di persistenza: RecordStore MIDP: già li conosciamo molto bene JSR 75 accesso al filesystem: anche questa API la conosciamo molto bene, è un elemento che abbiamo visto in J2ME BlackBerry Persistent Store: strumento per la persistenza basata sulla memorizzazione del grafo degli oggetti dell applicativo, molto più potente rispetto all accesso con RecordStore. Non SQL-like SQL Lite: dalla versione 5.0 del BlackBerry OS è possibile includere all interno delle proprie applicazioni una versione del db SQL Lite, per realizzare veri e propri database relazionali.
+ Memorizzazione dei dati E sconsigliato utilizzare RecordStore su BlackBerry, salvo per motivi di retrocompatibilità con applicazioni MIDP legacy. Meglio optare per il Persistent Store di sistema, che consente una gestione di più alto livello degli oggetti da serializzare. Il Persistent Store memorizza i dati esclusivamente all interno della memoria Flash del telefono Non è in grado di garantire la persistenza dei dati su scheda SD esterna al dispositivo Valutate con cautela nel caso in cui il salvataggio dei dati della vostra applicazione renda necessario optare per una soluzione basata su JSR 75 E.g.: salvataggio di immagini, memorizzazione di file audio.
+ PeristentStore Ciascun PersistentStore è caratterizzato da una chiave univoca all interno del dispositivo. Non preoccupatevi di andare a coincidere con altre chiavi utilizzate dalle applicazioni di sistema o dalle altre applicazioni utente. Fatevela generare in modo casuale da Eclipse. In generale un PersistentStore può essere visto come una tabella di hash caratterizzata da una serie di coppie <chiave,valore> PersistentObject persistentobject = PersistentStore.getPersistentObject(0x1111111111L); Metodo statico di accesso cosa vi ricorda?
+ PeristentStore Ma quali oggetti possono essere memorizzati all interno del PersistentStore? Tutti gli oggetti che implementano l interfaccia Persistable Del tutto analogo all interfaccia Serializable che abbiamo visto nel caso di J2SE e che è assente all interno del profilo J2ME MIDP Vi ricordate la serializzazione tramite array di byte della classe Studente? Anche nel caso degli oggetti da persistere all interno del PersistentStore, la necessità di implementare Persistable si estende a tutti gli oggetti del grafo delle referenze che deve essere persistito. I tipi base implementano, in BB, tale interfaccia.
+ JSR 75: accesso al filesystem L utilizzo delle API JSR 75 è del tutto analogo a quanto abbiamo visto nel caso di J2ME Utilizzo di Connector.open e del downcasting a FileConnection Possiamo accedere al filesystem del dispositivo (ed alle eventuali schede SD esterne) a patto di disporre dei relativi permessi. Posso utilizzare, una volta ottenuta una istanza di FileConnection, tutti i metodi che abbiamo già visto nel caso J2ME per la navigazione del filesystem e per la sua gestione.
+ Accedere alla rete Il BB nasce come piattaforma prettamente dedicata al networking, in particolare all invio ed alla ricezione di email. La connettività è uno degli elementi peculiari di BB e ne rappresenta uno dei fattori di successo. I dispositivi BB possono accedere alla rete mediante 5 differenti modalità: Servizi BlackBerry Enterprise Server / BlackBerry Mobile Data System (BES / MDS) Servizi BlackBerry Internet Service (BIS) Connessione wireless TCP/IP Wi.-Fi WAP (nelle versioni 1.0 e 2.0)
+ Accedere alla rete
+ BES / MDS Consente la connessione sicura dei dispositivi ad un insieme di server interni all azienda. Utilizza un protocollo sicuro, criptato, compresso e ridondante a livello di trasporto, al posto del tradizionale protocollo TCP. I dispositivi utilizzano il server BES interno all azienda come proxy per l accesso ad Internet e la navigazione. Grazie alla tecnologia BES/MDS è possibile superare in modo sicuro le limitazioni di accesso imposte dai firewall aziendali. Integrazione con Exchange e Lotus Domino
+ Connessione mediante APN su TCP/IP Connettività similare alla maggior parte degli smartphone, mediante definizione di un APN di riferimento. Presenza di nessun servizio specifico della piattaforma e delle rispettive garanzie di sicurezza del canale di comunicazione. E comunque possibile disattivare questa tipologia di connessione sui dispositivi connessi mediante BES e BIS Fate attenzione quando programmate a considerare il fatto che il vostro ambiente di sviluppo possa essere molto differente dall effettivo ambiente di utilizzo del cliente. Testate sempre su ciascuna modalità di accesso alla rete, scoprirete che ciascuna modalità di accesso ha le sue idiosincrasie.
+ Connessione mediante BIS e Wi-Fi Fornisce agli utenti singoli o con un numero limitato di dispositivi i medesimi servizi offerti dal BES in ambiente corporate. Ambiente standard per la ricezione e l invio delle email in ambiente BlackBerry. Da alcuni anni i dispositivi BB dispongo anche di connettività Wi-Fi. Può essere utilizzata per avviare connessioni TCP/IP (ove consentito dall amministratore del BES) o mediante connessione al server BES / BIS.
+ Le API per lavorare in rete Le abbiamo in parte già viste nelle scorse lezioni su J2ME Vi ricordate l esempio in cui abbiamo utilizzato HttpConnection per scaricare una immagine dal web e visualizzarla all interno del nostro simulatore??? Possiamo utilizzare le classi per la connessione a diverse tipologie di protocolli di rete definite in J2ME Utilizzando il metodo Connector.open come strumento di accesso universale alla connettività del dispositivo. Per default i device in BES utilizzano la modalità di connessione BES, mentre i device non in BES per default utilizzano la connettività TCP/IP su APN. Per forzare l utilizzo di TCP/IP posso utilizzare, come modificatore dell url, la stringa deviceside=true
+ Le API per lavorare in rete Anche nel caso in cui si voglia forzare la connessione mediante rete wi-fi è possibile utilizzare per l url il suffisso interface=wi-fi. In generale, quando si lavora su BB, in particolare su connettività di rete, è necessario conoscere la tipologia di connessione adottata dal dispositivo. CoverageInfo: determina se la connessione è di tipo BES / MDS, BIS o mediante connessione diretta TCP/IP WLANInfo: determina se la connessione è basata su Wi-Fi. Per ciascuna app è opportuno determinare l ordine di utilizzo delle differenti tipologie di connessione.
+ Localizzazione GPS BlackBerry introduce un insieme esteso di API per la gestione della localizzazione dell utente, grazie all interazione con un insieme eterogeneo di sensori e servizi. Cella di riferimento del segnale GSM: accuratezza ridotta (3-4 km) ma immediata identificazione della posizione. Assisted GPS: utilizzo congiunto di connettività di rete e dati derivanti dal sensore GPS. Più lento e preciso delle celle di riferimento GSM ma più veloce del GPS non assistito. GPS: utilizzo del solo sensore GPS. Può richiedere anche alcuni minuti per poter raggiungere una accuratezza sufficiente. Ciascuna soluzione presenta pro e contro. Valutate sempre anche un ulteriore elemento importantissimo in ambito mobile: la durata della batteria.
+ BlackBerry Maps E possibile interagire con il servizio di mappe di BlackBerry, il BB Maps, in modo del tutto analogo a quanto vedremo nel caso di Android, mediante l invio al sistema operativo di un Intento. Dico esplicitamente al S.O. di avviare un servizio o una applicazione dato un insieme di parametri. Utilizzo il metodo Invoke.invokeApplication(Invoke.APP_TYPE_MAPS, args); Solo dalla versione 4.5 è possibile utilizzare le mappe come componente all interno di una applicazione. Posso utilizzare l applicativo Maps per visualizzare una mappa ed un eventuale percorso o insieme di punti. Componente MapField.
+ Distribuire le applicazioni BB Le applicazioni BB possono essere distribuite in 4 modalità differenti: BlackBerry World: è lo store ufficiale di BB. Successivo rispetto ad Apple Store ed Android Market, consente il download di applicazioni gratuite ed a pagamento. La pubblicazione richiede l acquisto di un insieme di crediti per la sottomissione della propria applicazione. La valutazione è esclusivamente tecnica e non contenutistica (e.g. Apple Store). Over the Air: è possibile distribuire una applicazione BlackBerry anche mediante il semplice download da un generico sito Internet. Installazione mediante file JAD
+ Distribuire le applicazioni BB Desktop Manager: le applicazioni BB possono, inoltre, essere installate anche mediante il software di sincronizzazione desktop del proprio dispositivo. Installazione mediante file ALX. BES: la soluzione ottimale per l installazione delle applicazioni corporate è senza dubbio quella di passare attraverso il server BES. L amministratore può decidere, grazie alla notifica push delle applicazioni e degli aggiornamenti, quali applicazioni rendere disponibili per i singoli dispositivi.
+ Domande??? Grazie a tutti per l attenzione