DII - Dipartimento di Ingegneria dell Informazione Corso di Tecnologie per le Telecomunicazioni SMART TV APPLICATIONS Laura Raffaeli l.raffaeli@univpm.it
Perché Smart TV? Nuova visione dell intrattenimento domestico Offerta di innumerevoli app e servizi legati ad Internet
Aumento della qualità e della quantità dei contenuti Smart Interaction: riconoscimento vocale e gestuale Social networks Condivisione foto, video, audio con tablet e smartphone Connessione con altri dispositivi in rete à Tecnologia emergente in continuo sviluppo à Crescita del numero degli utenti
Caratteristiche La TV è un dispositivo che si trova in ogni abitazione, familiare a persone di ogni età. Ø Scelta ideale per anziani e persone con scarsa dimestichezza delle nuove tecnologie. Interazione legata all uso del telecomando: semplicità di utilizzo ma scarsa praticità nell effettuare operazioni complesse o che richiedono numerosi passaggi. Ø Aspetto da considerare nella progettazione delle funzionalità dell applicazione. Importanza di un adeguata progettazione dell interfaccia utente per favorire l usabilità dell applicazione Smart TV
Applicazione per Smart TV: software web-based che si appoggia sul browser della TV e viene eseguita sullo schermo del televisore. App Engine: browser engine per l esecuzione delle applicazioni App Manager: gestore delle applicazioni Samsung Smart TV App development: Scelta dispositivi Samsung Possibilità di sviluppare le proprie apps: ogni anno una nuova versione del SDK aggiornato con le funzionalità di ogni piattaforma. Registrazione sul Samsung Developers Forum per il download di SDK e altre risorse, accesso al forum sviluppatori. http://www.samsungdforum.com/
Ambiente di sviluppo - Eclipse con specifici tools Samsung: - Creazione Smart TV App Project - App Packaging - Server properties - TV Log Receiver
Progetto di una applicazione Samsung Basic Project: applicazione organizzata in Scene HTML, CSS, Javascript File di configurazione Cartelle per le immagini e le icone
index.html Contiene gli elementi da includere nel progetto: <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>unica</title> <script type="text/javascript" language="javascript" src="$manager_widget/common/af/2.0.0/loader.js"></script> <script language="javascript" type="text/javascript" src="$manager_widget/common/api/tvkeyvalue.js"></script> <script type="text/javascript" language="javascript" src="app/js/voicerec.js"></script> </head> <body> </body> </html>
init.js Funzioni eseguite al lancio e alla chiusura dell applicazione: function onstart (){ sf.scene.show('scena1'); sf.scene.focus('scena1'); } function ondestroy() { if (XHRObj!= null) XHRObj.destroy(); }
Scene1.js Funzioni predefinite: Inizializza Mostra - Nascondi SceneScene1.prototype.initialize = function () { alert("scenescene1.initialize()"); // this function will be called only once when the scene manager show this scene first time } SceneScene1.prototype.handleShow = function () { alert("scenescene1.handleshow()"); // this function will be called when the scene manager show this scene } SceneScene1.prototype.handleHide = function () { alert("scenescene1.handlehide()"); // this function will be called when the scene manager hide this scene }
Scene1.js Funzioni predefinite: Focus - Blur SceneScene1.prototype.handleFocus = function () { alert("scenescene1.handlefocus()"); // this function will be called when the scene manager focus this scene } SceneScene1.prototype.handleBlur = function () { alert("scenescene1.handleblur()"); // this function will be called when the scene manager move focus to another scene from this scene }
Scene1.js Funzioni predefinite: gestione tasti telecomando SceneScene1.prototype.handleKeyDown = function (keycode) { alert("scenescene1.handlekeydown(" + keycode + ")"); // TODO : write an key event handler when this scene get focued switch (keycode) { case sf.key.left: break; case sf.key.right: break; case sf.key.up: break; case sf.key.down: break; case sf.key.enter: break; } }
Scene1.html Contiene gli elementi presenti nella Scena, equivalente a una pagina web: <!-- this html will be a contents of div Scene1 --> <img id='logouni'></img> <img id='return'></img> <div id='labeltitolo'></div> <div id='popup'></div> <table id="prom" cols=3 class='rows'> <tr><td id='nome'><b>farmaco</b></td> <td id='quant'><b>quantità</b></td> <td id= ora'><b>orario</td></tr> </table>
Scene1.css Formattazione della Scena e degli elementi in essa contenuti: #SceneScene1{ position : absolute; left : 0px; top : 0px; width : 960px; height : 540px; background-color : #ffffff; } #SceneScene1 #logouni{ position : absolute; left : 770px; top : 40px; width : 75px; height : 75px; }
Creazione del Widget e test Packaging tramite SDK Test su Remote Test System ed emulatori TV: - Remote Test online dal Samsungforum, su vari tipi di dispositivi. - Download immagine per Virtual Box dell emulatore. Test su dispositivo reale
Download applicazione su Smart TV
APPLICAZIONI PER SMART TV REALIZZATE Smart TV come mezzo di interfacciamento alternativo verso servizi già accessibili con altri dispositivi. Realizzazione di nuovi servizi sfruttando le caratteristiche delle Smart TV. Soluzioni in ambito sanitario e della domotica, particolare interesse nel campo dell AAL (Ambient Assisted Living). Soluzioni per favorire l autonomia residenziale degli anziani e delle persone con disabilità motorie: rendere queste persone indipendenti semplificando lo svolgimento delle attività quotidiane, in un ambiente confortevole e sicuro.
UNICA Funzionalità dell applicazione Controllo sistema domotico Chiamata dal videocitofono Ricezione messaggi da dispositivi connessi alla rete domestica (reader NFC) Connessione al Database Gestione promemoria Controllo vocale
Scena Home dell applicazione
Controllo sistema domotico Controllo di luci e infissi dell abitazione attraverso il telecomando. Invio di comandi con opportuna sintassi, nota la configurazione del sistema. Possibilità di gestire sia carichi singoli sia multipli (scenari).
Controllo sistema domotico Comunicazione tra la TV e il nodo Ethernet del sistema con protocollo http. Uso della tecnologia Ajax e dei metodi e attributi dell oggetto XHR (XMLHttpRequest). function sendcommand(address) { if (XHRObj!= null) XHRObj.destroy(); XHRObj = new XMLHttpRequest(); if (XHRObj) { XHRObj.open("GET", address, true); XHRObj.send(); } } address : http://192.168.21.139:1234/workingout?rid=2&id=6&pin=1&func=255&time=0
Videocitofono Visualizzazione sullo schermo della chiamata in arrivo dal videocitofono dell abitazione. Problema: API per la gestione del protocollo SIP non disponibili per gli sviluppatori. à Soluzione: Uso di un mini PC Android che realizza un client SIP, connesso in HDMI alla Smart TV.
Comunicazione con altri dispositivi in rete Trasferimento dati dal reader NFC (Arduino) connesso alla rete domestica alla Smart TV. Richieste in http con regole ben definite per: Connessione - Invio dati - Disconnessione Gestione delle richieste attraverso le Web Devices APIs e CustomDevice/Nservice Interface APIs: - rilevazione cambiamento di stato (connect/disconnect); - rilevazione eventi (messaggio ricevuto). <script type="text/javascript" language="javascript" src="$manager_widget/common/webapi/1.0/ deviceapis.js ></script>
Il reader NFC invia messaggi testuali che possono riportare: 1. - il contenuto dei tag NFC posti sulle confezioni di prodotti alimentari e farmaci; Farmaci: 01 datascadenza codprodotto Alimenti: 02 codprodotto 2. - le misurazioni acquisite da dispositivi elettromedicali NFC (misuratore di pressione e pedometro). Mis. Pressione: 03 IDutente datimisura Pedometro: 04 IDutente datimisura In questo caso le misure sono inviate anche ad un DB per lo storage. L app elabora i messaggi ricevuti e interroga il DB per ottenere le informazioni sui prodotti o le misurazioni relative ad un utente.
Connessione al DB Distinzione dei servizi in base al codice: 01 à 04 Caso 1 Cod. 01 e 02: Richiesta info al DB su alimenti e farmaci in base al codprodotto. Caso 2 Cod. 03 e 04: Elaborazione immediata della misura ricevuta e query al DB per le misure precedenti relative allo stesso utente.
Connessione al DB Query al database in http GET, utilizzando Ajax: function misureped(){ $.ajax({ url: URLped, async: true, type: "GET, datatype: "application/json", data: {ID:ID}, success:function(res){ estraivalori(res); }, error: function(misureped,stato,errori){ alert( Chiamata fallita"+stato+errori); } }); } Dove: URLped="http://192.168.21.254/smart_tv/unica/pedometer.php
Rappresentazione del sistema!"#$ %&'()*('+,-."-$
Visualizzazione risultati: Caso 1:
Caso 1:
Caso 2:
Caso 2:
Gestione promemoria Promemoria per l assunzione di farmaci: nome, quantità, posologia. Visualizzazione di pop-up sullo schermo mentre l utente guarda i normali programmi TV. Query al DB server per il confronto tra orario del sistema e orari dei promemoria salvati in memoria.
Possibilità di inserimento, modifica ed eliminazione promemoria dall applicazione Smart TV.
Voice recognition Verificare che la Smart TV su cui è in esecuzione l app supporti la Voice Recognition: if (deviceapis.recognition.isrecognitionsupported()) { // perform Recognition related actions here... } else alert("error: Voice recognition not supported");
Definire le funzioni associate ai principali eventi: switch(resultinfo.eventtype){ case 'EVENT_VOICE_BEGIN_MONITOR' : // when user said "Smart tv", 'EVENT_VOICE_BEGIN_MONITOR' event will come. ComandiVocaliHome(); break; } case 'EVENT_VOICE_RECOG_RESULT' : var resultword = resultinfo.result; switch(resultword){ case "Infissi": break; }
Possibilità di definire comandi vocali personalizzati e creare una Voice Help Bar. ComandiVocaliHome = function(){ var helpbarhome = '{"helpbartype": "HELPBAR_TYPE_VOICE_CUSTOMIZE", "helpbaritemslist": [{"itemtext":"infissi, "commandlist :[{"command":"infissi"}]}, {"itemtext":"chiudi", "commandlist":[{"command":"chiudi"}]}] }'; deviceapis.recognition.setvoicehelpbarinfo(helpbarhome); };
Notifiche per l utente Inserimento nell applicazione di notifiche tramite pop-up. Conferma per l esito delle operazioni svolte. Problemi nella richiesta dati. Conferma per l uscita dall applicazione.
MCLOUD REFERTI Cloud Computing Insieme di tecnologie che permettono di archiviare ed elaborare dati e di utilizzare applicazioni grazie all'utilizzo di risorse hardware e software distribuite e virtualizzate in rete. Progetto Marche Cloud Creazione dell infrastruttura di cloud computing della Regione Marche, per erogare servizi digitali moderni ed innovativi e ad alto contenuto tecnologico. Applicazione Mcloud Referti per l accesso al servizio di consultazione on line dei referti dei laboratori analisi, realizzata per smartphone e smart TV.
Funzionalità principali dell applicazione - autenticazione utente - connessione al server regionale - visualizzazione referti disponibili - selezione referto e consultazione esiti Scena Iniziale Login Lista accettazioni Esiti referto Cambio password
Comunicazione con il server Interfaccia di tipo cloud tra client application e server regionale. Sono a disposizione 5 servizi, accessibili attraverso le chiamate ai rispettivi URL: - paziente - accettazioni - accettazione - puntiprelievo - utente Scambio dati client-server attraverso la tecnologia Ajax. Ogni richiesta è una connessione in http all URL specificato: - Metodi GET o POST - Passaggio di variabili - Restituzione dati in strutture di tipo JSON Smart TV supporta il protocollo https.
Gestione errori restituiti dal server Tutti i servizi restituiscono un codice http e una risposta testuale o in XML alle richieste effettuate. XHRObj.onreadystatechange = function () { if (XHRObj.readyState == 4) { //4 = risp ricevuta if (XHRObj.status==200){ alert('good XHR response'); } else {alert('bad XHR response'); if (XHRObj.status==400 XHRObj.status==401 XHRObj.status==403 XHRObj.status==404 XHRObj.status==500) testoerrore= XHRObj.responseText; } } };
Codice 200: OK Responso positivo, si procede all elaborazione dei dati. Casi di errore: 400: 'Richiesta errata ; 401: 'Credenziali di accesso non valide ; 403: 'Password scaduta ; 404: 'Nessun elemento trovato ; 500: 'Errore interno del server. La proprietà responsetext di XHRObj contiene la spiegazione testuale dell errore, che viene riportata in una finestra di popup per informare l utente.
Autenticazione utente: inserimento username e password Inserimento del testo nelle caselle di input tramite qwerty software.
Funzionalità gestita dall Input Method Editor dell App Manager: var imeuser = new IMEShell("inputUser", callback_imeuser); var imepass = new IMEShell("inputPass", callback_imepass); imeuser.setkeyfunc(tvkey.key_down, function(keycode) { document.getelementbyid("inputpass").focus(); return false; }); document.getelementbyid("inputuser").focus();
Autenticazione utente: selezione punto di prelievo Chiamata al servizio puntiprelievo e memorizzazione elenco strutture in un file per gli accessi successivi.
Utilizzo delle File API per la gestione del File System della Smart TV. var filesystemobj = new FileSystem(); - Creazione di un nuovo file e scrittura: var jsfileobj = filesystemobj.opencommonfile( PtPrelievo.txt", w"); jsfileobj.writeall(stringa); - Lettura di un file già esistente: var jsfileobj = filesystemobj.opencommonfile( PtPrelievo.txt", "r+"); content = jsfileobj.readall(); - Chiusura del file: filesystemobj.closecommonfile(jsfileobj);
Dati restituiti in formato JSON: costruzione di funzioni in Javascript per l elaborazione e la visualizzazione dei valori Selezione del referto da consultare
Elaborazione referti Ogni referto è cosituito da molti esiti, analizzati singolarmente: 1. Esiti di tipo numerico e descrittivo vengono riportati in una tabella, evidenziando in rosso gli eventuali risultati fuori dai valori normali.
2. Esiti di tipo antibiogramma richiedono la costruzione di una tabella diversa, di dimensione variabile.
3. Esiti di tipo grafico richiedono la costruzione di un diagramma. Necessità di utilizzare una libreria Javascript esterna.
Cambio password Deciso dall utente o richiesto dal server se è scaduto il periodo di validità della password assegnata dal laboratorio.
Work in progress Utilizzo di un gateway VoIP PSTN per realizzare una chiamata in uscita dalla Smart TV utilizzando la rete telefonica analogica. Integrazione nel sistema domotico di sensori antintrusione, con segnalazione di eventuali allarmi anche su Smart TV. In uscita SDK 2014.