Optimize metadata

pull/497/head
FongMi 2 years ago
parent 5d40a1e0e4
commit 64d9d9b5b4
  1. 10
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
  2. 8
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 10
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  4. 67
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  5. 5
      app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java
  6. 11
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  7. 10
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java

@ -5,9 +5,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.graphics.drawable.BitmapDrawable;
import android.os.IBinder;
import android.support.v4.media.MediaMetadataCompat;
import android.view.KeyEvent;
import android.view.View;
@ -331,13 +329,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
}
private void setMetadata() {
String title = mBinding.widget.title.getText().toString();
MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();
BitmapDrawable drawable = ((BitmapDrawable) mBinding.exo.getDefaultArtwork());
builder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, title);
builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, drawable.getBitmap());
builder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, mPlayers.getDuration());
mPlayers.setMetadata(builder.build());
mPlayers.setMetadata(mBinding.widget.title.getText().toString(), "", mBinding.exo);
}
@Subscribe(threadMode = ThreadMode.MAIN)

@ -707,13 +707,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
private void setMetadata() {
String title = mBinding.widget.name.getText().toString();
String artist = mBinding.widget.play.getText().toString();
MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();
BitmapDrawable drawable = ((BitmapDrawable) mBinding.exo.getDefaultArtwork());
builder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, title);
builder.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist);
builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, drawable.getBitmap());
builder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, mPlayers.getDuration());
mPlayers.setMetadata(builder.build());
mPlayers.setMetadata(title, artist, mBinding.exo);
}
@Subscribe(threadMode = ThreadMode.MAIN)

@ -4,10 +4,8 @@ import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.support.v4.media.MediaMetadataCompat;
import android.text.Html;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
@ -1126,13 +1124,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
String title = mHistory == null ? getName() : mHistory.getVodName();
String artist = mEpisodeAdapter.size() == 0 ? "" : getEpisode().getName();
artist = title.equals(artist) ? "" : getString(R.string.play_now, artist);
MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();
BitmapDrawable drawable = ((BitmapDrawable) mBinding.exo.getDefaultArtwork());
builder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, title);
builder.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist);
builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, drawable.getBitmap());
builder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, mPlayers.getDuration());
mPlayers.setMetadata(builder.build());
mPlayers.setMetadata(title, artist, mBinding.exo);
}
@Subscribe(threadMode = ThreadMode.MAIN)

@ -3,6 +3,8 @@ package com.fongmi.android.tv.player;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.media.MediaMetadataCompat;
@ -136,10 +138,6 @@ public class Players implements Player.Listener, AnalyticsListener, ParseCallbac
return session;
}
public void setMetadata(MediaMetadataCompat metadata) {
session.setMetadata(metadata);
}
public int getDecode() {
return decode;
}
@ -446,29 +444,52 @@ public class Players implements Player.Listener, AnalyticsListener, ParseCallbac
return bundle;
}
public void setMetadata(String title, String artist, PlayerView view) {
try {
Bitmap bitmap = ((BitmapDrawable) view.getDefaultArtwork()).getBitmap();
MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();
builder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, title);
builder.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist);
builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, bitmap);
builder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, getDuration());
session.setMetadata(builder.build());
ActionEvent.update();
} catch (Exception e) {
e.printStackTrace();
}
}
public void share(Activity activity, CharSequence title) {
if (isEmpty()) return;
Intent intent = new Intent(Intent.ACTION_SEND);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Intent.EXTRA_TEXT, getUrl());
intent.putExtra("extra_headers", getHeaderBundle());
intent.putExtra("title", title);
intent.putExtra("name", title);
intent.setType("text/plain");
activity.startActivity(Util.getChooser(intent));
try {
if (isEmpty()) return;
Intent intent = new Intent(Intent.ACTION_SEND);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Intent.EXTRA_TEXT, getUrl());
intent.putExtra("extra_headers", getHeaderBundle());
intent.putExtra("title", title);
intent.putExtra("name", title);
intent.setType("text/plain");
activity.startActivity(Util.getChooser(intent));
} catch (Exception e) {
e.printStackTrace();
}
}
public void choose(Activity activity, CharSequence title) {
if (isEmpty()) return;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(getUri(), "video/*");
intent.putExtra("title", title);
intent.putExtra("return_result", isVod());
intent.putExtra("headers", getHeaderArray());
if (isVod()) intent.putExtra("position", (int) getPosition());
activity.startActivityForResult(Util.getChooser(intent), 1001);
try {
if (isEmpty()) return;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(getUri(), "video/*");
intent.putExtra("title", title);
intent.putExtra("return_result", isVod());
intent.putExtra("headers", getHeaderArray());
if (isVod()) intent.putExtra("position", (int) getPosition());
activity.startActivityForResult(Util.getChooser(intent), 1001);
} catch (Exception e) {
e.printStackTrace();
}
}
public void checkData(Intent data) {

@ -141,6 +141,11 @@ public class PlaybackService extends Service {
return START_NOT_STICKY;
}
@Override
public void onTaskRemoved(Intent rootIntent) {
stopSelf();
}
@Override
public void onDestroy() {
EventBus.getDefault().unregister(this);

@ -5,11 +5,9 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.media.MediaMetadataCompat;
import android.view.MotionEvent;
import android.view.View;
@ -766,14 +764,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
private void setMetadata() {
String title = mBinding.widget.name.getText().toString();
String artist = mBinding.widget.play.getText().toString();
MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();
BitmapDrawable drawable = ((BitmapDrawable) mBinding.exo.getDefaultArtwork());
builder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, title);
builder.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist);
builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, drawable.getBitmap());
builder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, mPlayers.getDuration());
mPlayers.setMetadata(builder.build());
ActionEvent.update();
mPlayers.setMetadata(title, artist, mBinding.exo);
}
@Subscribe(threadMode = ThreadMode.MAIN)

@ -13,7 +13,6 @@ import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v4.media.MediaMetadataCompat;
import android.text.Html;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
@ -1136,14 +1135,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
String title = mHistory == null ? getName() : mHistory.getVodName();
String artist = mEpisodeAdapter.isEmpty() ? "" : getEpisode().getName();
artist = title.equals(artist) ? "" : getString(R.string.play_now, artist);
MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();
BitmapDrawable drawable = ((BitmapDrawable) mBinding.exo.getDefaultArtwork());
builder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, title);
builder.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist);
builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, drawable.getBitmap());
builder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, mPlayers.getDuration());
mPlayers.setMetadata(builder.build());
ActionEvent.update();
mPlayers.setMetadata(title, artist, mBinding.exo);
}
@Subscribe(threadMode = ThreadMode.MAIN)

Loading…
Cancel
Save