BaseActivity 增加点击事件实现

This commit is contained in:
litingting 2024-09-23 14:23:21 +08:00
parent 5d2621f17d
commit 985cdbf771
9 changed files with 119 additions and 18 deletions

View File

@ -3,6 +3,7 @@ package com.hi.music.player.media3;
import android.content.ComponentName; import android.content.ComponentName;
import androidx.media3.common.MediaItem; import androidx.media3.common.MediaItem;
import androidx.media3.common.MediaMetadata;
import androidx.media3.session.MediaController; import androidx.media3.session.MediaController;
import androidx.media3.session.SessionToken; 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.google.common.util.concurrent.MoreExecutors;
import com.hi.music.player.MusicApplication; import com.hi.music.player.MusicApplication;
import com.hi.music.player.helper.CommonUtils; import com.hi.music.player.helper.CommonUtils;
import com.hi.music.player.javabean.response.ResponsePlay;
import com.hi.music.player.network.RetrofitManager; import com.hi.music.player.network.RetrofitManager;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
public class MyMediaController { public class MyMediaControllerManager {
private static volatile MyMediaController MyMediaControllerInstance; private static volatile MyMediaControllerManager myMediaControllerManagerInstance;
private MediaController mediaController; private MediaController mediaController;
public static MyMediaController getInstance() { public static MyMediaControllerManager getInstance() {
if (MyMediaControllerInstance == null) { if (myMediaControllerManagerInstance == null) {
synchronized (RetrofitManager.class) { synchronized (RetrofitManager.class) {
if (MyMediaControllerInstance == null) { if (myMediaControllerManagerInstance == null) {
MyMediaControllerInstance = new MyMediaController(); myMediaControllerManagerInstance = new MyMediaControllerManager();
} }
} }
} }
return MyMediaControllerInstance; return myMediaControllerManagerInstance;
} }
private void init(){ public void init(){
SessionToken sessionToken = SessionToken sessionToken =
new SessionToken(MusicApplication.myApplication, new ComponentName(MusicApplication.myApplication, PlaybackService.class)); new SessionToken(MusicApplication.myApplication, new ComponentName(MusicApplication.myApplication, PlaybackService.class));
ListenableFuture<MediaController> controllerFuture = ListenableFuture<MediaController> controllerFuture =
@ -50,7 +52,28 @@ public class MyMediaController {
}, MoreExecutors.directExecutor()); }, MoreExecutors.directExecutor());
}
public void addMusicPlay(ResponsePlay responsePlay){
List<MediaItem> mediaItems = new ArrayList<>(); List<MediaItem> 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.addMediaItems(mediaItems);
mediaController.prepare();
}
public void play(){
mediaController.play();
} }
} }

View File

@ -2,6 +2,7 @@ package com.hi.music.player.ui.activity;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View;
import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator; import com.google.android.material.tabs.TabLayoutMediator;
@ -41,6 +42,11 @@ public class A_HomeActivity extends BaseActivity<ActivityAhomeBinding> {
} }
@Override
protected void onInitClick() {
}
@Override @Override
public boolean isFullScreen() { public boolean isFullScreen() {
return true; return true;
@ -95,5 +101,9 @@ public class A_HomeActivity extends BaseActivity<ActivityAhomeBinding> {
tabBinding.homeIcon.setImageResource(isSelected ? selectedIcons[position] : defaultIcons[position]); tabBinding.homeIcon.setImageResource(isSelected ? selectedIcons[position] : defaultIcons[position]);
} }
} @Override
public void onClick(View v) {
}
}

View File

@ -1,5 +1,7 @@
package com.hi.music.player.ui.activity; package com.hi.music.player.ui.activity;
import android.view.View;
import com.hi.music.player.databinding.ActivityAplayBinding; import com.hi.music.player.databinding.ActivityAplayBinding;
public class A_PlayActivity extends BaseActivity<ActivityAplayBinding> { public class A_PlayActivity extends BaseActivity<ActivityAplayBinding> {
@ -15,6 +17,11 @@ public class A_PlayActivity extends BaseActivity<ActivityAplayBinding> {
} }
@Override
protected void onInitClick() {
}
@Override @Override
public boolean isFullScreen() { public boolean isFullScreen() {
return true; return true;
@ -24,4 +31,9 @@ public class A_PlayActivity extends BaseActivity<ActivityAplayBinding> {
public boolean statusBarLight() { public boolean statusBarLight() {
return false; return false;
} }
@Override
public void onClick(View v) {
}
} }

View File

@ -1,5 +1,7 @@
package com.hi.music.player.ui.activity; package com.hi.music.player.ui.activity;
import android.view.View;
import com.hi.music.player.databinding.ActivityAsettingBinding; import com.hi.music.player.databinding.ActivityAsettingBinding;
public class A_SettingActivity extends BaseActivity<ActivityAsettingBinding> { public class A_SettingActivity extends BaseActivity<ActivityAsettingBinding> {
@ -15,6 +17,11 @@ public class A_SettingActivity extends BaseActivity<ActivityAsettingBinding> {
} }
@Override
protected void onInitClick() {
}
@Override @Override
public boolean isFullScreen() { public boolean isFullScreen() {
return true; return true;
@ -24,4 +31,9 @@ public class A_SettingActivity extends BaseActivity<ActivityAsettingBinding> {
public boolean statusBarLight() { public boolean statusBarLight() {
return false; return false;
} }
@Override
public void onClick(View v) {
}
} }

View File

@ -2,6 +2,7 @@ package com.hi.music.player.ui.activity;
import android.content.Intent; import android.content.Intent;
import android.os.CountDownTimer; import android.os.CountDownTimer;
import android.view.View;
import com.hi.music.player.databinding.ActivityAsplashBinding; import com.hi.music.player.databinding.ActivityAsplashBinding;
@ -23,6 +24,11 @@ public class A_SplashActivity extends BaseActivity<ActivityAsplashBinding> {
} }
@Override
protected void onInitClick() {
}
@Override @Override
public boolean isFullScreen() { public boolean isFullScreen() {
return true; return true;
@ -58,4 +64,9 @@ public class A_SplashActivity extends BaseActivity<ActivityAsplashBinding> {
countDownTimer.start(); countDownTimer.start();
} }
@Override
public void onClick(View v) {
}
} }

View File

@ -14,7 +14,7 @@ import androidx.viewbinding.ViewBinding;
import com.hi.music.player.helper.ViewModelScope; import com.hi.music.player.helper.ViewModelScope;
public abstract class BaseActivity<T extends ViewBinding> extends AppCompatActivity { public abstract class BaseActivity<T extends ViewBinding> extends AppCompatActivity implements View.OnClickListener{
private final ViewModelScope mViewModelScope = new ViewModelScope(); private final ViewModelScope mViewModelScope = new ViewModelScope();
@ -38,11 +38,14 @@ public abstract class BaseActivity<T extends ViewBinding> extends AppCompatActiv
initFullScreen(); initFullScreen();
} }
onCreateInit(); onCreateInit();
onInitClick();
} }
protected abstract T getViewBinding(); protected abstract T getViewBinding();
protected abstract void onCreateInit(); protected abstract void onCreateInit();
protected abstract void onInitClick();
public abstract boolean isFullScreen(); public abstract boolean isFullScreen();
public abstract boolean statusBarLight(); public abstract boolean statusBarLight();

View File

@ -37,6 +37,11 @@ public class HomeActivity extends BaseActivity<ActivityHomeBinding> {
initView(); // 可以在这里初始化视图 initView(); // 可以在这里初始化视图
} }
@Override
protected void onInitClick() {
}
@Override @Override
public boolean isFullScreen() { public boolean isFullScreen() {
return true; return true;
@ -97,7 +102,9 @@ public class HomeActivity extends BaseActivity<ActivityHomeBinding> {
} }
@Override
public void onClick(View v) {
}
} }

View File

@ -36,6 +36,11 @@ public class MainActivity extends BaseActivity<ActivityMainBinding> {
} }
@Override
protected void onInitClick() {
}
@Override @Override
public boolean isFullScreen() { public boolean isFullScreen() {
return false; return false;
@ -45,4 +50,9 @@ public class MainActivity extends BaseActivity<ActivityMainBinding> {
public boolean statusBarLight() { public boolean statusBarLight() {
return false; return false;
} }
@Override
public void onClick(View v) {
}
} }

View File

@ -1,14 +1,12 @@
package com.hi.music.player.ui.activity; package com.hi.music.player.ui.activity;
import android.content.ComponentName;
import android.content.Intent; import android.content.Intent;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.view.View;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.lifecycle.Observer; import androidx.lifecycle.Observer;
import androidx.media3.session.MediaController;
import androidx.media3.session.SessionToken;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.DataSource; 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.RequestListener;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target; 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.MusicApplication;
import com.hi.music.player.R; import com.hi.music.player.R;
import com.hi.music.player.databinding.ActivityPlayBinding; 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.helper.MyValue;
import com.hi.music.player.javabean.response.ResponsePlay; import com.hi.music.player.javabean.response.ResponsePlay;
import com.hi.music.player.javabean.response.child.ResponseSingle; 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 com.hi.music.player.ui.activity.viewmodel.VMPlay;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutionException;
public class PlayActivity extends BaseActivity<ActivityPlayBinding> { public class PlayActivity extends BaseActivity<ActivityPlayBinding> {
private ResponseSingle responseSingle; private ResponseSingle responseSingle;
private VMPlay vmPlay; private VMPlay vmPlay;
private MyMediaControllerManager mediaController;
@Override @Override
protected ActivityPlayBinding getViewBinding() { protected ActivityPlayBinding getViewBinding() {
@ -65,10 +61,19 @@ public class PlayActivity extends BaseActivity<ActivityPlayBinding> {
} }
@Override
protected void onInitClick() {
vb.btnPlay.setOnClickListener(this::onClick);
}
private void loadInfo(ResponsePlay data) { private void loadInfo(ResponsePlay data) {
vb.tvSongName.setText(data.getSongTitle()); vb.tvSongName.setText(data.getSongTitle());
vb.tvSingerName.setText(data.getSingerName()); vb.tvSingerName.setText(data.getSingerName());
vb.tvDuration.setText(data.getDuration()); vb.tvDuration.setText(data.getDuration());
mediaController = MyMediaControllerManager.getInstance();
mediaController.init();
mediaController.addMusicPlay(data);
} }
private void loadCovert(String url) { private void loadCovert(String url) {
@ -109,4 +114,12 @@ public class PlayActivity extends BaseActivity<ActivityPlayBinding> {
public boolean statusBarLight() { public boolean statusBarLight() {
return false; return false;
} }
@Override
public void onClick(View v) {
if(v.equals(vb.btnPlay)){
mediaController.play();
}
}
} }