2016-08-03 26 views
0

Wie gehen wir vor, um das Lockscreen-Artwork für eine chromecast sender App unter v2.7.0 anzuzeigen. Ich habe den besten Teil von ungefähr 2 Tagen auf diesem ohne jeden Beschluss verbracht.Chromecast Sender v2.7.0 lockscreen image

Die v2.7.0 Bibliothek hat derzeit die folgende Methode in der VideoCastManager.java Klasse:

private void setBitmapForLockScreen(MediaInfo video) { 
    if (video == null || mMediaSessionCompat == null) { 
     return; 
    } 
    Uri imgUrl = null; 
    Bitmap bm = null; 
    List<WebImage> images = video.getMetadata().getImages(); 
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) { 
     if (images.size() > 1) { 
      imgUrl = images.get(1).getUrl(); 
     } else if (images.size() == 1) { 
      imgUrl = images.get(0).getUrl(); 
     } else if (mContext != null) { 
      // we don't have a url for image so get a placeholder image from resources 
      bm = BitmapFactory.decodeResource(mContext.getResources(), 
        R.drawable.album_art_placeholder_large); 
     } 
    } else if (!images.isEmpty()) { 
     imgUrl = images.get(0).getUrl(); 
    } else { 
     // we don't have a url for image so get a placeholder image from resources 
     bm = BitmapFactory.decodeResource(mContext.getResources(), 
       R.drawable.album_art_placeholder); 
    } 
    if (bm != null) { 
     MediaMetadataCompat currentMetadata = mMediaSessionCompat.getController().getMetadata(); 
     MediaMetadataCompat.Builder newBuilder = currentMetadata == null 
       ? new MediaMetadataCompat.Builder() 
       : new MediaMetadataCompat.Builder(currentMetadata); 
     mMediaSessionCompat.setMetadata(newBuilder 
       .putBitmap(MediaMetadataCompat.METADATA_KEY_ART, bm) 
       .build()); 
    } else { 
     if (mLockScreenFetchTask != null) { 
      mLockScreenFetchTask.cancel(true); 
     } 
     mLockScreenFetchTask = new FetchBitmapTask() { 
      @Override 
      protected void onPostExecute(Bitmap bitmap) { 
       if (mMediaSessionCompat != null) { 
        MediaMetadataCompat currentMetadata = mMediaSessionCompat.getController() 
          .getMetadata(); 
        MediaMetadataCompat.Builder newBuilder = currentMetadata == null 
          ? new MediaMetadataCompat.Builder() 
          : new MediaMetadataCompat.Builder(currentMetadata); 
        mMediaSessionCompat.setMetadata(newBuilder 
          .putBitmap(MediaMetadataCompat.METADATA_KEY_ART, bitmap) 
          .build()); 
       } 
       mLockScreenFetchTask = null; 
      } 
     }; 
     mLockScreenFetchTask.execute(imgUrl); 
    } 
} 

ich versucht habe swaping den album_art_placeholder_large ziehbar mit meinem eigenen benutzerdefinierten Bild, keine Ergebnisse. Versuchen Sie auch, eine Bitmap über die folgende Zeile hinzuzufügen:

aber nichts funktioniert. Was genau fehlt mir hier? Was muss MediaMetadataCompat Schlüssel verwendet werden, um die Lockscreen-Grafik anzuzeigen? Oder schaue ich zuerst auf den falschen Platz?

einige andere Links i versucht, aber ohne Erfolg:

Android MediaMetadata image on lockscreen is zoomed

Adding more fields in MediaMetada GoogleCast

Das Dokument online wie jetzt ist unglaublich schlecht und nicht viel helfen.

Danke!

BEARBEITEN: Bei weiteren Untersuchungen scheint es 15-20 Minuten nach dem Sperren des Geräts, um das Lockscreen-Bild anzuzeigen. Nicht sicher warum.

EDIT 2: setupMediaSession-Methode.

+0

Wo rufen Sie 'mMediaSessionCompat.setActive (true)' '? – ianhanniballake

+0

@ianhanniballake innerhalb der setupMediaSession-Methode. Ich verwende die Standardbibliothek 2.7.0 wie sie ist. Ich habe die Frage mit der oben genannten Methode aktualisiert. – user2511882

Antwort

0

Haben Sie ein "größeres" Albumcover definiert, als Sie Ihre MediaInfo definiert haben? CCL nimmt an, dass Sie eine kleinere haben, die als index = 0 festgelegt ist und in der Dialogbox für Benachrichtigungen und Mini-Controller und Medienrouter-Controller verwendet wird, und eine größere (zweite Grafik in MediaInfo, index = 1), die für den Lockscreen verwendet wird und die Vollbild-Fernbedienung. Wenn diese Bilder vorhanden sind, verwendet CCL sie automatisch. Führen Sie als Test CastVideos-android (v2) aus und prüfen Sie, ob das für Sie funktioniert.

+0

Sprechen wir über den getMetaData(). GetImages() Aufruf innerhalb der setBitmapForLockScreen Methode? Ich debugging diese Methode und anscheinend die Liste der Netzbilder kommt zurück als 0. Jedoch zeigen die ausgedehnten Kontrollen, Mitteilung, Minikontrolle alle die korrekten Bilder an – user2511882

+0

hinzuzufügen, selbst wenn die Bilder null sind und die Logikimplementierung es betrachten sollte immer noch die standard album_art_placeholder_large abholen und zeigen, dass, wenn nichts anderes verfügbar ist, sollte es nicht? – user2511882

+0

Wie ich vorgeschlagen habe, versuchen Sie bitte CastVideos-v2 und sehen Sie, ob dieses Problem auftritt oder nicht. –