diff --git a/app/src/main/java/com/hi/music/player/media3/MyMediaController.java b/app/src/main/java/com/hi/music/player/media3/MyMediaControllerManager.java similarity index 56% rename from app/src/main/java/com/hi/music/player/media3/MyMediaController.java rename to app/src/main/java/com/hi/music/player/media3/MyMediaControllerManager.java index e1fb097..3aa5e9c 100644 --- a/app/src/main/java/com/hi/music/player/media3/MyMediaController.java +++ b/app/src/main/java/com/hi/music/player/media3/MyMediaControllerManager.java @@ -3,6 +3,7 @@ package com.hi.music.player.media3; import android.content.ComponentName; import androidx.media3.common.MediaItem; +import androidx.media3.common.MediaMetadata; import androidx.media3.session.MediaController; import androidx.media3.session.SessionToken; @@ -10,29 +11,30 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import com.hi.music.player.MusicApplication; import com.hi.music.player.helper.CommonUtils; +import com.hi.music.player.javabean.response.ResponsePlay; import com.hi.music.player.network.RetrofitManager; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; -public class MyMediaController { +public class MyMediaControllerManager { - private static volatile MyMediaController MyMediaControllerInstance; + private static volatile MyMediaControllerManager myMediaControllerManagerInstance; private MediaController mediaController; - public static MyMediaController getInstance() { - if (MyMediaControllerInstance == null) { + public static MyMediaControllerManager getInstance() { + if (myMediaControllerManagerInstance == null) { synchronized (RetrofitManager.class) { - if (MyMediaControllerInstance == null) { - MyMediaControllerInstance = new MyMediaController(); + if (myMediaControllerManagerInstance == null) { + myMediaControllerManagerInstance = new MyMediaControllerManager(); } } } - return MyMediaControllerInstance; + return myMediaControllerManagerInstance; } - private void init(){ + public void init(){ SessionToken sessionToken = new SessionToken(MusicApplication.myApplication, new ComponentName(MusicApplication.myApplication, PlaybackService.class)); ListenableFuture controllerFuture = @@ -50,7 +52,28 @@ public class MyMediaController { }, MoreExecutors.directExecutor()); + + } + + public void addMusicPlay(ResponsePlay responsePlay){ List mediaItems = new ArrayList<>(); + MediaItem.Builder builder = new MediaItem.Builder(); + builder.setUri(responsePlay.getVideoId()); + MediaMetadata.Builder MediaMetadata_builder = new MediaMetadata.Builder(); +// MediaMetadata_builder.setMediaType(); +// MediaMetadata_builder.setAlbumTitle(); +// MediaMetadata_builder.setArtist(); +// MediaMetadata_builder.setDurationMs(); +// MediaMetadata_builder.setTitle(); +// MediaMetadata_builder.setRecordingYear(); + builder.setMediaMetadata(MediaMetadata_builder.build()); + + mediaItems.add(builder.build()); mediaController.addMediaItems(mediaItems); + mediaController.prepare(); + } + + public void play(){ + mediaController.play(); } } diff --git a/app/src/main/java/com/hi/music/player/ui/activity/A_HomeActivity.java b/app/src/main/java/com/hi/music/player/ui/activity/A_HomeActivity.java index 9022435..34e7d19 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/A_HomeActivity.java +++ b/app/src/main/java/com/hi/music/player/ui/activity/A_HomeActivity.java @@ -2,6 +2,7 @@ package com.hi.music.player.ui.activity; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.View; import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayoutMediator; @@ -41,6 +42,11 @@ public class A_HomeActivity extends BaseActivity { } + @Override + protected void onInitClick() { + + } + @Override public boolean isFullScreen() { return true; @@ -95,5 +101,9 @@ public class A_HomeActivity extends BaseActivity { tabBinding.homeIcon.setImageResource(isSelected ? selectedIcons[position] : defaultIcons[position]); } - } + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/hi/music/player/ui/activity/A_PlayActivity.java b/app/src/main/java/com/hi/music/player/ui/activity/A_PlayActivity.java index 960451b..c7ae3b4 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/A_PlayActivity.java +++ b/app/src/main/java/com/hi/music/player/ui/activity/A_PlayActivity.java @@ -1,5 +1,7 @@ package com.hi.music.player.ui.activity; +import android.view.View; + import com.hi.music.player.databinding.ActivityAplayBinding; public class A_PlayActivity extends BaseActivity { @@ -15,6 +17,11 @@ public class A_PlayActivity extends BaseActivity { } + @Override + protected void onInitClick() { + + } + @Override public boolean isFullScreen() { return true; @@ -24,4 +31,9 @@ public class A_PlayActivity extends BaseActivity { public boolean statusBarLight() { return false; } + + @Override + public void onClick(View v) { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/hi/music/player/ui/activity/A_SettingActivity.java b/app/src/main/java/com/hi/music/player/ui/activity/A_SettingActivity.java index d6e7662..8a7f124 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/A_SettingActivity.java +++ b/app/src/main/java/com/hi/music/player/ui/activity/A_SettingActivity.java @@ -1,5 +1,7 @@ package com.hi.music.player.ui.activity; +import android.view.View; + import com.hi.music.player.databinding.ActivityAsettingBinding; public class A_SettingActivity extends BaseActivity { @@ -15,6 +17,11 @@ public class A_SettingActivity extends BaseActivity { } + @Override + protected void onInitClick() { + + } + @Override public boolean isFullScreen() { return true; @@ -24,4 +31,9 @@ public class A_SettingActivity extends BaseActivity { public boolean statusBarLight() { return false; } + + @Override + public void onClick(View v) { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/hi/music/player/ui/activity/A_SplashActivity.java b/app/src/main/java/com/hi/music/player/ui/activity/A_SplashActivity.java index 3a5d1a3..d60e1cc 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/A_SplashActivity.java +++ b/app/src/main/java/com/hi/music/player/ui/activity/A_SplashActivity.java @@ -2,6 +2,7 @@ package com.hi.music.player.ui.activity; import android.content.Intent; import android.os.CountDownTimer; +import android.view.View; import com.hi.music.player.databinding.ActivityAsplashBinding; @@ -23,6 +24,11 @@ public class A_SplashActivity extends BaseActivity { } + @Override + protected void onInitClick() { + + } + @Override public boolean isFullScreen() { return true; @@ -58,4 +64,9 @@ public class A_SplashActivity extends BaseActivity { countDownTimer.start(); } + + @Override + public void onClick(View v) { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/hi/music/player/ui/activity/BaseActivity.java b/app/src/main/java/com/hi/music/player/ui/activity/BaseActivity.java index 36c8785..649fc7a 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/BaseActivity.java +++ b/app/src/main/java/com/hi/music/player/ui/activity/BaseActivity.java @@ -14,7 +14,7 @@ import androidx.viewbinding.ViewBinding; import com.hi.music.player.helper.ViewModelScope; -public abstract class BaseActivity extends AppCompatActivity { +public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener{ private final ViewModelScope mViewModelScope = new ViewModelScope(); @@ -38,11 +38,14 @@ public abstract class BaseActivity extends AppCompatActiv initFullScreen(); } onCreateInit(); + onInitClick(); } protected abstract T getViewBinding(); protected abstract void onCreateInit(); + protected abstract void onInitClick(); + public abstract boolean isFullScreen(); public abstract boolean statusBarLight(); diff --git a/app/src/main/java/com/hi/music/player/ui/activity/HomeActivity.java b/app/src/main/java/com/hi/music/player/ui/activity/HomeActivity.java index 9ef22f8..e7a08b4 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/HomeActivity.java +++ b/app/src/main/java/com/hi/music/player/ui/activity/HomeActivity.java @@ -37,6 +37,11 @@ public class HomeActivity extends BaseActivity { initView(); // 可以在这里初始化视图 } + @Override + protected void onInitClick() { + + } + @Override public boolean isFullScreen() { return true; @@ -97,7 +102,9 @@ public class HomeActivity extends BaseActivity { } + @Override + public void onClick(View v) { - + } } diff --git a/app/src/main/java/com/hi/music/player/ui/activity/MainActivity.java b/app/src/main/java/com/hi/music/player/ui/activity/MainActivity.java index bb5ebfb..8c26d04 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/MainActivity.java +++ b/app/src/main/java/com/hi/music/player/ui/activity/MainActivity.java @@ -36,6 +36,11 @@ public class MainActivity extends BaseActivity { } + @Override + protected void onInitClick() { + + } + @Override public boolean isFullScreen() { return false; @@ -45,4 +50,9 @@ public class MainActivity extends BaseActivity { public boolean statusBarLight() { return false; } + + @Override + public void onClick(View v) { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/hi/music/player/ui/activity/PlayActivity.java b/app/src/main/java/com/hi/music/player/ui/activity/PlayActivity.java index 4e45a15..b4c6408 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/PlayActivity.java +++ b/app/src/main/java/com/hi/music/player/ui/activity/PlayActivity.java @@ -1,14 +1,12 @@ package com.hi.music.player.ui.activity; -import android.content.ComponentName; import android.content.Intent; import android.graphics.drawable.Drawable; +import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Observer; -import androidx.media3.session.MediaController; -import androidx.media3.session.SessionToken; import com.bumptech.glide.Glide; import com.bumptech.glide.load.DataSource; @@ -17,8 +15,6 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; -import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.MoreExecutors; import com.hi.music.player.MusicApplication; import com.hi.music.player.R; import com.hi.music.player.databinding.ActivityPlayBinding; @@ -26,17 +22,17 @@ import com.hi.music.player.helper.CommonUtils; import com.hi.music.player.helper.MyValue; import com.hi.music.player.javabean.response.ResponsePlay; import com.hi.music.player.javabean.response.child.ResponseSingle; -import com.hi.music.player.media3.PlaybackService; +import com.hi.music.player.media3.MyMediaControllerManager; import com.hi.music.player.ui.activity.viewmodel.VMPlay; import java.util.List; -import java.util.concurrent.ExecutionException; public class PlayActivity extends BaseActivity { private ResponseSingle responseSingle; private VMPlay vmPlay; + private MyMediaControllerManager mediaController; @Override protected ActivityPlayBinding getViewBinding() { @@ -65,10 +61,19 @@ public class PlayActivity extends BaseActivity { } + @Override + protected void onInitClick() { + vb.btnPlay.setOnClickListener(this::onClick); + } + private void loadInfo(ResponsePlay data) { vb.tvSongName.setText(data.getSongTitle()); vb.tvSingerName.setText(data.getSingerName()); vb.tvDuration.setText(data.getDuration()); + + mediaController = MyMediaControllerManager.getInstance(); + mediaController.init(); + mediaController.addMusicPlay(data); } private void loadCovert(String url) { @@ -109,4 +114,12 @@ public class PlayActivity extends BaseActivity { public boolean statusBarLight() { return false; } + + @Override + public void onClick(View v) { + if(v.equals(vb.btnPlay)){ + mediaController.play(); + } + + } } \ No newline at end of file