From 17586697decd22c9e215dc180184b6ce1438eeea Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 28 Oct 2023 12:27:56 +0800 Subject: [PATCH] Support google home control --- app/build.gradle | 4 ++-- .../android/tv/ui/activity/LiveActivity.java | 16 ++++++++++++++++ .../android/tv/ui/activity/VideoActivity.java | 17 +++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 69cf358a6..db0d5aefa 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,12 +21,12 @@ android { leanback { dimension "mode" versionCode 207 - versionName "20231027#3" + versionName "20231028" } mobile { dimension "mode" versionCode 207 - versionName "20231027#3" + versionName "20231028" } java { dimension "api" 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 dd0946865..191dc009d 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 @@ -4,6 +4,7 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; +import android.support.v4.media.MediaMetadataCompat; import android.view.KeyEvent; import android.view.View; @@ -420,6 +421,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void showEpg() { mBinding.widget.play.setText(mChannel.getData().getEpg()); + setMetadata(); } private void setTraffic() { @@ -452,12 +454,14 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { getExo().setDefaultArtwork(resource); getIjk().setDefaultArtwork(resource); + setMetadata(); } @Override public void onLoadFailed(@Nullable Drawable error) { getExo().setDefaultArtwork(error); getIjk().setDefaultArtwork(error); + setMetadata(); } @Override @@ -628,6 +632,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick break; case Player.STATE_READY: resetToggle(); + setMetadata(); hideProgress(); mPlayers.reset(); setSpeedVisible(); @@ -649,6 +654,17 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick mBinding.control.video.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_VIDEO) ? View.VISIBLE : View.GONE); } + private void setMetadata() { + String title = mChannel == null ? "" : mChannel.getName(); + String artist = mChannel == null ? "" : mChannel.getData().getEpg(); + 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, getIjk().getDefaultArtwork()); + builder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, mPlayers.getDuration()); + mPlayers.setMetadata(builder.build()); + } + @Subscribe(threadMode = ThreadMode.MAIN) public void onErrorEvent(ErrorEvent event) { if (mPlayers.addRetry() > event.getRetry()) checkError(event); 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 b9253f6cc..9e98c2067 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 @@ -6,6 +6,7 @@ import android.app.Activity; import android.content.Intent; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.support.v4.media.MediaMetadataCompat; import android.text.Html; import android.text.SpannableString; import android.text.Spanned; @@ -453,6 +454,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mViewModel.playerContent(getKey(), flag.getFlag(), episode.getUrl()); updateHistory(episode, replay); showProgress(); + setMetadata(); hidePreview(); hideCenter(); } @@ -969,6 +971,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List getExo().setDefaultArtwork(resource); getIjk().setDefaultArtwork(resource); showPreview(resource); + setMetadata(); } @Override @@ -977,6 +980,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List getIjk().setDefaultArtwork(error); hideProgress(); hidePreview(); + setMetadata(); } @Override @@ -1111,6 +1115,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List break; case Player.STATE_READY: stopSearch(); + setMetadata(); resetToggle(); hideProgress(); mPlayers.reset(); @@ -1151,6 +1156,18 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } } + private void setMetadata() { + 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(); + builder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, title); + builder.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist); + builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, getIjk().getDefaultArtwork()); + builder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, mPlayers.getDuration()); + mPlayers.setMetadata(builder.build()); + } + @Subscribe(threadMode = ThreadMode.MAIN) public void onErrorEvent(ErrorEvent event) { if (mPlayers.addRetry() > event.getRetry()) checkError(event);