Skip to content

Commit

Permalink
Displays album art on the Main screen if present.
Browse files Browse the repository at this point in the history
fixed the audio player crash.

Changed the back ground color of tiles to white
  • Loading branch information
octacode committed Jul 8, 2017
1 parent 8a2e4bd commit 28bc9df
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,21 @@

import android.graphics.Bitmap;

import org.amahi.anywhere.tv.presenter.MainTVPresenter;

public class AudioMetadataRetrievedEvent implements BusEvent {
private final String audioTitle;
private final String audioArtist;
private final String audioAlbum;
private final Bitmap audioAlbumArt;
private final MainTVPresenter.ViewHolder viewHolder;

public AudioMetadataRetrievedEvent(String audioTitle, String audioArtist, String audioAlbum, Bitmap audioAlbumArt) {
public AudioMetadataRetrievedEvent(String audioTitle, String audioArtist, String audioAlbum, Bitmap audioAlbumArt, MainTVPresenter.ViewHolder viewHolder) {
this.audioTitle = audioTitle;
this.audioArtist = audioArtist;
this.audioAlbum = audioAlbum;
this.audioAlbumArt = audioAlbumArt;
this.viewHolder = viewHolder;
}

public String getAudioTitle() {
Expand All @@ -49,4 +53,8 @@ public String getAudioAlbum() {
public Bitmap getAudioAlbumArt() {
return audioAlbumArt;
}

public MainTVPresenter.ViewHolder getViewHolder() {
return viewHolder;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.amahi.anywhere.bus.AudioMetadataRetrievedEvent;
import org.amahi.anywhere.bus.BusEvent;
import org.amahi.anywhere.bus.BusProvider;
import org.amahi.anywhere.tv.presenter.MainTVPresenter;

import java.util.HashMap;

Expand All @@ -37,15 +38,26 @@
*/
public class AudioMetadataRetrievingTask extends AsyncTask<Void, Void, BusEvent> {
private final Uri audioUri;
private final MainTVPresenter.ViewHolder viewHolder;

private AudioMetadataRetrievingTask(Uri audioUri) {
this.audioUri = audioUri;
this.viewHolder = null;
}

private AudioMetadataRetrievingTask(Uri audioUri, MainTVPresenter.ViewHolder viewHolder) {
this.audioUri = audioUri;
this.viewHolder = viewHolder;
}

public static void execute(Uri audioUri) {
new AudioMetadataRetrievingTask(audioUri).execute();
}

public static void execute(Uri audioUri, MainTVPresenter.ViewHolder viewHolder) {
new AudioMetadataRetrievingTask(audioUri, viewHolder).execute();
}

@Override
protected BusEvent doInBackground(Void... parameters) {
MediaMetadataRetriever audioMetadataRetriever = new MediaMetadataRetriever();
Expand All @@ -58,9 +70,9 @@ protected BusEvent doInBackground(Void... parameters) {
String audioAlbum = audioMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
Bitmap audioAlbumArt = extractAlbumArt(audioMetadataRetriever);

return new AudioMetadataRetrievedEvent(audioTitle, audioArtist, audioAlbum, audioAlbumArt);
return new AudioMetadataRetrievedEvent(audioTitle, audioArtist, audioAlbum, audioAlbumArt, viewHolder);
} catch (RuntimeException e) {
return new AudioMetadataRetrievedEvent(null, null, null, null);
return new AudioMetadataRetrievedEvent(null, null, null, null, viewHolder);
} finally {
audioMetadataRetriever.release();
}
Expand Down
37 changes: 32 additions & 5 deletions src/main/java/org/amahi/anywhere/tv/presenter/MainTVPresenter.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@

import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.support.v17.leanback.widget.ImageCardView;
import android.support.v17.leanback.widget.Presenter;
import android.support.v4.content.ContextCompat;
Expand All @@ -34,12 +36,14 @@

import org.amahi.anywhere.R;
import org.amahi.anywhere.adapter.ServerFilesMetadataAdapter;
import org.amahi.anywhere.bus.AudioMetadataRetrievedEvent;
import org.amahi.anywhere.bus.BusProvider;
import org.amahi.anywhere.bus.FileMetadataRetrievedEvent;
import org.amahi.anywhere.bus.FileOpeningEvent;
import org.amahi.anywhere.server.client.ServerClient;
import org.amahi.anywhere.server.model.ServerFile;
import org.amahi.anywhere.server.model.ServerShare;
import org.amahi.anywhere.task.AudioMetadataRetrievingTask;
import org.amahi.anywhere.task.FileMetadataRetrievingTask;
import org.amahi.anywhere.util.Intents;
import org.amahi.anywhere.util.Mimes;
Expand Down Expand Up @@ -94,6 +98,7 @@ public void onBindViewHolder(Presenter.ViewHolder viewHolderArgs, Object item) {
ViewHolder viewHolder = (ViewHolder) viewHolderArgs;
viewHolder.mCardView.setTitleText(serverFile.getName());
viewHolder.mCardView.setInfoAreaBackgroundColor(mDefaultBackgroundColor);
viewHolder.mCardView.setBackgroundColor(Color.WHITE);
if (isMetadataAvailable(serverFile)) {
View fileView = viewHolder.view;
fileView.setTag(ServerFilesMetadataAdapter.Tags.SHARE, serverFile.getParentShare());
Expand All @@ -108,6 +113,8 @@ public void onBindViewHolder(Presenter.ViewHolder viewHolderArgs, Object item) {
// setSize(serverFile, viewHolder);
if (isImage(serverFile)) {
setUpImageIcon(serverFile, viewHolder.mCardView.getMainImageView(), getImageUri(serverFile));
} else if (isAudio(serverFile)) {
AudioMetadataRetrievingTask.execute(getImageUri(serverFile), viewHolder);
} else {
setUpDrawable(serverFile, viewHolder);
}
Expand Down Expand Up @@ -166,29 +173,49 @@ public void onFileMetadataRetrieved(FileMetadataRetrievedEvent event) {
setUpDrawable(serverFile, viewHolder);
}
} else {
setUpImageIcon(serverFile, viewHolder.mCardView.getMainImageView(), event.getFileMetadata().getArtworkUrl());
setUpImageIcon(serverFile, viewHolder.mCardView.getMainImageView(), Uri.parse(event.getFileMetadata().getArtworkUrl()));
}
}

@Subscribe
public void onAudioMetadataRetrieved(AudioMetadataRetrievedEvent event) {
if (event.getAudioAlbumArt() != null) {
ViewHolder viewHolder = event.getViewHolder();
if(viewHolder!=null) {
viewHolder.mCardView.setContentText(event.getAudioArtist() + " - " + event.getAudioAlbum());
viewHolder.mCardView.getMainImageView().setImageBitmap(event.getAudioAlbumArt());
}
} else
setUpMusicLogo(event.getViewHolder());
}

private void setUpMusicLogo(ViewHolder viewHolder) {
viewHolder.mCardView.setMainImage(ContextCompat.getDrawable(mContext, R.drawable.tv_ic_audio));
}

private boolean isImage(ServerFile file) {
return Mimes.match(file.getMime()) == Mimes.Type.IMAGE;
}

private boolean isAudio(ServerFile file) {
return Mimes.match(file.getMime()) == Mimes.Type.AUDIO;
}

private boolean isDirectory(ServerFile file) {
return Mimes.match(file.getMime()) == Mimes.Type.DIRECTORY;
}

private void setUpImageIcon(ServerFile file, ImageView fileIconView, String url) {
private void setUpImageIcon(ServerFile file, ImageView fileIconView, Uri url) {
Glide.with(fileIconView.getContext())
.load(url)
.load(url.toString())
.diskCacheStrategy(DiskCacheStrategy.ALL)
.centerCrop()
.placeholder(Mimes.getTVFileIcon(file))
.into(fileIconView);
}

private String getImageUri(ServerFile file) {
return mServerClient.getFileUri(file.getParentShare(), file).toString();
private Uri getImageUri(ServerFile file) {
return mServerClient.getFileUri(file.getParentShare(), file);
}

private void startFileOpening(ServerFile file) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@
package org.amahi.anywhere.tv.presenter;

import android.content.Context;
import android.graphics.Color;
import android.net.Uri;
import android.support.v17.leanback.widget.ImageCardView;
import android.support.v17.leanback.widget.Presenter;
import android.support.v4.content.ContextCompat;
import android.text.format.Formatter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
Expand Down Expand Up @@ -61,15 +63,14 @@ public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) {
final ServerFile serverFile = (ServerFile) item;
ViewHolder view = ((ViewHolder) viewHolder);
view.mCardView.setTitleText(serverFile.getName());

view.mCardView.setBackgroundColor(Color.WHITE);
if (isDirectory(serverFile)) {
Date d = serverFile.getModificationTime();
SimpleDateFormat dt = new SimpleDateFormat("EEE LLL dd yyyy");
view.mCardView.setContentText(dt.format(d));
} else {
//view.mCardView.setContentText(Formatter.formatFileSize(mContext, serverFile.getSize()));
}
// else {
// view.mCardView.setContentText(Formatter.formatFileSize(mContext, serverFile.getSize()));
// }

view.mCardView.setMainImageDimensions(400, 300);

Expand Down

0 comments on commit 28bc9df

Please sign in to comment.