EspoirX / StarrySky

🔥A Powerful and Streamline MusicLibrary(一个丰富的音乐播放封装库,支持多种音频格式,完美解决你的问题。)
https://github.com/EspoirX/StarrySky
MIT License
1.4k stars 211 forks source link

基本的功能都有Bug #143

Closed leeyushi closed 4 years ago

leeyushi commented 4 years ago

获取当前播放歌曲信息,是否有下一首,是否有上一首,当前播放索引,返回的都是错误信息

EspoirX commented 4 years ago

那可能是你用的有问题

leeyushi commented 4 years ago

那可能是你用的有问题

你还有在维护这个东西啊,看你都不回复别人

leeyushi commented 4 years ago

你这个是异步加载吗 ,我调用了mPlayerControl.playMusic();这个后,紧接着再去判断是否正在播放,返回的就是false

leeyushi commented 4 years ago

所以我在mPlayerControl.skipToPrevious() 切换下一首歌曲的时候,再去获取当前歌曲播放的信息,返回的就是Null,可是明明有在播放啊,你说的是有可能为Null,需要做判断,但这不是Null的问题,而是返回的数据不准确的问题

EspoirX commented 4 years ago

贴代码看看

leeyushi commented 4 years ago

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());
}
leeyushi commented 4 years ago
//这是我添加的播放列表
    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;
        }
leeyushi commented 4 years ago

点击播放的逻辑 //如果是播放的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())); }

leeyushi commented 4 years ago

你这个真的是很坑啊,单曲播放,结束后也不会有回调

EspoirX commented 4 years ago

你用法有问题,看看demo是怎么用的吧