2015-06-04 9 views
8

Ich bin diese folgen (1, 2) Anleitungen, um eine Absender-Android-Anwendung für Chromecast zu erstellen, und ich bin nur daran interessiert, Bilder zu senden. Es gibt viele Informationen und samples wie man Text, Audio und Video zu werfen. Aber kein einziges Wort wie das mit Bilder.Cast Bild (Foto) auf Chromecast

Ich glaube in Kraft von stackoferflow und jemand sollte solche Probleme konfrontiert haben. Bitte geben Sie ein gutes Beispiel oder Tutorial. Alles, was ich brauche, ist eine Anleitung, um Vollbild mit Media Router und seinen Funktionen zu übertragen.

Das ist, wie ich die Textmeldung senden benutzerdefinierten Channel mit:

/** 
* 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(); 
    } 
} 

Video sendet RemotePlaybackClient mit .. Okay, was Bilder ist?

Vielen Dank für jede Hilfe.


EDIT:

ich herausgefunden habe, Verfahren (on this blog), wie es möglich ist, Bilder aus dem lokalen Speicher zu senden. Und ja, das scheint nicht wirklich zu funktionieren.

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. Diese Methode nutzt sendMessage(...) aus diesen Bibliotheken (von gradle):

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

Antwort

3

Suchen Sie hier: Examples using CastCompanionLibrary to simply display an image Es gibt wirklich drei Optionen für die Bilder, die auf einem Chrome senden.

  1. Sie können das Bild in einer Base64-Zeichenfolge codieren und es über einen Datenkanal an den Empfänger senden. Wenn es zu groß ist, können Sie es teilen und senden Sie es in mehreren Nachrichten. Dies ist eine wirklich schlechte Verwendung der Gusstechnik und wirklich sollten Sie dies nicht tun, aber es ist möglich.
  2. Sie könnten einfach eine URL an das Chromecast-Gerät senden und es von Ihrem Server in der Empfänger-App holen. Dies ist die empfohlene Art und Weise Fotos über zu dem Chrome
  3. senden Wenn Sie nicht Ihre Bilder von einem Server herunterzuladen Sie auf Ihren eigenen Server laufen in Ihrem Client Android App und senden URL an den Empfänger einstellen könnten zu nimm es von dort. Das ist ziemlich kompliziert für das Senden von Bildern über, ist aber eine weitaus robuste Option als Option 1.

Ziel Chrome nach Google, Inhalten zu streamen aus der Cloud ist, weshalb dort isn Es gibt keine native Unterstützung für das Senden von lokalen Bildern. Entwickler sollten dazu ermutigt werden, Bilder von einem Server auf die Empfängeranwendung zu laden.

+0

danke für die klare antwort. Ich werde diesen Ansatz ausprobieren. – AnZ

+0

Okay, erste Annäherung funktionierte nicht für mich.Ich werde es mit dem dritten versuchen. Soweit ich das verstanden habe, würde es nach dem Prinzip "Device Uploads - Chromecast Downloads" funktionieren. Ist für solche Dateien eine Internetverbindung erforderlich oder reicht es nur WLAN zwischen Geräten? Und noch eine Frage - brauche ich Custom Receiver für einen solchen Ansatz oder den Default wird man damit umgehen? Ein Beispiel wäre toll, übrigens. – AnZ