Autore Topic: CREAZIONE E COMUNICAZIONE CON DATABASE  (Letto 1007 volte)

Offline pbera

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
CREAZIONE E COMUNICAZIONE CON DATABASE
« il: 07 Aprile 2016, 16:35:53 CEST »
0
Ciao a tutti! Io e dei miei compagni di università per un esame dobbiamo sviluppare un'applicazione android che una volta inquadrato e registrato un video in televisione o su youtube fornisca il titolo del video, un pò come fa shazam per la musica (infatti il titolo del progetto è "VideoShazam").
Con android studio stiamo sviluppando l'applicazione che una volta registrato il video, estragga delle features (al momento stiamo valutando gli istogrammi di ogni frame) e le invii ad un database in cui sono salvate le features di un numero X di film (a nostra discrezione, possono essere anche pochi è sufficiente mostrare che l'applicazione funzioni). Il nostro problema principale è la creazione del database: non sappiamo cosa utilizzare, abbiamo bisogno di salvare dei dati e quando l'applicazione invia ad esso le features estratte, il database faccia il confronto tra quelle estratte dall'applicazione e tutte quelle salvate nel database e restituisca il titolo del film corrispondente oppure un messaggio di errore nel caso in cui non ci fossero corrispondenze.
Avete qualche consiglio da darci? Quale tipo di database è meglio utilizzare e con quali linguaggio lo si programma? Può essere fatto un database online a cui si può accedere da qualsiasi posto? E come si instaura una comunicazione tra applicazione android e database?
Siamo veramente alle prime armi in ambito database, quindi chiedo scusa se ho scritto qualcosa di strano o assurdo. Grazie mille in anticipo per l'aiuto!

Offline lore.cioni

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Github
    • cionilorenzo
    • lorecioni
    • Mostra profilo
  • Dispositivo Android:
    Motorola Moto G
  • Play Store ID:
    Lorenzo Cioni
  • Sistema operativo:
    Mac OSX 10.11
Re:CREAZIONE E COMUNICAZIONE CON DATABASE
« Risposta #1 il: 08 Aprile 2016, 10:33:14 CEST »
0
Io sposterei tutto il carico di lavoro su un server accessibile via HTTP.
Lì create un database, ad esempio mysql, del tipo che serve a voi. Per la gestione e creazione del database vi consiglio di usare phpMyAdmin che dispone di un'ottima interfaccia grafica accessibile via web.
Una volta creata la struttura dati, create uno script (ad esempio in php) che riceva via HTTP i dati del filmato che state elaborando (nel vostro caso i vari istogrammi del filmato da analizzare), vada a leggersi i dati da database, esegua il confronto e con un qualche metodo risponda indicando qual è il filmato presente nel vostro db più vicino a quello analizzato (qui potete usare il 1-nearest neighbour, o quello che vi viene in mente).
Per scambiare dati tra il vostro script php e l'applicazione io vi suggerirei di utilizzare questa libreria, OkHttp, molto comoda e pratica da implementare.

Esempio di workflow:
- Creo database dei vari istogrammi associati a ciascun video nel mio database
- Creo uno script php che riceve un array di istogrammi (o quello che vi serve) via $_POST, calcola tutte le distanze tra il vostro istogramma e quelli presenti nel db, sceglie quello a distanza minima e stampa ad esempio il nome del video che ha trovato essere più vicino.
- Da applicazione faccio una richiesta in POST inviando gli istogrammi del mio video e attendo la risposta del server. Mi viene restituito ciò che ho stampato con il mio script.

Per rendere tutto più fruibile è bene effettuare le richieste HTTP da android in modo asincrono con gli AsyncTask.

Spero di aver risposto più o meno chiaramente, in ogni caso chiedete pure!

Offline pbera

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:CREAZIONE E COMUNICAZIONE CON DATABASE
« Risposta #2 il: 08 Aprile 2016, 11:53:13 CEST »
0
ti ringraziamo molto per la risposta molto esaustiva! In questi giorni proveremo a seguire i tuoi consigli.
Alcune domande:
-con phpMyAdmin creo un database online che quindi è sempre accessibile oppure il database viene creato sul mio pc? e il database è programmato con linguaggio mysql? (scusami se faccio domande stupide ma in questi giorni cercando un modo per risolvere il problema ho fatto più confusione che altro)
-lo script in quale ambiente si sviluppa? e per comunicare con il database serve anche ip di dove è connesso oppure basta l'url http oppure sto dicendo qualcosa di non sensato?
-il via $_POST cos'è? come lo implemento nell'applicazione e nello script?

grazie per la pazienza e la disponibilità!

Offline lore.cioni

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Github
    • cionilorenzo
    • lorecioni
    • Mostra profilo
  • Dispositivo Android:
    Motorola Moto G
  • Play Store ID:
    Lorenzo Cioni
  • Sistema operativo:
    Mac OSX 10.11
Re:CREAZIONE E COMUNICAZIONE CON DATABASE
« Risposta #3 il: 08 Aprile 2016, 12:05:12 CEST »
0
Per prima cosa hai bisogno di un webserver raggiungibile da internet.
Se non ne hai uno a disposizione (ad esempio l'università potrebbe mettervene a disposizione uno), ti consiglio di crearti uno spazio su Crea sito web gratis | Altervista.
Altervista di suo dispone anche di un database mysql preinstallato gestibile tramite phpMyAdmin, ha solo alcuni limiti sul numero massimo di query orarie possibili, ma per iniziare dovrebbe andare più che bene. Se avete invece un vostro server, installateci mysql, scaricate phpMyAdmin ed effettuatene il deploy nella web home del vostro server nella cartella phpMyAdmin. A questo punto potete accedere al vostro db dall'indirizzo http://IPSERVER/phpMyAdmin. A questo punto semplicemente crei le tabelle che ti servono. Per questo ti rimando a questi tutorial: SQL Tutorial

Lo script personalmente lo farei in PHP, molto versatile per il vostro compito e soprattutto ha nativamente implementate delle API di accesso al database, mysqli:

Codice: [Seleziona]
$mysqli = new mysqli('http://webserver.com', 'username', 'password', 'nome_database');
    if ($mysqli->connect_error) {
        die('Errore di connessione (' . $mysqli->connect_errno . ') '
        . $mysqli->connect_error);
    } else {
        echo 'Connesso. ' . $mysqli->host_info . "\n";
    }

Per la connessione (al posto di http://webserver.com) puoi usare l'indirizzo ip pubblico del server, o il nome se è associato a un DNS server.

POST e GET sono i metodi di scambio dati verso e da uno script PHP: Le variabili GET e POST | Guida PHP di base | PHP HTML.it
Non devi implementarli, sono variabili che contengono le informazioni che arrivano dall'esterno (nel tuo caso l'array di istogrammi).

Offline pbera

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:CREAZIONE E COMUNICAZIONE CON DATABASE
« Risposta #4 il: 12 Aprile 2016, 16:12:29 CEST »
0
Grazie mille siamo riusciti a creare il database su altervista e anche alcuni script con cui riempire la tabella e fare una veloce ricerca! Adesso dobbiamo inserire tutto nell'applicazione Android!
Grazie mille ancora, sei stato di grande aiuto! Sappiamo a chi scrivere in caso di bisogno ;)

Offline pbera

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:CREAZIONE E COMUNICAZIONE CON DATABASE
« Risposta #5 il: 15 Aprile 2016, 11:01:13 CEST »
0
@lore.cioni avrei altri due dubbi da sottoporti:

1 siamo riusciti a creare database e  comunicare con esso da applicazione android, però non riusciamo da applicazione ad elaborare il video acquisito. Nello specifico utilizzare la classe VideoCapture di OpenCV, che non riesce a ricevere come parametro il video salvato nella galleria del telefono. Hai idea di come si possa risolvere?

2 noi finora abbiamo considerato gli istogrammi RGB per caratterizzare video diversi. Secondo te ci sono altri parametri di un video che possono essere valutati per discriminare un video da un altro?

grazie mille! ciao