AppleTV: insight e progettazione per l'Home EntertainmentPaolo Musolino
Nel 2015 entra sul mercato l'Apple TV 4° generazione che punta allo stesso concetto ed allo stesso ecosistema di iPhone. Home Entertainment, hub di connessione per lo SmartHome, Gaming e Broadcasting: queste sono le opportunità da presidiare da parte delle aziende. Allora, da dove partire, quali strategie attuare e come progettare applicazioni per Apple TV?
Slides del bootcamp tenutosi alla DevFestMed 2016 a Catania in cui sono stati analizzati pro e contro tra l'approccio Xamarin cross-platform e lo sviluppo nativo sulle singole piattaforme (Android/iOS)
Steps to develop apps for mobile that access internet realted contents.
It simply explores basic concepts of developmnet. Written in italian.
---
Espone i passi necessari a sviluppare un app mobile in grado di accedere a contenuti su web. Espone i concetti basilari del processo di sviluppo.
What is Xamarin? Why should I use it?
This deck will guide you in discovering the Xamarin world and understanding more about building universal apps with C#.
AppleTV: insight e progettazione per l'Home EntertainmentPaolo Musolino
Nel 2015 entra sul mercato l'Apple TV 4° generazione che punta allo stesso concetto ed allo stesso ecosistema di iPhone. Home Entertainment, hub di connessione per lo SmartHome, Gaming e Broadcasting: queste sono le opportunità da presidiare da parte delle aziende. Allora, da dove partire, quali strategie attuare e come progettare applicazioni per Apple TV?
Slides del bootcamp tenutosi alla DevFestMed 2016 a Catania in cui sono stati analizzati pro e contro tra l'approccio Xamarin cross-platform e lo sviluppo nativo sulle singole piattaforme (Android/iOS)
Steps to develop apps for mobile that access internet realted contents.
It simply explores basic concepts of developmnet. Written in italian.
---
Espone i passi necessari a sviluppare un app mobile in grado di accedere a contenuti su web. Espone i concetti basilari del processo di sviluppo.
What is Xamarin? Why should I use it?
This deck will guide you in discovering the Xamarin world and understanding more about building universal apps with C#.
Well being, biodiversity, post-2015 agenda, by Ashish KothariAshish Kothari
Well-being practices and world views from around the world are showing transformational alternatives to conventional 'development' and political governance models, as they are based on ecological sustainability, equity, and cultural diversity; these need to influence the post-2015 Sustainable Development Agenda which otherwise remains within today's unsustainable 'growth' paradigm.
Начало трудовой карьеры всегда осложняется моментом, когда вчерашнему (или сегодняшнему) студенту или школьнику приходится составлять резюме. Опыта работы еще нет, каких-то карьерных достижений соответственно тоже… Как же правильно составить резюме без опыта работы?
Перед тем как пригласить соискателя на собеседование или положительно ответить на его отклик любой работодатель должен ознакомиться с резюме кандидата. Зачастую, до того, как пригласить соискателя, с этим документом ознакомятся менеджер по персоналу, администратор ресторана, директор и иногда даже коллеги.
Поэтому составить грамотное резюме, емкое, но содержательное является половиной успеха при поиске работы в ресторанной сфере.
Подбор персонала для ресторана зачастую становится непрерывным процессом в контексте жизни самого заведения. В нем раз за разом, неделя за неделей сменяется персонал, растет уровень текучести кадров и, кажется, нет предела и конца этой истории.
Прежде чем сотрудник покидает место работы, он проходит достаточное количество этапов на работе: собеседование с менеджером по персоналу, переговоры с менеджером ресторана или директором, знакомство с коллегами, стажировка и т.д. Если внимательно проследить за каждым этапом жизни сотрудника в ресторане можно выявить «неисправности», оптимизировать и в результате сократить число уволившихся сотрудников.
Речь пойдет о собеседовании, фактически стартовом этапе взаимодействия с потенциальным работником. Мы собрали 11 рекомендаций, которые помогут сделать ваш выбор сотрудника более целевым, а следовательно более удачным.
Как НЕ следует вести себя на собеседованииJobRest.ru
Несколько недель ранее мы рассказывали о том, как правильно составить резюме. Выделяли пять основных качеств действительно хорошего резюме. Сегодня мы поговорим о следующем этапе поиска работы – о собеседованиях.
В сети можно найти достаточно полезных и не очень статей о том, что, как и зачем говорить на собеседовании. Но соискатели упорно совершают одни и те же ошибки. Поэтому мы решили выделить 6 основных ошибок или советов о том, как не нужно вести себя на собеседовании.
Вместо заключения: Фактически это базовый пункт при приеме на работу, каким бы вы не были замечательным специалистом кухни, бара или отлично справлялись с работой в зале, вы просто обязаны быть воспитанным.
Помните об этих правилах и вы обязательно найдете то, что ищите!
Дружить ли с начальником в социальных сетях?JobRest.ru
Очень часто человек решается на то, чтобы установить дружбу в социальных сетях не только с коллегами, но и с начальством. Но не скажется ли это негативно на его карьере?
В каких случаях вы можете без опаски «дружить» с начальником в социальных сетях?
l mondo stà cambiando e siamo sempre più "connessi". L'esigenza sempre più pressante di ottimizzare le procedure e ridurre i costi porta ad un sempre maggiore interesse verso soluzioni fruibili anche da dispositi mobili.
Vedremo cosa serve per sviluppare siti ed applicazioni web destinate a dispositivi mobili: le caratteristiche, le tecniche e gli strumenti necessari alla produzione di applicazioni sulle maggiori piattaforme mobili, con particolare attenzione ai dispositivi rim, apple e nokia.
La sessione si rivolge a sviluppatori web che desiderino ampliare il proprio skill set con la capacità di esporre le proprie soluzioni sulle reti mobili.
Applicazioni mobili: strumenti, costi soluzioni e peformanceDiego La Monica
Le applicazioni mobili sono osservati speciali. Ma come decidere se sviluppare un'App Nativa o un'App Ibrida e quali sono i costi da sostenere? Questo ed altro è stato discusso a SMAU Milano 2016.
Le slide accompagnatorie della presentazione tenuta dal Founder Ruggero Borgonovo durante l'evento "Next Step IBMi" di Faq400, tenuto all'IBM Client Center di Segrate
potete seguire il filmato con lo speech qui:
https://www.youtube.com/watch?v=0SikD-oFggw&feature=youtu.be
Well being, biodiversity, post-2015 agenda, by Ashish KothariAshish Kothari
Well-being practices and world views from around the world are showing transformational alternatives to conventional 'development' and political governance models, as they are based on ecological sustainability, equity, and cultural diversity; these need to influence the post-2015 Sustainable Development Agenda which otherwise remains within today's unsustainable 'growth' paradigm.
Начало трудовой карьеры всегда осложняется моментом, когда вчерашнему (или сегодняшнему) студенту или школьнику приходится составлять резюме. Опыта работы еще нет, каких-то карьерных достижений соответственно тоже… Как же правильно составить резюме без опыта работы?
Перед тем как пригласить соискателя на собеседование или положительно ответить на его отклик любой работодатель должен ознакомиться с резюме кандидата. Зачастую, до того, как пригласить соискателя, с этим документом ознакомятся менеджер по персоналу, администратор ресторана, директор и иногда даже коллеги.
Поэтому составить грамотное резюме, емкое, но содержательное является половиной успеха при поиске работы в ресторанной сфере.
Подбор персонала для ресторана зачастую становится непрерывным процессом в контексте жизни самого заведения. В нем раз за разом, неделя за неделей сменяется персонал, растет уровень текучести кадров и, кажется, нет предела и конца этой истории.
Прежде чем сотрудник покидает место работы, он проходит достаточное количество этапов на работе: собеседование с менеджером по персоналу, переговоры с менеджером ресторана или директором, знакомство с коллегами, стажировка и т.д. Если внимательно проследить за каждым этапом жизни сотрудника в ресторане можно выявить «неисправности», оптимизировать и в результате сократить число уволившихся сотрудников.
Речь пойдет о собеседовании, фактически стартовом этапе взаимодействия с потенциальным работником. Мы собрали 11 рекомендаций, которые помогут сделать ваш выбор сотрудника более целевым, а следовательно более удачным.
Как НЕ следует вести себя на собеседованииJobRest.ru
Несколько недель ранее мы рассказывали о том, как правильно составить резюме. Выделяли пять основных качеств действительно хорошего резюме. Сегодня мы поговорим о следующем этапе поиска работы – о собеседованиях.
В сети можно найти достаточно полезных и не очень статей о том, что, как и зачем говорить на собеседовании. Но соискатели упорно совершают одни и те же ошибки. Поэтому мы решили выделить 6 основных ошибок или советов о том, как не нужно вести себя на собеседовании.
Вместо заключения: Фактически это базовый пункт при приеме на работу, каким бы вы не были замечательным специалистом кухни, бара или отлично справлялись с работой в зале, вы просто обязаны быть воспитанным.
Помните об этих правилах и вы обязательно найдете то, что ищите!
Дружить ли с начальником в социальных сетях?JobRest.ru
Очень часто человек решается на то, чтобы установить дружбу в социальных сетях не только с коллегами, но и с начальством. Но не скажется ли это негативно на его карьере?
В каких случаях вы можете без опаски «дружить» с начальником в социальных сетях?
l mondo stà cambiando e siamo sempre più "connessi". L'esigenza sempre più pressante di ottimizzare le procedure e ridurre i costi porta ad un sempre maggiore interesse verso soluzioni fruibili anche da dispositi mobili.
Vedremo cosa serve per sviluppare siti ed applicazioni web destinate a dispositivi mobili: le caratteristiche, le tecniche e gli strumenti necessari alla produzione di applicazioni sulle maggiori piattaforme mobili, con particolare attenzione ai dispositivi rim, apple e nokia.
La sessione si rivolge a sviluppatori web che desiderino ampliare il proprio skill set con la capacità di esporre le proprie soluzioni sulle reti mobili.
Applicazioni mobili: strumenti, costi soluzioni e peformanceDiego La Monica
Le applicazioni mobili sono osservati speciali. Ma come decidere se sviluppare un'App Nativa o un'App Ibrida e quali sono i costi da sostenere? Questo ed altro è stato discusso a SMAU Milano 2016.
Le slide accompagnatorie della presentazione tenuta dal Founder Ruggero Borgonovo durante l'evento "Next Step IBMi" di Faq400, tenuto all'IBM Client Center di Segrate
potete seguire il filmato con lo speech qui:
https://www.youtube.com/watch?v=0SikD-oFggw&feature=youtu.be
Nel corso di questo webinar apprenderemo le basi necessarie per sviluppare un'applicazione Microsoft Windows Phone: quali tool di sviluppo utilizzare, cosa ci mette a disposizione l'SDK, come è strutturato un progetto.
Queste slide e questo lavoro, danno un'infarinatura di quello che è Android e il mondo che gira intorno a lui.
L'opera comprende i seguenti capitoli:
* Quando nasce Android?
* Dispositivi e Licenza di Distribuzione
* L'architettura del sistema operativo Android
* Perché Dalvik non è una vera Java Virtual Machine?
* Quante releases di Android sono stare rilasciate?
* Cosa ci posso fare con Android?
* Che app trovo di default su Android?
* Market alternativi per Android?
* Android è sicuro come sistema operativo?
* Mi conviene sviluppare una mia applicazione per Android?
* Posso guadagnare con Android?
* Link, Fonti e Note
Presentarsi sul mercato globale con app di successoDiego La Monica
Conosci il nemico come conosci te stesso. Se fari così, anche in mezzo a cento battaglie non ti troverai mai in pericolo (Sun Tzu - L'arte della guerra - cap. 3 p. 33)
Il progetto si propone di fornire e-skills e soft skills agli studenti del liceo "Antonio Labriola " di Ostia.
Al progetto hanno aderito circa 40 studenti del liceo che hanno seguito i corsi su come costruire una APP dopo la fine delle lezioni.
L'obiettivo del progetto è stato quello di costruire una APP che avrebbe permesso di gestire i corsi durante la settimana autogestita dagli studenti.
Questa App ha permesso di gestire il periodo di autogestione al liceo e potrà essere usata in modo più ampio per gestire eventi vari.
Dal lato utilizzatore ha permesso di visualizzare i corsi esistenti, di controllare la disponibilità, l'aula dove si sarebbe svolto il corso e di iscriversi quindi ai corsi.
Dal lato amministratore di inserire eventi con i relativi dati: L’argomento, il luogo dove è svolto, i numero di posti disponibili, il relatore.
Con la collaborazione della community Dot Net Code, un gruppo di professionisti che si occupano di condividere e divulgare le principali tecniche di programmazione sulla piattaforma Microsoft .NET, gli studenti del liceo Labriola hanno cominciato a scoprire il mondo delle APP.
Introduzione allo sviluppo cross-platform mobile con Xamarin e Xamarin.Forms. Spiegazione dell'engine di Xamarin e della relazione con (Android, iOS, Windows).
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoGabriele Gaggi
Cordova è la chiave di volta che consente agli sviluppatori web un ingresso rapido ed indolore negli store delle diverse piattaforme mobili. Vediamo come utilizzare questa chiave di volta sfruttando la potenza e semplicità del framework MVC di Google AngularJs ed utilizzando come collante il framework Ionic per ottenere rapidamente applicazioni performanti con un look and feel analogo alle app native.
Flutter: Google alla conquista del mobile multi piattaformaCommit University
Nell'ultimo decennio, lo sviluppo software è diventato trasversale anche e sopratutto nel campo mobile.
Le piattaforme ed i frameworks utili a tale scopo sono diversi, con i loro pro e contro.
Tra tutti spicca Flutter, un nuovo framework made by Google,
che riesce brillantemente ad unire la versatilità della programmazione ad alto livello, senza rinunciare alle performances che solo il codice nativo può raggiungere.
Il tutto "servito" per iOS ed Android.
2. Chi è Acrm net
-aCrm net è una società italiana specializzata nello sviluppo di CRM
open source e di soluzioni ad hoc per il web e il mobile.
- aCrm net vanta più di 50 dipendenti che coprono una vasta gamma di figure
professionali e ha ben due sedi in Europa: Roma e Ginevra.
Contatti
aCrm Via Enrico Berlinguer, 18 (00054)
Fiumicino (Roma) Italia
www.acrmnet.com
info_net@acrmnet.it
Phone +39 06 95214464
Fax +39 06 92913681
Le nostre APPS
HERMES HEALTY SPIECES PET ISLAND SWAP ISLAND MORE OR LESS NAPOMEMO
3. Apps native, web apps e apps ibride
• Le apps in linguaggio nativo normalmente sono più performanti, le transizioni e gli
effetti sono più integrati e belli e le apps native vengono caricate in minor tempo e
hanno il completo accesso a tutto l’hardware del device usato. Bisogna dire però che le
apps native richiedono molto più tempo di sviluppo incrementando significativamente i
costi di un progetto e inoltre devono essere sviluppate separatamente per ogni sistema
operativo.
• Le web apps sono create utilizzando gli standards Web, quindi è possibile avere una
base comune per tutti i device supportati e minori tempi di sviluppo. Una web app non
ha bisogno di essere approvata dagli store ma può essere raggiunta solo tramite URL
web inoltre non ha possibilità di avere accesso all’hardware del device e non funziona in
modalità off-line.
• Una app ibrida usa gli standards web, funziona anche in modalità off-line ed ha acesso
ai maggiori strumenti hardware del device usato. Tuttavia, come per le apps in
linguaggio nativo, deve essere approvata dagli store.
• A prima vista sembrerebbe che un app ibrida sia la soluzione a tutti I nostri problemi, in
realtà possiamo dire che molto dipende dal tipo di requisito software richiesto. Per un
app che ha bisogno di grafica 3D si usa il codice nativo, se invece è un semplice gioco di
carte forse la soluzione ibrida è più interessante.
aCrm net training course
Apr 2014
3
4. Creare Videogiochi senza scrivere una sola riga di
codice?
• Sono molti gli strumenti che stanno emergendo e che permettono di creare
app senza scrivere codice
• L’utilizzo di interfacce plug&play è ormai all’ordine del giorno.
• TheAppBuilder per la creazione di app “casual
Content”
• GameSalad per la creazione di giochi
• Appery.io per la creazione di app enterprise
aCrm net training course
Apr 2014
4
6. Versione Mac e
Windows
Windows Funziona attraverso il
browser web
Windows Versione Mac e
Windows
Android e iOS Android e iOS
(CocoonJS and Direct
Canvas), Desktop,
Windows 8, Windows
Phone 8, HTML5
Versione gratuita: Android,
Windows
Versione Pro:Android, iOS, Mac,
Windows
Android, iOS, Mac,
Windows PC,
Windows 8,
Windows Phone 8,
Ubuntu, HTML5
Android, iOS, Mac,
Windows 8
Pro version
349$/anno
Personal edition
119$ totali
Pro version
59.99$ totali
Master
Collection
499.99$ totali
Pro Version
299$/anno
Pro: facilità di
testing con il
simulatore
Pro: Ottime
performance
HTML5
Pro: Ottima scelta per
sviluppare giochi per Android
gratuitamente
Pro: Doppia
posibilità di
scrittura codice
o di drag & drop
Pro: Facile da
usare per i
principianti
Contro: Richiede
comunque un
minimo di
programmazione
Contro: Pessime
performance in
Android e iOS
Contro: Richiede un livello
base di programmazione
Contro: Il test
dei giochi non è
performante
Contro: Poche
features
Creare Videogiochi senza scrivere una sola riga di
codice?
aCrm net training course
Apr 2014
6
7. Creare Videogiochi senza scrivere una sola riga di
codice?
aCrm net training course
Apr 2014
7
Drag & Drop Codice
8. Creare Videogiochi senza scrivere una sola riga di
codice?
• I software elencati precedentemente sono utili per creare giochi
multipiattaforma senza “quasi” scrivere codice
• Permettono di creare facilmente giochi per Android, iOS, HTML5, Mac e
Windows in una sola soluzione, senza cioè riscrivere la stessa applicazione per
più device.
• Anche se si sforzano di essere semplici e accessibili a chiunque voglia
cimentarsi almeno una volta con pixel e affini, è bene notare che oltre a
diventare estremamente complessi, questi software sono limitati e poco
performanti.
• Dimenticatevi di poter sviluppare i prossimi Call of Duty 78 o FIFA 819
• Ma, tenete presente che un giochino, anche se in 2D, se ben fatto può
scalare le classifiche.
aCrm net training course
Apr 2014
8
9. Creating apps with Adobe PhoneGap
• Cos’è PhoneGap?
– E’ un framework javascript per creare applicazioni mobili ibride utilizzando codice
javascript, html5 e css3.
aCrm net training course
Apr 2014
9
10. Creating apps with Adobe PhoneGap
• In pratica PhoneGap crea un’applicazione
con una web browser interface impostata
come full screen.
aCrm net training course
Apr 2014
10
11. Creating apps with Adobe PhoneGap
• PhoneGap permette l’accesso alle più comuni funzionalità native del dispositivo
mobile (fotocamera, GPS, bussola, rubrica…).
aCrm net training course
Apr 2014
11
12. Creating apps with Adobe PhoneGap
• Crea un package praticamente per ogni sistema operativo mobile: Android, iOS,
Windows Phone, Blackberry, Symbian OS …
aCrm net training course
Apr 2014
12
13. Adobe PhoneGap cosa non si può fare
• Accesso limitato alle ultime funzionalità del sistema operativo
• Codice personalizzato
• Basse performance
aCrm net training course
Apr 2014
13
• Facebook eliminò la sua app basata su HTML5 e ne sviluppò una basata al 100%
su codice nativo
14. Creating apps with Adobe PhoneGap
• Prima di iniziare, Android:
– Per utilizzare e installare le app di PhoneGap abilitare sul proprio device Android la
possibilità di installare le applicazioni che provengono da fonti diverse da Play Store
– Abilitare la modalità sviluppatore e il debug su porta USB
aCrm net training course
Apr 2014
14
• Prima di iniziare, iOS:
– E’ obbligatoria l’iscrizione all’Apple developer account
– l’utilizzo di un Mac
15. Creating apps with Adobe PhoneGap
• Android per Eclipse:
• Lanciare Eclipse e selezionare dal menù Help | Install New Software.
• Cliccare su Add in alto a destra.
• Nella dialog Add Repository, inserire “ADT Plugin” come Nome e l’URL
https://dl-ssl.google.com/android/eclipse/ nel campo Location field.
• Terminata l’installazione riavviare Eclipse.
aCrm net training course
Apr 2014
15
16. PhoneGap getting started
• Apriamo Eclipse e generiamo un nuovo progetto Android
aCrm net training course
Apr 2014
16
17. PhoneGap getting started
• Scegliamo il nome e il sistema operativo
aCrm net training course
Apr 2014
17
21. PhoneGap getting started
• Folder di progetto e prossimi passi
aCrm net training course
Apr 2014
21
1) Caricare i files di progetto
(https://github.com/phonegap/phonegap-start)
2) Aggiungere la libreria di phonehap (cordova)
3) Modifica del file AndroidManifest.xml
22. PhoneGap getting started
• Caricare i files di progetto: Creare la cartella www dentro assets e
copiare i file di test
aCrm net training course
Apr 2014
22
23. PhoneGap getting started
• Aggiungere la libreria di phonegap (cordova.js) nella cartella libs e il folder
xml con il file confing.xml nella cartella xml nella directory principale
aCrm net training course
Apr 2014
23
25. PhoneGap getting started
• Modificare il file MainActivity.java nella cartella src
aCrm net training course
Apr 2014
25
package com.example.phonegaptest;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new
PlaceholderFragment()).commit();
}
}
26. PhoneGap getting started
• Modificare il file MainActivity.java nella cartella src
aCrm net training course
Apr 2014
26
package com.example.phonegaptest;
import org.apache.cordova.DroidGap;
import android.os.Bundle;
public class MainActivity extends DroidGap {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/index.html");
}
}
29. PhoneGap getting started
• Utilizzare PhoneGap significa create app ibride basate su standards. L’app
viene renderizzata con l’uso di una WebView che non è altro che
un’istanza browser a tutto schermo.
• Per questa ragione è importante conoscere come usare alcuni tag HTML
specifici, CSS, metodi JavaScript, proprietà ed eventi.
aCrm net training course
Apr 2014
29
30. PhoneGap alcuni importanti elementi
• Meta Tag viewport: Creato da Apple con iOS 1.0 è largamente supportato
da tutti i maggiori browser mobile. Quando una pagina non si adatta alle
dimensioni dello schermo viene scalata automaticamente dal browser. Il
viewport è il meta tag che serve a controllare questo comportamento.
<meta name="viewport" content="width=device-width, height=device-
height, initial-scale=1, minimum-scale=1, maximum-scale=1.5, user-
scalable=1">
• In questo esempio diciamo al browser che la larghezza e l’altezza
predefinita del contenuto sono l’altezza e la larghezza dello schermo del
dispositivo e che il contenuto è scalabile da 1 fino ad un massimo di 1,5
aCrm net training course
Apr 2014
30
31. PhoneGap alcuni importanti elementi
• Una delle problematiche dei browser mobili è il non perfetto
riconoscimento dei numeri telefonici, il riconoscimento è automatico ma
vengono considerati numeri telefonici anche indirizzi, codici ISBN e altre
tipologie di numeri diversi da numeri telefonici. Per gestire il problema si
aggiunge il seguente meta tag nell’header della pagina:
<meta name="format-detection" content="telephone=no">
• Nel codice HTML si usa il tag “tel” o “sms” per definire dei numeri di
telefono utilizzabili:
<a href="tel:18005555555">Chiamaci al 1-800-555-5555</a> <a
href="sms:18005555555?body=Text_goes_here">
aCrm net training course
Apr 2014
31
32. PhoneGap alcuni importanti elementi
• L’inserimento di dati da parte dell’utente è un’azione normalmente
noiosa e la correzione automatica normalmente non aiuta, per
controllare la correzione automatica si usano i meta tag:
<input autocorrect="off" autocomplete="off" autocapitalize="off">
• Una delle più interessanti caratteristiche del CSS sono le media queries,
in realtà esistono già da qualche tempo, ma per I dispositivi mobile sono
utilissimi. Il media query può essere utilizzato sia inline
@media all and (orientation: portrait) { body { } div { } }
• Che come attributo all’interno di un tag:
<link rel="stylesheet" media="all and (orientation: portrait)"
href="portrait.css" />
• Il metodo di utilizzo migliore dipende dal tipo di app, utilizzando il tag in
file CSS rende il codice più organizzato e pulito, inserendolo invece
direttamente nell’HTML il codice è più difficile da leggere e rallenta i
vecchi browser.
aCrm net training course
Apr 2014
32
33. PhoneGap alcuni importanti elementi
• Javascript QuerySelector e QuerySelectorAll:
– Il metodo getElementById accede al primo elemento con l’ID Specificato.
Questo è uno dei metodi più vecchi ed utilizzati, tuttavia con l’avvento di
jQuery è stato sostituito con selettori più precisi.
– Ci sono anche altri metodi per ispezionare il DOM, tra cui querySelector e
querySelectorAll. querySelectorAll è una nuova API DOM che accetta classi
CSS, ID, o tag HTML e restituisce l'elemento corrispondente.
/ / Recupera il primo tag <p> nel documento corrente
var primo = document.querySelector ('p');
/ / Recupera tutti i tag <p> nel documento corrente
var tutti = document.querySelectorAll ('p');
aCrm net training course
Apr 2014
33
34. PhoneGap alcuni importanti elementi
• Javascript addEventListener:
– Il metodo addEventListener è il “meccanismo” javascript per catturare i listner
events.
addEventListener ('evento', eventHandler);
Funzione eventHandler (evt) {
/ / Chiama un'altra funzione passando eventualmente i
/ / Valori memorizzati nell'oggetto evento
}
aCrm net training course
Apr 2014
34
35. PhoneGap alcuni importanti elementi
• Javascript Screen orientation e Device orientation:
– L’orientamento dello schermo è fondamentale quando riguarda
un’applicazione mobile perché passare da un orientamento di tipo portrait
(verticale) a landscape (orizzontale) cambia drasticamente gli spazi e i modi di
utilizzo dell’app.
– L’orientamento può essere intercettato tramite l’evento orientationChange
– L’orientamento corrente è disponibile invece chiamando il metodo
window.orientation
– Se abbiamo bisogno di più informazioni sull’orientamento del dispositivo è
possibile definire un eventListener per l’evento deviceorientation, il
deviceorientation fornisce informazioni sulla posizione del dispositivo sui 3
assi x, y e z
aCrm net training course
Apr 2014
35
37. Native iOS Developing: Considerazioni
• Gli utenti iPhone sono (in media):
– Più giovani ( 20% tra i 18 e i 24 anni)
– Più ricchi (41% di utenti hanno un reddito superiore a 100.000$)
– Sono più propensi a pagare contenuti (23%)
– Sono fidelizzati (80% hanno già posseduto un iPhone)
aCrm net training course
Apr 2014
37
38. Native iOS Developing: Xcode
• Apple X-Code
– Source Editor
– Graphical User Interface Editor
aCrm net training course
Apr 2014
38
39. Native iOS Developing: Xcode
• Nella schermata principale di Xcode è possibile creare un nuovo progetto e
scegliere tra diversi template
aCrm net training course
Apr 2014
39
40. Native iOS Developing: Objective-C
• Objective-C è un linguaggio Object Oriented basato sul linguaggio C
aCrm net training course
Apr 2014
40
42. Native iOS Developing: Xcode template 1/2
• Master-Detail Application: possiamo scegliere se sviluppare un app per iPhone/iPod, iPad o
universale, offre la classica interfaccia suddivisa in due aree; a sinistra un View Controller
(Master) utilizzato normalmente per la ricerca/consultazioni di dati ed un secondo View
Controller (Detail) nella parte destra utilizzato per la visualizzazione dettagliata del contenuto
scelto nel Master.
• OpenGL Game: Template utilizzato per giochi (Game Center)
• Page-Based Application: Utilizzato quando serve una struttura a pagine simile ad un libro
• Single-View Application: Il template viene creato con una sola vista chiamata
“ViewController”
• Tabbed Application: fornisce un’applicazione con la “tab bar”, (barra composta da più sezioni
come quella utilizzata nell’app “Musica”).
• Utility Application: fornisce un’interfaccia con il “flip” e un icona con le info/settings in basso
a destra.
• Empty Application: La scelta giusta per ogni Objective-C ninja!
aCrm net training course
Apr 2014
42
43. Native iOS Developing: Xcode template 2/2
aCrm net training course
Apr 2014
43
Page-Based Application Tabbed Application Utility Application
44. Native iOS Developing: Source Control
• Source Control disponibili in iOS
– Git
– Subversion
• Testing
– Attraverso il simulatore di Xcode
– Tramite device fisico
aCrm net training course
Apr 2014
44
45. Native iOS Developing: MVC
• Il Model-View-Controller design pattern (MVC) è il pattern design più
utilizzato nello sviluppo di applicazioni iOS.
• Nel design pattern MVC un singolo oggetto può ricoprire solo singolo ruolo:
– Modello
– Vista
– Controllore.
• I ruoli rappresentano una classificazione dell’oggetto che stiamo utilizzando
e sono degli elementi logicamente separati ai quali però è consentita, una
stretta comunicazione.
aCrm net training course
Apr 2014
45
47. Native iOS Developing: Xcode Interfaccia
aCrm net training course
Apr 2014
47
• Nel menu di sinistra, sulla prima icona a
forma di cartella ci verrà mostrata la
gerarchia dei file del nostro progetto.
• Il tasto in giallo ci porterà alla finestra di
warning ed errori.
48. Native iOS Developing: Xcode Interfaccia
aCrm net training course
Apr 2014
48
• Altra parte molto importante dell’interfaccia, sono i pulsanti per
l’esecuzione e lo stop dell’applicazione.
• Il tasto play compila ed esegue ma esistono delle scorciatoie da
tastiera sia per compilare (Build) lanciare (Run) e fermare (Stop)
che sono molto comode e veloci da utilizzare:
– Build: shift+cmd+B
– Run: cmd+R
– Stop: shift+cmd+invio.
• Alla destra dei pulsanti Run e Stop troviamo un’altro pulsante
molto utile che ci permetterà di decidere quale schema utilizzare
nella fase di compilazione e su quale dispositivo installare
l’applicazione.
• facendo clic sul nome del dispositivo, potremo scegliere se
installare l’app sul dispositivo fisico o sul simulatore.
49. Native iOS Developing: Xcode Interfaccia
aCrm net training course
Apr 2014
49
• Al momento del lancio dell’app, viene istanziato un oggetto della
classe UIApplication il quale svolge il ruolo di coordinatore
dell’intera applicazione smistando i vari eventi, generati
dall’utente, verso gli oggetti opportuni.
• Successivamente viene creata un’istanza della classe AppDelegate.
La UIApplication è un design pattern di tipo creazionale ed il suo
compito è quello di assicurare che durante l’esecuzione
dell’applicazione (o di un programma in generale), una determinata
classe venga istanziata una sola volta.
• L’AppDelegate deriva dalla UIResponder
50. Native iOS Developing: Xcode Interfaccia
aCrm net training course
Apr 2014
50
• Al momento del lancio dell’app, viene istanziato un oggetto della
classe UIApplication il quale svolge il ruolo di coordinatore
dell’intera applicazione smistando i vari eventi, generati
dall’utente, verso gli oggetti opportuni.
• Successivamente viene creata un’istanza della classe AppDelegate.
La UIApplication è un design pattern di tipo creazionale ed il suo
compito è quello di assicurare che durante l’esecuzione
dell’applicazione (o di un programma in generale), una determinata
classe venga istanziata una sola volta.
• L’AppDelegate deriva dalla UIResponder
51. Native iOS Developing: View Controller e View
• Un View Controller rappresenta l’elemento cardine di ogni app iOS perché
gestisce le views (che rappresentano l’interfaccia che l’utente)ed inoltre funziona
da controllore, mettendo in relazione le varie views con il modello dei dati. La
classe UIViewController possiede, come attributo, una view, ma nulla vieta di
aggiungerne altre.
• Le view controller sono utilizzate:
– Per gestire il passaggio da una view all’altra
– Per memorizzare i dati inseriti nei campi di input
– Per gestire gli oggetti della view
• La classe UIView definisce un’area rettangolare sullo schermo del dispositivo
dove possono essere posizionati gli elementi grafici della pagina. Durante
l’esecuzione dell’applicazione il compito di una view è quello di mostrare a
schermo i contenuti (inseriti su di essa) e gestire l’interazione dell’utente.
• La peculiarità della classe UIView è quella di permettere l’incapsulamento di
altre views creando una struttura padre-figlio: il padre viene detto superview
mentre i suoi figli subviews.
aCrm net training course
Apr 2014
51
59. Native iOS Developing: Gestire la rotazione
• La property autoresizingMask serve per gestire la rotazione, questa proprietà ci
permetterà di definire sei diverse regole per la view:
• UIViewAutoresizingFlexibleBottomMargin: fa si che la distanza della view dal
bordo inferiore sia flessibile.
• UIViewAutoresizingFlexibleTopMargin: fa si che la distanza della view dal bordo
superiore sia flessibile.
• UIViewAutoresizingFlexibleRightMargin: fa si che la distanza della view dal
bordo destro sia flessibile.
• UIViewAutoresizingFlexibleLeftMargin: fa si che la distanza della view dal bordo
sinistro sia flessibile.
• UIViewAutoresizingFlexibleWidth: fa si che la larghezza della view sia flessibile.
• UIViewAutoresizingFlexibleHeight: fa si che l’altezza della view sia flessibile.
• Cosa significa flessibile? Al contrario di prima di prima, la distanza dai bordi della
view verrà modificata in relazione al nuovo orientamento del dispositivo in modo
da mantenere all’interno dello schermo la stessa posizione relativa.
aCrm net training course
Apr 2014
59
60. Native iOS Developing: Sistema di riferimento
aCrm net training course
Apr 2014
60
secondView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin;
61. Native iOS Developing: Deallocazione della memoria
• I dispositivi iOS non posseggono un Garbage Colllector
• Fulcro della gestione della memoria è una proprietà che ogni oggetto possiede:
il retainCount. Quest’ultimo indica il numero di riferimenti associati all’oggetto e
quando il retainCount di qualsiasi oggetto arriva a 0 quest’ultimo viene
deallocato.
• Questa operazione viene effettuata da un oggetto chiamato AutoreleasePool che
è istanziato non appena l’applicazione viene eseguita e si occupa di monitorare i
retainCount
• Quando un qualsiasi oggetto viene allocato ed inizializzato, il suo retainCount ha
valore 1. Per deallocare in maniera esplicita il retainCount di un oggetto allocato:
• release: decrementa il retainCount di 1
• Se creiamo un’app di prova “Hello World”, con una sola label il retainCount = 2
(firstViewController ) e poco dopo facciamo una chiamata al metodo release,
decrementaremo di uno il retainCount, che sarà a questo punto = 1
• Ma quando verrà deallocata la label? Ciò avverrà quando il firstViewController
verrà deallocato e dunque, non essendo più necessario il riferimento alla label, il
suo retainCount verrà decrementato di 1 (assumendo dunque valore 0) e,
finalmente, anche la label verrà deallocata.
aCrm net training course
Apr 2014
61
62. Native iOS Developing: Kit nativi per lo sviluppo su
iOS
• UIKit: fornisce l'infrastruttura necessaria per la
realizzazione di applicazioni grafiche, gestire il ciclo di
eventi, ed eseguire altre operazioni relazionate
all'interfaccia utente.
• MapKit (Apple Map): provvede all’interfaccia per l’embed
di mappe, supporto per le note, per le viste e GEO coding
• GameKit: prevede interfacce per l’aggiornamento delle
classifiche globali, social networking, voice-over IP
aCrm net training course
Apr 2014
62
63. Submitting your App 1/4
• Il 66% delle app pubblicate sullo Store sono in passivo
• Riuscire a pubblicare una app nello Store è solo il primo passo
aCrm net training course
Apr 2014
63
64. Submitting your App 2/4
• E’ obbligatorio iscriversi all’Apple Developer Program per poter pubblicare le
app o per poter testare su device la propria app
(http://developer.apple.com)
aCrm net training course
Apr 2014
64
65. Submitting your App 3/4
• E’ possibile iscriversi al programma Apple come
– Individual - Standard (99$ = 79€)
– Company - Enterprise(299$)
aCrm net training course
Apr 2014
65
• Tutti i campi richiesti sono obbligatori
– Nome, descrizione, icone, screenshoot, informazioni di contatto
– Non fornire tutti i campi è il modo migliore per non farsi approvare l’app
• Tips
– Molte aziende aggiornano anche gli screenshoot dell’applicazione dopo ogni
update in questo modo mostrano i miglioramenti dell’app
66. Submitting your App 4/4
• Verifica dell’app create
– Prima di procedere con l’upload dell’app, testarla e verificare che rispetti tutte le
norme descritte nel documento HIG
aCrm net training course
Apr 2014
66
• Firmare digitalmente il software
– creare un certificato di distribuzione (tramite l’applicazione Keychain Access)
– aprire un nuovo ID Apple
– elaborare un “Provisioning Profile” di distribuzione tramite l’apposito portale
(“Provisioning portal”).
67. Submitting your App : Tempi di approvazione
Il tempo medio è di 2 settimane
aCrm net training course
Apr 2014
67
Non fatevi prendere dallo sconforto se al primo invio l’app
non viene approvata
69. Developing for Android
aCrm net training course
Apr 2014
69
• Google’s Android OS è il sistema operativo mobile leader del settore
– Apple con il suo developer program è la prima linea di difesa del consumatore, per
Android lo sviluppatore deve supportare il consumatore in ogni fase
70. Developing for Android: Il modello Google
aCrm net training course
Apr 2014
70
Esistono molti sentieri che portano alla stessa montagna
Pubblicare un app su Google Play è molto più facile rispetto ad Apple, questo
perché Google vuole che lo sviluppatore si concentri sul modo migliore di creare il
prodotto
71. Developing for Android: Installare l’SDK
aCrm net training course
Apr 2014
71
Il file SDK per Android è reperibile sul sito:
http://developer.android.com/sdk
Il download include l’Android Developer Tools (ADT)
• Eclipse Integrated Developer Environment (IDE)
• ADT plugin
• SDK tools
• platform tools
• the latest version of Android
• the Android emulator.
72. Developing for Android: Registrarsi a Google Play
aCrm net training course
Apr 2014
72
https://play.google.com/apps/publish/signup/
73. Developing for Android: Eclipse 1/2
aCrm net training course
Apr 2014
73
• Google supporta in modalità nativa Eclipse:
– Wizards e GUIs
– Testing diretto via porta USB
75. Developing for Android: Concetti base
aCrm net training course
Apr 2014
75
• Salvaguardia delle risorse: essendo progettato per sistemi embedded, quindi
dotati di poche risorse di memoria, Android è un SO parsimonioso. Android è
particolarmente bravo nel distruggere e ricreare parti dell’applicazione in
maniera del tutto impercettibile all’utente.
• Sicurezza: Android è figlio di Linux. Ogni applicazione è un utente a sé stante e
vive in un proprio processo in cui viene allocata una nuova istanza della virtual
machine, ciò per evitare che il crash di un’applicazione propaghi instabilità alle
altre app in esecuzione. Questa forma di “isolamento” viene riflessa anche sulla
memoria di massa in quanto ogni applicazione ha un suo spazio in cui lavorare e
custodire i propri dati.
• E’ assolutamente vietata, qualsiasi pratica che porti un’app ad invadere lo
spazio riservato ad un’altra.
76. Developing for Android: Concetti base
aCrm net training course
Apr 2014
76
• Una volta installato sul device ogni app Android risiede in una sandbox:
• Il sistema operativo Android è un sistema Linux multi-utente e ogni App viene
definita come un diverso utente.
• Di default, il sistema assegna ad ogni app un Linux user ID univoco (L’ID è usato
solo dal sistema ed è sconosciuto all’app) . Il sistema imposta le autorizzazioni
per tutti i file di un'applicazione in modo che solo l'ID utente assegnato a tale
applicazione possa accedervi.
• Ogni processo ha la sua virtual machine, e quindi il codice di una app gira in
maniera isolata rispetto alle altre app.
• Di default, ogni app viene eseguita in un proprio processo Linux. Android inizia il
processo quando uno dei componenti della app bisogno di essere eseguito,
quindi arresta il processo quando non è necessario o quando il sistema deve
recuperare la memoria per altre applicazioni.
77. Developing for Android: Concetti base
aCrm net training course
Apr 2014
77
• E’, ovviamente, possibile, trasferire o utilizzare dei dati da un’app all’altra :
• E’ possibile fare in modo che due app abbiano lo stesso Linux user ID, in questo
caso le app hanno la possibilità di accedere ognuna ai file dell’altra. Per
risparmiare le risorse del sistema, le app con lo stesso Linus user ID possono
essere avviate dallo stesso processo Linux e possono quindi condividere la
stessa VM.
• Un app può richiedere il permesso di accedere ai dati presenti nel device, come
I contatti utente, I messaggi SMS, I dati presenti su SD card, ecc.. . In questo caso
tutte le autorizzazioni vanno richieste all’utente in fase di installazione dell’app
78. Developing for Android: Concetti base
aCrm net training course
Apr 2014
78
• Android affida le sue funzionalità a quattro tipi di componenti: Activity, Service,
Content Provider e BroadcastReceiver
• Un’Activity è un’interfaccia utente. Ogni volta che si usa un’app generalmente si
interagisce con una o più “pagine” mediante le quali si consultano dati o si
immettono input. Ovviamente la realizzazione di Activity è il punto di partenza
di ogni corso di programmazione Android visto che è il componente con cui
l’utente ha il contatto più diretto.
• ogni Activity è responsabile del salvataggio del proprio stato in modo da poterlo
ristabilire successivamente come parte del ciclo di vita dell’applicazione.
Le Activity di Android:
1. Created, Quando un’attività viene creata: onCreate()
2. Started, Quando è visibile sullo schermo: onStart()
3. Resumed, Quando torna visibile dopo essere stata in pausa: onResume()
4. Paused, Parzialmente visibile (è stata oscurata da un’altra attività): onPause()
5. Stopped, Non visibile e non in esecuzione, può essere rispresa (resumed): onStop()
6. Destroyed, Non può essere ripresa: onDestroy()
80. Developing for Android: Service, Content Provider e
Broadcast Receiver
aCrm net training course
Apr 2014
80
Un componente Service svolge un ruolo opposto all’Activity. Infatti rappresenta
un lavoro – generalemente lungo e continuato – che viene svolto interamente
in background senza bisogno di interazione diretta con l’utente. I Service spesso
preparano i dati che le activity devono mostrare all’utente permettendo una
reattività maggiore nel momento della visualizzazione.
Un componente di tipo Content Provider ha lo scopo di organizzare la
condivisione di dati tra applicazioni. Questi componenti permettono di
condividere, contenuti di database, contenuti su file o contenuti reperibili
tramite rete.
Un componente Broadcast Receiver è un componente che reagisce ad un invio
di messaggi a livello di sistema con cui Android notifica l’avvenimento di un
determinato evento (l’arrivo di un SMS o di una chiamata).
81. Developing for Android: Gestione della memoria 1/3
aCrm net training course
Apr 2014
81
Android sa che il fattore fondamentale della sopravvivenza di un sistema mobile
è la corretta gestione delle risorse.
Quindi farà in modo di tenere in vita ogni processo il più a lungo possibile. Ciò
non toglie che in alcune circostanze ed in base alle risorse hardware a
disposizione, il sistema operativo si troverà nella necessità di dover liberare
memoria abbattendo processi.
Sì ma: quale processo abbattere?
La discriminante è quanto un’applicazione, candidata all’eliminazione, sia
importante per la user experience. Maggiore sarà l’importanza riconosciuta,
minori saranno le probabilità che venga arrestata.
Così facendo Android tenterà di raggiungere il suo duplice scopo: preservare il
sistema e salvaguardare l’utente.
82. Developing for Android: Gestione della memoria 2/3
aCrm net training course
Apr 2014
82
I processi possono essere classificati, in ordine di importanza decrescente,
come:
• Foreground: sono quelli che interagiscono direttamente o indirettamente
con l’utente. Stiamo parlando delle applicazioni che, contengono l’Activity
attualmente utilizzata o i Service ad essa collegati. Questi sono i processi che
Android tenterà di preservare maggiormente.
• Visibili: non sono importanti come quelli in foreground ma sono tutelati da
Android. Infatti, avendo componenti ancora visibili all’utente anche se non vi
interagiscono più, svolgono comunque un ruolo particolarmente critico.
Anche in questo caso si tratta di Activity visibili e Service ad esse collegati;
83. Developing for Android: Gestione della memoria 3/3
aCrm net training course
Apr 2014
83
Service: contengono dei servizi in esecuzione che generalmente svolgono lavori
molto utili all’utente anche se non direttamente collegati con ciò che egli vede
nel display. Il loro livello di priorità può essere considerato medio
Background: contengono activity non più visibili all’utente. Questa è una
categoria solitamente molto affollata composta dal gran numero di applicazioni
che l’utente ha usato e messo poi in disparte, ad esempio premendo il tasto
Home. Non sono considerati molto importanti e sono dei buoni candidati
all’eliminazione in caso di scarsità di risorse;
Empty: sono praticamente vuoti nel senso che non hanno alcuna componente
di sistema attiva. Vengono conservati solo per motivi di cache, per velocizzare la
loro riattivazione qualora si rendesse necessaria. Come ovvio, sono i candidati
“numero 1” all’eliminazione da parte del sistema operativo.
84. Developing for Android: Architettura del progetto
aCrm net training course
Apr 2014
84
• la cartella src che conterrà tutto il codice Java che scriveremo;
• la cartella res in cui risiederanno le cosiddette risorse dell’applicazione per la
maggior parte configurate in XML ma non solo;
• il file AndroidManifest.xml anch’esso in XML che custodirà configurazioni e
ruoli dei componenti della nostra app.
85. Developing for Android: View e ViewGroup 1/2
aCrm net training course
Apr 2014
85
• Il cuore dei controlli progettati da Android per i device mobili è rappresentato
da due classi, android.view.View e android.view.ViewGroup.
• Una View è sostanzialmente un’area rettangolare nello schermo responsabile
del disegno degli elementi grafici e della cattura e gestione degli eventi
generati dall’utente. Un oggetto ViewGroup è anch’esso una View, ma che
contiene altre View.
• Nella piattaforma Android si utilizza il concetto di “layout” per gestire
l’impaginazione dei controlli all’interno di un contenitore di oggetti View.
86. Developing for Android: View e ViewGroup 2/2
aCrm net training course
Apr 2014
86
• Utilizzare i layout facilita la progettazione delle interfacce perché è più
semplice orientare e posizionare i controlli che le compongono.
• Possiamo scegliere diversi approcci per la costruzione delle interfacce in
ambiente Android:
• Possiamo definire l’interfaccia interamente da codice
• Possiamo scegliere di costruire le interfacce attraverso delle
configurazione XML
• Possiamo scegliere un approccio “ibrido”, definire le interfacce in XML e
poi, attraverso un riferimento, modificarle e gestirle da codice.
87. Developing for Android: Costruire un layout tramite
XML 1/3
aCrm net training course
Apr 2014
87
• Ogni file XML di layout deve contenere un solo elemento di root, l’elemento
di root deve essere un oggetto View o ViewGroup. Una volta che si è definito
l’elemento di root, possiamo aggiungere dei nuovi oggetti come elementi figli
in modo da creare una View di tipo gerarchicoche definirà il nostro layout.
• Nel prossimo esempio vedremo un layout XML che usa un LinearLayout
verticale per contenete una TextView and un Button
88. Developing for Android: Costruire un layout tramite
XML 2/3
aCrm net training course
Apr 2014
88
• <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width=“400"
android:layout_height=“100"
android:text="Hello, I am a TextView" />
<Button android:id="@+id/button"
android:layout_width=“250"
android:layout_height=“100"
android:text="Hello, I am a Button" />
</LinearLayout>
89. Developing for Android: Costruire un layout tramite
XML 3/3
aCrm net training course
Apr 2014
89
• Una volta definito il nostro layout, il file XML (ovviamente con estensione.xml)
va inserito nella cartella del nostro progetto Android, res/layout/, in modo da
essere compilato da Eclipse.
• Per ulteriori informazioni sui layout:
• http://developer.android.com/guide/topics/resources/layout-resource.html
90. Developing for Android: Intent 1/3
aCrm net training course
Apr 2014
90
L’Intent è uno dei concetti e dei meccanismi fondamentali di Android
Un Intent è un meccanismo che descrive un’azione specifica, come “inviare un
sms” 0 “chiamare un numero telefonico”: in Android praticamente ogni cosa
passa attraverso un Intent, e possono essere utilizzati per riusare o sostituire
diversi componenti software.
Ad esempio è disponibile un Intent “inviare una email”: se nella nostra
applicazione abbiamo la necessità di gestire l’invio di email possiamo invocare
l’Intent che il sistema ci mette a disposizione, oppure possiamo scriverne uno
nuovo e utilizzare quest’ultimo nelle nostre Activity sostituendo l’Intent di
default con quello implementato da noi.
91. Developing for Android: Intent 2/3
aCrm net training course
Apr 2014
91
Possiamo immaginare un Intent come un’azione che possiamo far invocare ad
Android: un Intent può essere molto specifico ed essere richiamabile da una
specifica Activity oppure può essere generico e disponibile per qualsiasi Activity
che rispetta determinati criteri:
• trasmettere l’informazione per cui un particolare evento (o azione) si è
verificato;
• esplicitare un’intenzione che una Activity o un Service possono sfruttare per
eseguire un determinato compito o azione, solitamente con o su un
particolare insieme di dati;
• lanciare una particolare Activity o Service;
• supportare l’interazione tra qualsiasi applicazione installata sul dispositivo
Android, senza doversi preoccupare di che tipo di applicazione sia o di quale
componente software gli Intent facciano parte.
92. Developing for Android: Intent 3/3
aCrm net training course
Apr 2014
92
In pratica gli intent richiedono un azione oppuure facilitano la comunicazione
tra I componenti all’interno dell’app, la comunicazione tra componenti avviene
in 3 casi:
• Per far partire una Activity: Un Activity rappresenta una singola schermata di
un’app. Si può far partire una nuova instanza di questa Activity passando un
Intent alla funzione startActivity(). L’intent descrive l’attività di esecuzione e
recupera i dati necessari.
• Per far partire un Servizio: Un Service è un componente per le operazioni che
funziona senza una user interface. Si può far partire un servizio, per esempio
un servizio che faccia il download di un file passando un Intent alla funzione
startService(). L’ Intent fornirà al servizio la partenza e tutti i dati necessari
93. Developing for Android: Setup dispositivi
aCrm net training course
Apr 2014
93
• Prima di iniziare, Android:
– Per utilizzare e installare le app sviluppate con ADT abilitare sul proprio device Android la
possibilità di installare le applicazioni che provengono da fonti diverse da Play Store
– Abilitare la modalità sviluppatore e il debug su porta USB
94. Developing for Android: Testare il proprio lavoro
aCrm net training course
Apr 2014
94
• Android permette di testare il proprio lavoro direttamente su un dispositivo
mobile in due modalità:
– Installazione diretta da Eclipse
– Installazione tramite command-line attraverso Android Debug Bridge (ADB)
95. Developing for Android: Android Virtual Devices 1/2
aCrm net training course
Apr 2014
95
Android Virtual Devices (ADV) permette di testare l’app tramite l’emulatore Android
97. Developing for Android: Publishing
aCrm net training course
Apr 2014
97
• Prima di pubblicare il vostro file .apk nel Google Play bisogna:
– Rimuovere il debugging
– E’ necessario “firmare” la versione da distribuire (Si usa l’SDK)
– Assicurarsi che le risorse dell’applicazione siano aggiornate (succede che all’ultimo
vengano inseriti nuovi device che devono essere opportunamente configurati)
– Se l’applicazione richiede un web-service per funzionare verificate che sia tutto
configurato
– Assicuratevi di avere una private key opportunamente configurata per ogni servizio
incorporato (Google Maps API)
• Tips:
– Attualmente Google Play non accetta apk più grandi di 50MB
– Android fornisce l'accesso a uno strumento denominato ProGuard che serve per
ottimizzare il codice di base.
98. Developing for Android: Google Play Distribution
aCrm net training course
Apr 2014
98
• Google Play, rispetto all’Apple Store, permette una maggiore flessibilità nelle
politiche commerciali:
– Si possono determinare i paesi dove distribuire l’app e richiedere un prezzo diverso
per ogni paese
– Decidere il content rating (classificazione dei contenuti: per tutti, bassa, media e alta)
– Confermare le dimensioni dello schermo compatibili con l’app
– Determinare il prezzo dell’app, Google ritiene che “se un’app è gratuita deve rimanere
gratuita”
– Selezionare la categoria di appartenenza dell’app aiuta ad essere trovati dagli utenti
– Google Play permette di pubblicare versioni beta della vostra App, basta fare in modo
che gli utenti ne siano consapevoli.
• Tips:
– In un primo momento potete distribuire le vostre applicazioni anche via email, basta
allegare il file .apk come allegato.
– Le apps possono essere distribuite anche attraverso siti web privati
99. Developing for Android: Tempi di approvazione
Il tempo medio è di 2 giorni
aCrm net training course
Apr 2014
99