Sei sulla pagina 1di 30

12/10/15

Università  Politecnica   delle   Marche  


Dipartimento   di  I ngegneria  dell’Informazione

Programmazione  in  ambiente  


Android
Laura  Montanini  -­‐
laura.montanini@univpm.it

Corso  di  Tecnologie   per  le  TLC


2015-­‐2016

Android

— È un sistema operativo open source basato sul


kernel Linux e progettato principalmente per
dispositivi mobili dotati di touchscreen (ad es.
smartphone e tablet)

— 2003: Viene fondata Android Inc.


— 2005: Google acquista l’azienda
— 2007: Presentazione ufficiale al pubblico da pa rte della OHA
(Open Handset Alliance)
— 2008: HTC Dream è il primo dispositivo Android sul mercato
2

1
12/10/15

Release  Android
Aprile  2009 Settembre   2009 Ottobre  2009 Maggio  2010 Dicembre  2010

Febbraio  2011 Ottobre  2011 Luglio  2012 Ottobre  2013 Novembre  2014

— Sono in ordine alfabetico


— Hanno il nome di un dolciume
— Ogni versione porta qualcosa di nuovo Android  6 .0
Marshmallow

Ottobre  2015
3

Personalizzazione  

Release  Android
della  schermata  di  
Home
Digitazione  vocale  e  
controllo  vocale

Aprile  2009 Settembre   2009 Ottobre  2009 Maggio  2010 Dicembre  2010

Introduzione  del  
sistema  ART  
Versione  ottimizzata  
Febbraio  2011 Ottobre  2011 Luglio  2012 Ottobre  2013
(Android  RunTime) Novembre  2014
per  i  tablet

— Sono in ordine alfabetico


— Hanno il nome di un dolciumeOttimizzato  per  
— Ogni versione porta qualcosa di nuovo
applicazioni  
orientate   al  lavoro  e  
Android  6 .0
Marshmallow
alle  imprese
Ottobre  2015
4

2
12/10/15

Vantaggi

— È ampiamente diffuso
— Progettato per smartphone e tablet, ma utilizzabile
anche su altri dispositivi (wearable, auto, tv, ecc.)
— Permette di modificare e distribuire il software
liberamente
— Dispone di un SDK per facilitare lo sviluppatore
— Sfrutta un linguaggio noto: Java
— Fornisce una ricca documentazione reperibile on-­‐line
— Dispone di una vasta comunità di sviluppatori con cui
confrontarsi

Architettura

3
12/10/15

L’ambiente  di  sviluppo  Android


— Per  sviluppare  App  su  Android  sono  necessari:

— JDK:  poiché  Android  si  programma  i n  J ava,


il  sistema  deve  disporre  di  un  kit  di  sviluppo
Java  (JDK):  senza   di  questo  non  è  possibile
compilare  i l  c odice!

— Android  SDK:  kit  di  sviluppo  c he  c omprende  diversi  


strumenti  (programmi,  emulatori,  piattaforme  per  l e  
diverse  versioni).  L a  sua  c omposizione  non  è  statica,  ma  
viene  gestita  tramite  l ’Android  SDK  Manager

— IDE:  (ambiente  di  sviluppo  i ntegrato)  i nclude  tutti  gli  


strumenti  necessari  al  programmatore.  I  più  usati:  
Eclipse ed Android  Studio

Eclipse

— IDE molto diffuso e ben noto, caratterizzato da una struttura


modulare
— È necessario usare una versione di Eclipse pari o superiore alla
3.7.2 (chiamata Indigo)
— Android mette a dis posizione un plug-­‐in chiamato: ADT
(Android Developer Tools) già configurata per lo sviluppatore
— Esso perme tterà di avere a disposiz ione voci di menu re lative
allo sviluppo Android nell’interfaccia dell’IDE
8

4
12/10/15

Android  Studio

— IDE recente (2013) appositamente creato per sviluppare in


Android e prodotto da Google
— Caratteristiche principali:
◦ Usa Gradle come strumento di build automation (build, sviluppo, test, ecc.)
◦ Dispone di un gran numero di template
◦ Dispone di un editor grafico molto pratico
◦ Supporta lo sviluppo per Android Wear
◦ …
9

Android  Virtual  Device

— Il kit di sviluppo comprende l’emulatore (Android Virtual Device)


— Possiamo creare e configurare quanti dispositivi virtuali vogliamo.
— Possiamo avviare due o più dispositivi virtuali insieme (ad esempio
per testare un’applicazione che fa interagire più smartphone).
10

5
12/10/15

Configurare  un  AVD

— Dalla toolbar clicchiamo su Android Virtual Device Manager

— La finestra presenta la lista de i dis positivi virtuali configurati


(inizialmente vuota)
— Entrambi gli IDE presentano de lle liste di dispositivi predefiniti
da personalizzare
— In alternativa è possibile creare un nuovo profilo ha rdware da
zero

11

Configurare  un  AVD

12

6
12/10/15

Lanciare  un  AVD


— Una volta creato l’AVD, dalla scheda Android Virtual Devices, lo
selezioniamo e clicchiamo su Start…

13

Testare  un’App
— In  fase  di  sviluppo,   esistono  due  m odi  per  eseguire  e  
testare  la  propria  app:
◦ Usando  l’AVD:
– Permette  di  simulare  il  funzionamento   su  differenti  
dispositivi
– È  oneroso   dal  punto   di  vista  computazionale  
◦ Usando  il  proprio   dispositivo  Android
– Non  è  necessario   possedere  un  computer   potente
– Permette  di  verificare  il  funzionamento   solo  sul  dispositivo  
scelto
– In  Windows  necessita  l’installazione   dei  driver  del  
dispositivo

14

7
12/10/15

Java  o  non  Java?

— Il linguaggio utilizzato da Android si basa sul


linguaggio Java, ma non è Java!

— Quasi la totalità delle librerie utilizzate sono librerie


standard di Java ad eccezione, ad esempio, di quelle
grafiche
— La definizione dell'interfaccia grafica utilizza un
approccio dichiarativo
— Non viene usata la Java Virtual Machine

15

Dalvik  Virtual  Machine


— È una VM ottimizzata per
l'esecuzione di applicazioni in
dispositivi a risorse limitate

— Esegue codice contenuto in


file .dex (Dalvik EXecutable )
ottenuti, in fase di building, a
partire da file .class di byte
code Java
— Viene utilizzato un file
compilato .dex per risparm ia-­‐
re più spazio possibile per la
memorizzazione e d esecuzio-­‐
ne delle applicazioni (quasi il
50%)
16

8
12/10/15

Android  RunTime
— Sostituisce Dalvik a partire dalla versione 5.0 Lollipop
— È stato introdotto in anteprima in Android 4.4 KitKat
— Dalvik è basata sulla tecnologia JIT (just-­‐in-­‐t ime): compilazione
in tempo reale
— ART è basata sulla tecnologia AOT (ahead-­‐of-­‐t ime):
compilazione al momento dell’istallazione
◦ Vantaggi: increme nto di pres tazioni e gestione delle risorse
in fase di esecuzione
◦ Svantaggi: aumentano i tempi di installazione

17

I  mattoni  fondamentali  di  un’App

18

9
12/10/15

I  mattoni  fondamentali  di  un’app

— A seconda di quel che si intende fare è disponibile un


diverso modello di applicazione:
— Attività:
◦ Interagisce con l’utente utilizzando lo scherm o e i dis positivi
di input messi a disposizione dallo smartphone
◦ È il modello più diffuso in Android
◦ Estende la classe base android.app.Activity
— Servizio:
◦ Gira in sottofondo e non interagisce direttamente con
l’utente
◦ Ad esempio può riprodurre un brano MP3
◦ Estende la classe android.app.Service
19

I  mattoni  fondamentali  di  un’app

— Broadcast Receiver:
◦ Utilizzato quando si intende inte rcettare un particola re
evento
◦ Ad esempio lo si può utilizzare se si vuole compie re
un’azione quando si scatta una foto o quando parte la
segnalazione di batteria scarica
◦ Estende la classe android. Content. BroadcastReceiver
— Content Provider:
◦ Utilizzato per accedere a dati e informazioni
◦ costituisce un canale di comunicazione tra le differenti
applicazioni installate nel sistema
◦ Estende la classe astratta android.content.ContentProvider.

20

10
12/10/15

Hello,  World!
— Android Studio: creiamo la nostra prima Activity!
— Dalla toolbar : New > New Project
— Impostiamo il nome, il dominio dell’azienda e la posizione del
progetto

21

Hello,  World!
— Selezioniamo la piattaforma di inte resse (Smartphone/Tablet,
Wear, TV, Auto o Glass)
— Scegliamo la versione di A ndroid m inima per utilizzare la nostra
App

22

11
12/10/15

Hello,  World!
— Selezioniamo fra i vari template disponibili quello di interesse
(in questo caso Blank Activity) e impos tiamo il nome
dell’activity principale

23

Hello,  World!
— Android Studio crea in maniera automatica l’applicazione
“Hello, World!”

24

12
12/10/15

Interfaccia  di  Android  Studio

Struttura   del  
progetto

25

Interfaccia  di  Android  Studio

Classi  e  file  
aperti

26

13
12/10/15

Interfaccia  di  Android  Studio

Messaggi  di  e rrore,  logcat,  


warning  e d  e ccezioni 27

Il  ciclo  di  vita  di  un’Activity

28

14
12/10/15

Il  ciclo  di  vita  di  un’Activity


Quando si crea un’istanza di un’activity, il sistema richiama in sequenza
queste tre callback: solo a quel punto l’utente può interagire con l’activity

29

Il  file  Manifest

— Per ogni progetto deve essere redatto un file


AndroidManifest.xml
— Dichiara:
◦ le componenti (<activity>, <service>, <receiver>, <provider>)
◦ i permessi
◦ le risorse hardwa re e software necessa rie (ad es.
fotocamera, bluetooth, ecc. )
◦ le libre rie esterne a cui l'applicazione deve essere linkata (ad
es. la libreria di Google Maps)

30

15
12/10/15

Il  file  Manifest
— Ad esempio:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.appwidgethome">

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application android:allowBackup="true" android:label="@string/app_name"
android:icon="@mipmap/ic_launcher" android:theme="@style/AppTheme">
<receiver
android:icon="@drawable/icon"
android:label="Example Widget"
android:name="MyWidgetProvider" >
<intent-filter >
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>

<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
<receiver android:name=".AlarmManagerBroadcastReceiver"/>

</application>

</manifest>

31

L’interfaccia  utente
— Usa una gerarchia di oggetti delle classi View e
ViewGroup
◦ View: UI widget come bottoni o aree di testo
◦ ViewGroup: contenitori invisibili che definiscono come gli
elementi figli devono essere posizionati

32

16
12/10/15

L’interfaccia  utente
— Elementi derivati dalla classe ViewGroup: i layout
LinearLayout RelativeLayout WebView

— Elementi derivati dalla classe View: bottoni, aree di testo, radio


button, number picker, check box, progress bar, ecc.

Button RadioButton

CheckBox NumberPicker

33

Il  layout

— Definisce  la  struttura  visiva  dell’interfaccia  utente

— È  possibile  dichiarare  il  layout  in  due  m odi:

◦ STATICAMENTE:  Dichiarare  gli  elementi   grafici  nel  file  . xml

◦ DINAMICAMENTE:  I nstanziare  gli  elementi  a  runtime,  


creando  oggetti  delle  classi  View  e  ViewGroup  via  codice

34

17
12/10/15

Il  layout
STATICAMENTE:  Dichiarare  gli  elementi   grafici  nel  file  . xml

Selettore  del  
dispositivo  e  della  
risoluzione  dello  
schermo

35

Il  layout
STATICAMENTE:  Dichiarare  gli  elementi   grafici  nel  file  . xml

Selettore  
dell’orientazione  
dello  s chermo

36

18
12/10/15

Il  layout
STATICAMENTE:  Dichiarare  gli  elementi   grafici  nel  file  . xml

Palette  per  la  


scelta  di  
layout  e d  
elementi

37

Il  layout
STATICAMENTE:  Dichiarare  gli  elementi   grafici  nel  file  . xml

Struttura  
gerarchica  di  
layout  e d  
elementi

38

19
12/10/15

Il  layout
STATICAMENTE:  Dichiarare  gli  elementi   grafici  nel  file  . xml

Tabs per  passare  


dall’editor   grafico  
all’editor   di  testo  xml

39

Il  layout
STATICAMENTE:  Dichiarare  gli  elementi   grafici  nel  file  . xml

Editor  di  testo  xml

40

20
12/10/15

I  pacchetti  APK
— Le  applicazioni  Android   sono  distribuite  sotto  forma  
di  file  APK  ( Android  Package)
— Contengono:   eseguibili  in  f ormato  DEX,  eventuali  
risorse  associate  e  i  descrittori  che  definiscono  il  
contenuto   del  pacchetto
— Per  poter  essere  distribuita  è  necessario  apporre  una  
firma  digitale
— Non  è  necessario  che  una  certification  authority  
riconosca  la  firma:  è  possibile  usare  un   certificato  
“fatto  in  casa”

41

Creare  la  firma  digitale


— Dalla  toolbar  c liccare  su  Build >  Generated Signed APK

— Le  firme  digitali  vengono  raccolte  e  c onservate  all’interno  


di  un  file  c hiamato  keystore
— Le  firma  digitale  è  c aratterizzata  da  un  nome  (alias),  da  
una  password

42

21
12/10/15

Android  Wear
— L’uso  di  Android   negli  ultimi   anni  si  è  esteso  anche  ad  altri  tipi  
di  dispositivi

— Android   Wear è  un  sistema  operativo  open  per  dispositivi  


indossabili
— Permette  di  connettere   il  tuo  smartphone   Android   al  
dispositivo   indossabile,   tramite   Bluetooth
— La  maggior  parte  non  è  in  grado  di  connettersi   alla  rete  
autonomamente   e  perciò   si  appoggia  sulle  funzionalità   dello  
smartphone
43

Android  Wear
— Ambiente  di  sviluppo  per  Android   Wear:  Eclipse o  Android  
Studio  (Google  consiglia   Android  Studio)
— Sfrutta  le  API  di  Livello  20  (4.4  KitKat Wear)

— Per  creare  un  nuovo  progetto   Wear  in  Android   Studio:  File  -­‐>  
New  Project

— Nella  seconda  scher-­‐


mata del  wizard,
selezionare  il  modulo
Android   Wear  

44

22
12/10/15

Android  Wear
— Le  applicazioni   Wear  non  possono  essere  impacchettate  
separatamente e  messe  in  Google  Play  store
— È  necessario   impacchettare   l’applicazione   mobile  e  quella  Wear  
nello  stesso  APK.  Quando  l’utente  istalla  l’App  sullo    
smartphone,   essa  v iene  automaticamente  istallata  sul  
dispositivo   associato

45

Android  TV

— Ha  l’obiettivo   di  portare   il  web  ed  i  suoi  contenuti   sulla  TV,  


tramite  un  OS  basato  su Android
— Sfrutta  una  versione  modificata   del  SO  Android  L
— Permette  di  accedere  ad  applicazioni   e  servizi,  grazie  a  Google  
Play
— Permette  il  mirroring dei  vari  device Android:  i  dispositivi  
Android   possono  connettersi   alla  TV  ed  essere  utilizzati   come  
telecomandi
46

23
12/10/15

Android  TV
— Nella  progettazione   o  nell’adattamento   di  applicazioni   per  
Android   TV  è  necessario  tenere  in  considerazione   alcuni  fattori:

— Tutte  le  activity dell’applicazione   devono  supportare   la  modalità  


landscape,   altrimenti   non  appariranno   nel  Google  Play  store

— La  TV  non  dispone   delle  risorse  hardware  comunemente  


presenti   nello  smartphone.  Ad  esempio:
◦ Near Field Communication (NFC)
◦ GPS
◦ Fotocamera
◦ Micrfono
◦ Touchscreen
◦ Telefonia

47

Android  TV
— Per  creare  un  nuovo  progetto   in  Android   Studio:  File  -­‐>  New  
Project
— Nella  seconda  schermata  del  wizard,  selezionare   il  modulo
Android   TV

48

24
12/10/15

Android  TV
— Una  volta  creato  il  progetto,   è  necessario   apportare  delle  
modifiche   al  file  Manifest.xml
◦ Specificare  che  non  è  richiesto  il  supporto  touchscreen
<uses-feature android:name="android.hardware.touchscreen"
android:required="false" />

◦ Dichiarare   l’uso  della  libreria  Leanback (evita  la  visualizzazione  di  s pazi  b ianchi  
attorno  ai  bordi  dello  schermo)
<uses-feature android:name="android.software.leanback"
"android:required="true" />

◦ Applicare  il  tema  Leanback al  progetto


<application android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.Leanback”>

◦ Dichiarare   l’activity da  lanciare  sulla  TV


<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category
.LEANBACK_LAUNCHER" />

49

Android  Auto

— Permette  di  sincronizzare  lo  smartphone  con  il  


computer  di  bordo   dell’automobile
— Comunica  con  lo  s marphone via  cavo
— Fornisce  applicazioni  e  s ervizi  pensati  appositamente  
per  il  guidatore,  come  navigatore,  lettore  m usicale,  
ecc.
— Dispone  di  interfaccia  touch  e  comandi  vocali
50

25
12/10/15

Android  Auto
— Sfrutta  le  API  di  livello  21  o  superiori
— Necessita  della  libreria   di  supporto   v4  support library,   che  
contiene   la  classe  NotificationCompat.CarExtender
— È  necessario   aggiungere  delle  righe  di  codice  nel  file  
Minefest.xml
<applic ation>

...
<me ta-dat a and roid: name=" com.g oogle .andro id.gm s
.car.ap plicat ion"
an droid: resou rce=" @xml/a utomo tive_ app_de sc"/>

</appli cation >

— È  possibile   testare  l’App  sul  proprio   pc tramite  la  Desktop  Head  


Unit (DHU):  sostituisce   gli  emulatori   esistenti  e  consente  di  
simulare  il  cruscotto   del  veicolo
51

Progetti  Lab TLC


Rapida  panoramica  sui  progetti   portati   avanti  dal  nostro
team  di  ricerca   in  ambiente  Android

52

26
12/10/15

Interfaccia  Smart  Home

Interfaccia  Smart  Home

— Controllo   del  sistema  domotico


— Monitoraggio  stato  dei  sensori
— Visualizzazione  dei  promemoria   per  l’assunzione   di  farmaci
— Visualizzazione  di  grafici  che  mostrano  dati  comportamentali

27
12/10/15

UpTech  Home

— Il  sistema  permette   a  familiari   e  cargiver di  monitorare   la  


persona  malata  di  Alzheimer  che  vive  in  casa
— Per  ogni  evento  di  allarme  che  si  verifica,  viene  mandato  un  
sms  al  contatto  designato
— L’interfaccia   per  smarphone consente   di  gestire  le  
funzionalità   del  kit

UpTech  RSA

— Il  sistema  permette   al  personale   sanitario  e  agli  infermieri   di  


monitorare   i  soggetti  malati  di  Alzheimer  durante   la  notte  in  
una  residenza  sanitaria  assistita
— L’interfaccia   per  smartphone   consente  al  personale   di  
visualizzare  gli  eventi  di  allarme  che  si  sono  verificati  al  fine  
di  permettere   un  tempestivo  intervento

28
12/10/15

Riconoscimento  facciale

— Il  sistema  permette   di    riconoscere   le  persone  che  citofonano  


all’abitazione   dell’anziano   e,  se  riconosciute,   aprire  loro   la  
porta  automaticamente
— Sfrutta  le  librerie   gratuite  fornite   da  Qualcomm Snapdragon
per  il  riconoscimento   facciale
— Sviluppi  futuri:   meccanismi  di  anti-­‐spoofing

Riconoscimento  di  farmaci

— Riconosce   e  v isualizza  le  informazioni   di  uno  specifico  


farmaco  semplicemente  scattando   una  foto  alla  scatola
— Sfrutta  la  tecnologia   OCR  (Tesseract)

29
12/10/15

Riconoscimento  di  farmaci


Forma

Elaborazione  
Colore
dell’immagine

Testo B  2 52

NOME  D EL  
MEDICINALE

— Riconosce   e  v isualizza  le  informazioni   di  uno  specifico  


farmaco  semplicemente  scattando   una  foto  alla  pillola
— Sfrutta  le  librerie   opensource   di  Computer   Vision

Tirocini  e  tesi  disponibili  su:


http://www.tlc.dii.univpm.it/blog/

Laura  Montanini  -­‐ laura.montanini@univpm.it

60

30

Potrebbero piacerti anche