Android用mediaPlayer.prepare()报错

本文探讨了MediaPlayer在Android中出现java.lang.IllegalStateException异常的问题,并分享了一种通过在prepare方法前调用reset方法来减少错误发生频率的方法。

如有错误欢迎指正
     Caused by: java.lang.IllegalStateException
        at android.media.MediaPlayer._prepare(Native Method)
        at android.media.MediaPlayer.prepare(MediaPlayer.java:1274)

        注意mediaplayer的状态,在prepare前加了一句reset,报错的情况减少了很多

 

package com.weixxkjsd.singkingcgzw.fragment.Adapter; import android.content.Context; import android.graphics.Color; import android.media.MediaPlayer; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.hfd.common.util.DensityUtil; import com.hw.lrcviewlib.LrcDataBuilder; import com.hw.lrcviewlib.LrcRow; import com.hw.lrcviewlib.LrcView; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout; import com.weixxkjsd.singkingcgzw.R; import com.weixxkjsd.singkingcgzw.bean.SongBean; import java.util.List; public class MusicPagerAdapter extends RecyclerView.Adapter<MusicPagerAdapter.MusicViewHolder> { private Context context; private List<SongBean> musicList; List<LrcRow> lrcRows; private MediaPlayer mediaPlayer; public MusicPagerAdapter(Context context, List<SongBean> musicList) { this.context = context; this.musicList = musicList; } @NonNull @Override public MusicViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_music, parent, false); return new MusicViewHolder(view); } @Override public void onBindViewHolder(@NonNull MusicViewHolder holder, int position) { SongBean songBean = musicList.get(position); lrcRows = new LrcDataBuilder().BuiltFromAssets(context, songBean.getLrcPath()); holder.lyricView.getLrcSetting() .setTimeTextSize(40)//时间字体大小 .setSelectLineColor(Color.parseColor("#ff0000"))//选中线颜色 .setSelectLineTextSize(25)//选中线大小 .setNormalRowColor(Color.parseColor("#919191")) .setHeightRowColor(Color.parseColor("#ff0000"))//高亮字体颜色 .setNormalRowTextSize(DensityUtil.sp2px(context, 17))//正常行字体大小 .setHeightLightRowTextSize(DensityUtil.sp2px(context, 17))//高亮行字体大小 .setTrySelectRowTextSize(DensityUtil.sp2px(context, 17))//尝试选中行字体大小 .setTimeTextColor(Color.parseColor("#ff0000"))//时间字体颜色 .setTrySelectRowColor(Color.parseColor("#ff0000"));//尝试选中字体颜色 holder.lyricView.commitLrcSettings(); holder.lyricView.setLrcData(lrcRows); if (mediaPlayer != null) { mediaPlayer.stop(); mediaPlayer.release(); } mediaPlayer = MediaPlayer.create(context, songBean.getSongFilePath()); mediaPlayer.start(); } @Override public int getItemCount() { return musicList.size(); } public static class MusicViewHolder extends RecyclerView.ViewHolder { LrcView lyricView; QMUIRoundLinearLayout qmuiRoundLinearLayout; public MusicViewHolder(@NonNull View itemView) { super(itemView); lyricView = itemView.findViewById(R.id.lyricView); qmuiRoundLinearLayout = itemView.findViewById(R.id.qmButton_start); } } }如上代码create方法传String类型报错还可以用哪个方法传路径
最新发布
11-13
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好人不心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值