Alarms Alarms

Transcript

Alarms Alarms
03/11/14 Alarms Android Mobile Programming – Prof. R. De Prisco Slide 107 Università di Salerno -­‐ a.a. 2013-­‐2014 •  PermeCono di eseguire intent in funzione di specifici evenH •  Un’applicazione che usa un alarm riesce ad eseguire porzioni di codice anche se l’applicazione è terminata •  Un alarm è aLvo anche se il telefono va in modalità di sleep –  l’alarm può causare la ripresa dell’aLvità –  oppure potrà essere gesHto quando l’utente rimeCe il telefono in modalità normale Alarms Android Mobile Programming – Prof. R. De Prisco Slide 108 Università di Salerno -­‐ a.a. 2013-­‐2014 •  Gli alarms rimangono aLvi fino a quando –  vengono cancellaH –  la periferica viene spenta •  Esempi di alarms –  app per gli MMS: usa alarm per controllare periodicamente i messaggi non spediH (retry scheduler) –  SeLngs: usa un alarm per rendere la periferica non visibile via Bluetooth dopo un determinato tempo 1 03/11/14 Alarms Android Mobile Programming – Prof. R. De Prisco Slide 109 Università di Salerno -­‐ a.a. 2013-­‐2014 •  Per usare gli alarm in un’app –  AlarmManager •  OCenere un riferimento all’AlarmManager: –  getSystemService(Context.ALARM_SERVICE) •  Creare alarms –  void set(int type, long triggerAtTime, PendingIntent i) –  void setRepeaHng(…) A parHre dall’API level 19 (KitKat) gli alarm non sono “esaL”: il SO operaHvo può modificare i triggerTime per minimizzare wakeups e l’uso della baCeria FrammenH (API level 11) Android Mobile Programming – Prof. R. De Prisco Slide 110 Università di Salerno -­‐ a.a. 2013-­‐2014 •  Interfacce utente dinamiche –  si adaCano facilmente a schermi di grandezze varie •  Frammento –  rappresenta una porzione di UI –  una sorta di sub-­‐aLvità •  ha il suo layout •  ha il suo ciclo di vita •  ALvità –  può avere uno o più frammenH –  è facile inserire/rimuovere frammenH 2 03/11/14 FrammenH Android Mobile Programming – Prof. R. De Prisco Slide 111 Università di Salerno -­‐ a.a. 2013-­‐2014 •  Situazione Hpica in cui sono uHli i frammenH –  un’app che uHlizza una lista e per ogni elemento della lista dei deCagli FrammenH Android Mobile Programming – Prof. R. De Prisco Slide 112 Università di Salerno -­‐ a.a. 2013-­‐2014 •  Un frammento deve sempre essere “ospitato” da un’aLvità •  Può essere inserito –  staHcamente (nel layout file) –  dinamicamente (con il FragmentManager) •  Quando il frammento viene inserito –  diventa un ViewGroup all’interno della View dell’aLvità •  Ciclo di vita dei frammenH –  legato a quello dell’aLvità che lo ospita 3 03/11/14 FrammenH Android Mobile Programming – Prof. R. De Prisco FrammenH Android Mobile Programming – Prof. R. De Prisco A(vità Slide 113 Università di Salerno -­‐ a.a. 2013-­‐2014 Slide 114 Università di Salerno -­‐ a.a. 2013-­‐2014 Frammento 4 03/11/14 Slide FrammenH 115 Università di Salerno -­‐ a.a. 2013-­‐2014 Android Mobile Programming – Prof. R. De Prisco FragmentsExample
hCp://developer.android.com/guide/components/fragments.html Networking Android Mobile Programming – Prof. R. De Prisco Slide 116 Università di Salerno -­‐ a.a. 2013-­‐2014 •  Socket –  Java.net •  HTTP –  org.apache •  HCpRequest •  HCpresponse •  Data formats –  JSON, XML 5 03/11/14 Networking Android Mobile Programming – Prof. R. De Prisco Slide 117 Università di Salerno -­‐ a.a. 2013-­‐2014 •  Classe InetAddress –  permeCe di gesHre gli indirizzi IP •  InetAddress.getByName(“www.server.com”); •  InetAddress.getByName(“11.22.33.44”); •  ResHtuisce l’indirizzo IP –  stringa di 32 bit per IPv4 –  stringa di 128 bit per IPv6 Networking Android Mobile Programming – Prof. R. De Prisco Slide 118 Università di Salerno -­‐ a.a. 2013-­‐2014 •  classe Socket –  crea il canale di comunicazione con il server •  Socket(InetAddress addr, int port) –  socket = new Socket(serverAddr, port); •  Per leggere e scrivere –  getInputStream(socket) –  getOutputStream(socket) 6 03/11/14 Networking Android Mobile Programming – Prof. R. De Prisco Slide 119 Università di Salerno -­‐ a.a. 2013-­‐2014 •  Scrivere sul socket •  PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream())), true); //Autoflush •  out.println(strToSend); Networking Android Mobile Programming – Prof. R. De Prisco Slide 120 Università di Salerno -­‐ a.a. 2013-­‐2014 •  Scrivere nel socket •  BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream())); •  in.readLine(), in.read(), … 7 03/11/14 Slide Networking 121 Università di Salerno -­‐ a.a. 2013-­‐2014 Android Mobile Programming – Prof. R. De Prisco SocketRaw
SocketRawProgressBar
URL e HTTP Android Mobile Programming – Prof. R. De Prisco Slide 122 Università di Salerno -­‐ a.a. 2013-­‐2014 •  Il trasferimento di pagine web è l’operazione più comune –  esistono delle classi apposite •  HCpURLConnecHon –  openConnecHon() –  getInputStream() •  e poi si procede come prima leggendo i daH dallo stream 8 03/11/14 Slide HTTP 123 Università di Salerno -­‐ a.a. 2013-­‐2014 Android Mobile Programming – Prof. R. De Prisco •  classe AndroidHCpClient •  classe HCpGet •  classe responseHandler •  ci permeCono facilmente di –  stabilire una connessione HTTP –  inviare una richiesta GET –  leggere la risposta Networking Android Mobile Programming – Prof. R. De Prisco Slide 124 Università di Salerno -­‐ a.a. 2013-­‐2014 SocketURL
SocketHTTP
9 03/11/14 DocumenH HTML Android Mobile Programming – Prof. R. De Prisco Slide 125 Università di Salerno -­‐ a.a. 2013-­‐2014 •  DaH in documenH HTML –  difficile estrarli •  Esistono delle librerie che implementano il parsing di documentl HTML –  es. JSOUP •  Per uHlizzare una libreria –  procurarci il file .jar (es. jsoutp-­‐1-­‐1.7.3.jar) –  memorizzarlo nella cartella lib del progeCo –  Aggiungere il file jar nella lista delle librerie •  ProgeCo -­‐> Proprietà -­‐> Java Build Path -­‐> Librerie JSoup Android Mobile Programming – Prof. R. De Prisco Slide 126 Università di Salerno -­‐ a.a. 2013-­‐2014 •  La classe Jsoup permeCe –  parsing di documenH HTML –  estrarre singoli parH del documento •  Esempi: –  Document doc = Jsoup.connect("hCp://
en.wikipedia.org/").get(); –  Element e = doc.getElementById(“id”); –  Elements e = doc.select(“[class=id”); 10 03/11/14 Networking Android Mobile Programming – Prof. R. De Prisco Slide 127 Università di Salerno -­‐ a.a. 2013-­‐2014 SocketJSoup
11