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