gpt4 book ai didi

android - 通过单击项目 View 并在 Android 应用程序中停止正在运行的文件来播放 MP3 音频文件

转载 作者:行者123 更新时间:2023-11-30 00:41:35 25 4
gpt4 key购买 nike

我想通过点击 Item view 来播放音频文件(MP3),但是我希望上一个文件在我点击另一个文件时自动停止等等问题。

 public ViewHolder(View itemView) {
super(itemView);
itemImage =(ImageView)itemView.findViewById(R.id.item_image);
itemTitle =(TextView)itemView.findViewById(R.id.item_title);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
stopPlaying();
mp = MediaPlayer.create(v.getContext(), sounds[position]);
mp.start();
}
});
}
private void stopPlaying() {
if (mp != null&&mp.isPlaying()) {
mp.stop();
mp.release();
mp = null;
}
}

播放另一个文件时音频文件仍在运行。

最佳答案

嗯,根据例如MVP模式,我建议您将所有声音播放逻辑移出 ViewHolder。最简单的解决方案是创建监听器,传递给适配器,适配器将通知某种管理器:

public interface PlayerListener {
void soundChanged(Object sound);
}

你可以像这样创建适配器(无论你的声音对象是什么)

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
(...)
Object[] sounds;
PlayerListener playerListener;

public Adapter(Object[] sounds, PlayerListener playerListener) {
this.sounds = sounds;
this.playerListener = playerListener;
}

@Override
public void onBindViewHolder(ViewHolderholder, int position) {
holder.bind(playerListener, (...) );
}

public ViewHolder(View itemView) {

public void bind(playerListener, (...)) {
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
soundChanged(sounds[position]);
}
}
}
}
}

当然,在创建 Adapter 对象时,您必须传递实现 PlayerListener 的对象的引用。该对象只需存储对当前 MediaPlayer 对象的引用即可轻松处理声音切换。

public class SoundPlayer implements PlayerListener {

MediaPlayer currentMediaPlayer;

@Override
public void soundChanged(Object sound) {
stopPlaying();
currentMediaPlayer= MediaPlayer.create(context, sound);
currentMediaPlayer.start();
}

private stopPlaying() {
if (currentMediaPlayer!= null && currentMediaPlayer.isPlaying()) {
currentMediaPlayer.stop();
currentMediaPlayer.release();
currentMediaPlayer= null;
}
}
}

希望对您有所帮助! :)

关于android - 通过单击项目 View 并在 Android 应用程序中停止正在运行的文件来播放 MP3 音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42486254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com