2015-06-04 18 views
8

Sto seguendo queste (1, 2) guide per creare un'applicazione Android mittente per Chromecast e mi interessa solo inviare immagini. Ci sono un sacco di informazioni ei samples come lanciare Testo, Audio e Video. Ma non una sola parola su come farlo con Immagini.Trasmetti immagine (foto) a Chromecast

I belive in power of stackoferflow e qualcuno avrebbe dovuto affrontare tale problema. Si prega di dare qualche buon esempio o tutorial. Tutto ciò di cui ho bisogno è una guida per trasmettere immagini a schermo intero usando Media Router e le sue caratteristiche.

Ecco come mi stava mandando un messaggio di testo utilizzando il canale personalizzato:

/** 
* Send a text message to the receiver 
*/ 
private void sendMessage(String message) { 
    if (mApiClient != null && mSmartBusChannel != null) { 
     try { 
      Cast.CastApi.sendMessage(mApiClient, 
        mSmartBusChannel.getNamespace(), message) 
        .setResultCallback(new ResultCallback<Status>() { 
         @Override 
         public void onResult(Status result) { 
          if (!result.isSuccess()) { 
           Log.e(TAG, "Sending message failed"); 
          } 
         } 
        }); 
     } catch (Exception e) { 
      Log.e(TAG, "Exception while sending message", e); 
     } 
    } else { 
     Toast.makeText(this, message, Toast.LENGTH_SHORT) 
       .show(); 
    } 
} 

Il video è l'invio tramite RemotePlaybackClient .. Va bene, quello che sta immagini?

Grazie mille per l'aiuto.


EDIT:

ho scoperto il metodo (on this blog) di come sia possibile inviare immagini dalla memoria locale. E sì, non sembra funzionare davvero.

public final void openPhotoOnChromecast(String title, String url, String ownerName, String description) { 
    try { 
     Log.d(TAG, "openPhotoOnChromecast: " + url); 
     JSONObject payload = new JSONObject(); 
     payload.put(KEY_COMMAND, "viewphoto"); 
     payload.put("fullsizeUrl", url); 
     payload.put("ownerName", ownerName); 
     payload.put("title", title); 
     payload.put("description", description); 

     sendMessage(payload); 
    } catch (JSONException e) { 
     Log.e(TAG, "Cannot parse or serialize data for openPhotoOnChromecast", e); 
    } catch (IOException e) { 
     Log.e(TAG, "Unable to send openPhotoOnChromecast message", e); 
    } catch (IllegalStateException e) { 
     Log.e(TAG, "Message Stream is not attached", e); 
    } 
} 

P.S. questo metodo utilizza sendMessage(...) da queste librerie (da Gradle):

compile files('libs/commons-io-2.4.jar') 
compile files('libs/GoogleCastSdkAndroid.jar') 

risposta

3

guardando qui: Examples using CastCompanionLibrary to simply display an image Ci sono davvero tre opzioni per l'invio di immagini a un Chromecast.

  1. È possibile codificare l'immagine in una stringa base64 e inviarla tramite un canale dati al ricevitore. Se è troppo grande, puoi dividerlo e inviarlo attraverso più messaggi. Questo è un uso davvero scadente della tecnologia cast e in realtà non si dovrebbe fare questo, ma è possibile .
  2. Si potrebbe semplicemente inviare un url al dispositivo Chromecast e afferrarlo dal proprio server all'interno dell'app ricevente. Questa la raccomandata modo per inviare le foto attraverso al Chromecast
  3. Se non si sta scaricando le immagini da un server è possibile impostare il proprio server in esecuzione all'interno del vostro client App Android e inviare un URL al ricevitore per prendilo da lì. Questo è piuttosto complicato per l'invio di immagini in tutto, ma è un molto più robusto opzione di opzione 1.

L'obiettivo di Chromecast, secondo Google, è per lo streaming di contenuti dalla nube, motivo per cui non ci isn È davvero un supporto nativo per l'invio di immagini locali. Gli sviluppatori dovrebbero essere incoraggiati a caricare le immagini sull'applicazione ricevente da un server.

+0

grazie per la risposta chiara. Proverò questo approccio. – AnZ

+0

Ok, il primo approccio non ha funzionato per me.Proverò il terzo. Per quanto ho capito, funzionerebbe in base al principio "caricamenti di dispositivi - download di Chromecast". È necessaria una connessione Internet per il trasferimento di tali file o sarebbe sufficiente solo il WiFi tra i dispositivi? E un'altra domanda: ho bisogno di un ricevitore personalizzato per tale approccio o quello predefinito si occuperà di esso? Qualche esempio sarebbe grandioso. – AnZ