Closed leeyushi closed 4 years ago
那可能是你用的有问题
那可能是你用的有问题
你还有在维护这个东西啊,看你都不回复别人
你这个是异步加载吗 ,我调用了mPlayerControl.playMusic();这个后,紧接着再去判断是否正在播放,返回的就是false
所以我在mPlayerControl.skipToPrevious() 切换下一首歌曲的时候,再去获取当前歌曲播放的信息,返回的就是Null,可是明明有在播放啊,你说的是有可能为Null,需要做判断,但这不是Null的问题,而是返回的数据不准确的问题
贴代码看看
mPlayerControl = StarrySky.with();
//因为是否有上一首获取到的不准确,所以我暂时用这种办法获取的
if (AudioUtils.getInstance().mPlayPosition != 0) {
//切换上一首歌曲,音频播放会成功切换
mPlayerControl.skipToPrevious();
//因为获取到的播放索引也不准确,所以我在上一首和下一首做了一个标记索引,但暂时还没用
AudioUtils.getInstance().mPlayPosition--;
//更新歌曲名字
setSongName();
} else {
ToastUtils.showLongToast(mActivity, "没有上一首了");
}
private void setSongName() {
//是否正在播放,如果第一次点击播放进来的时候,返回的是false,如果是切换下一首或者上一首,返回true
if (mPlayerControl.isPlaying())
//第一次切换上一首或者下一首的时候,音频会切换成功,但是mPlayerControl.getNowPlayingSongInfo()返回的为Null
getSongNameView().setText(mPlayerControl.getNowPlayingSongInfo().getSongName());
}
//这是我添加的播放列表
public List<SongInfo> getPlayList() {
List<SongInfo> songInfos = new ArrayList<>();
List<CommonBean> commonBeans = mCourseParticularBean.getChapterList();
for (int i = 0; i < commonBeans.size(); i++) {
SongInfo songInfo = new SongInfo();
songInfo.setSongId((i + 1) + "");
songInfo.setSongName(commonBeans.get(i).getName());
songInfo.setSongUrl(commonBeans.get(i).getUrl());
songInfos.add(songInfo);
}
return songInfos;
}
点击播放的逻辑 //如果是播放的View if (v.getId() == getPlayView().getId()) { //设置播放和暂停的图标 if (!ImageUtils.setCheckImage(mActivity, getPlayView(), getPlayDrawable(), getPauseDrawable())) { //播放 mPlayerControl.playMusic(); //设置播放名称 setSongName(); } else { //暂停播放 mPlayerControl.pauseMusic(); } //更新歌曲的总时长 getCountProgress().setText(AudioUtils.getInstance().formatMusicTime(mPlayerControl.getDuration())); }
你这个真的是很坑啊,单曲播放,结束后也不会有回调
你用法有问题,看看demo是怎么用的吧
获取当前播放歌曲信息,是否有下一首,是否有上一首,当前播放索引,返回的都是错误信息