Autore Topic: comunicazione client android /server java  (Letto 727 volte)

Offline andre_sghedo

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows 7
comunicazione client android /server java
« il: 28 Ottobre 2013, 17:42:19 CET »
0
Buonasera,
sto effettuando un progetto android dove una classe java mi funge da server di file mp3 e dove un client android puo connettersi e reperire questi mp3 e ascoltarli "in streaming". La comunicazione tra pc e clent non è un grosso problema perche ho gia provato un programma dove sono riuscito a far andare una chat tra pc e client, avrei quindi bisogno di un input per quanto riguarda lo scambio da server a client per file mp3(qualche mega quindi). Non riesco bene a capire il funzionamento delle socket per questo problema(ad esempio se far andare direttamente i dati che sto eseguendo o raccogliere tutto l'mp3 dal buffer socjet e poi farlo eseguire). Qualcuno ha dei tutorial/guide per questo tipo di cose o codici anche se basilari gia pronti da cui prendere spunto.

Grazie in aticipo,saluti!!

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:comunicazione client android /server java
« Risposta #1 il: 28 Ottobre 2013, 19:41:20 CET »
0
Per definizione stessa di streaming la riproduzione parte appena possibile, non quando i dati sono completamente ricevuti. Tieni anche conto che in molti protocolli di streaming la consegna dei dati non è garantita, quindi si tratta di comunicazioni molto diverse e più complesse di una semplice chat, dove la consegna del messaggio è sempre garantita.
adb logcat | tee /tmp/logcat | grep TAG

Offline andre_sghedo

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows 7
Re:comunicazione client android /server java
« Risposta #2 il: 28 Ottobre 2013, 19:45:25 CET »
0
Ok ne terrò conto. Quindi la programmazione deve essere fatta con il protocollo udp e non tcp??
in giro non c'è qualche esempio su roba del genere da cui prendere spunto?

Grazie comunque delle informazioni

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:comunicazione client android /server java
« Risposta #3 il: 28 Ottobre 2013, 20:15:57 CET »
0
Non è che deve essere fatto solo in UDP, ci sono protocolli che usano il TCP e/o entrambi, ho fatto solo notare che nei protocolli di streaming le comunicazioni possono essere più complessi di una semplice chat.

Le API di Android sopporta alcuni protocolli di streaming e diversi codec (dipende dalla versione del API):

Supported Media Formats | Android Developers

Per quanto riguarda i server non posso dirti nulla, non ho mai preso in considerazione Java per questo tipo di software. Se vuoi puoi studiarti i sorgenti di FFmpeg e/o VLC, sono tutti scritti in C e C++.


adb logcat | tee /tmp/logcat | grep TAG

Offline andre_sghedo

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows 7
Re:comunicazione client android /server java
« Risposta #4 il: 30 Ottobre 2013, 16:08:54 CET »
0
Ho trovato questo codice per lo streaming e funziona,praticamente dato un url viene eseguito il pezzo mp3. Quello che ora dovrei fare è connettere il client al server(su cui sono gli mp3) ma io non ho url da passare ovviamente ma la comunicazione tra client e server mi impone un ip ed una porta.
Vorrei chiedervi se qualcuno ha idee su come far comunicare il client ed il server per il reperimento dell'mp3...
Codice (Java): [Seleziona]
   private void startStreamingAudio() {
        try {
                final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progress_bar);
                if ( audioStreamer != null) {
                        audioStreamer.interrupt();
                }
                audioStreamer = new StreamingMediaPlayer(this,textStreamed, playButton, streamButton,progressBar);
                audioStreamer.startStreaming("http://www.pocketjourney.com/downloads/pj/tutorials/audio.mp3",1717, 214);
                //audioStreamer.startStreaming("http://internet.chonbuk.ac.kr/~songwei/DD/tellme.mp3",5208, 216);
                streamButton.setEnabled(false);
        } catch (IOException e) {
                Log.e(getClass().getName(), "Error starting to stream audio.", e);                     
        }
               
    }

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:comunicazione client android /server java
« Risposta #5 il: 31 Ottobre 2013, 11:47:55 CET »
0
Forse non ti è chiaro ma la comunicazione HTTP indicata dal URL ha un IP è una porta. Tu stai contattando host name www.pocketjourney.com con una richiesta al DNS per avere IP 74.208.172.41 sulla porta 80 (assegnazione IANA).
adb logcat | tee /tmp/logcat | grep TAG