From 64d9d9b5b40690cc4e8fffd45357d1e3f2f78873 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sun, 9 Jun 2024 00:49:32 +0800 Subject: [PATCH] Optimize metadata --- .../android/tv/ui/activity/CastActivity.java | 10 +-- .../android/tv/ui/activity/LiveActivity.java | 8 +-- .../android/tv/ui/activity/VideoActivity.java | 10 +-- .../com/fongmi/android/tv/player/Players.java | 67 ++++++++++++------- .../android/tv/service/PlaybackService.java | 5 ++ .../android/tv/ui/activity/LiveActivity.java | 11 +-- .../android/tv/ui/activity/VideoActivity.java | 10 +-- 7 files changed, 54 insertions(+), 67 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java index 053223006..88dbc54a6 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.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) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 20e9f31c3..2bbc56039 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -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) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 7a1cab351..3f528ad8c 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -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) diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index c705fb97e..b64d56a86 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java @@ -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) { diff --git a/app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java b/app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java index 0496309f9..e44ee9fe8 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java +++ b/app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java @@ -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); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index bd5b1c8bc..2b12a0553 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -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) diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 68734b647..511edba92 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -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)