Android-FmlPlayer icon indicating copy to clipboard operation
Android-FmlPlayer copied to clipboard

循环播放

Open xadlovezy opened this issue 7 years ago • 7 comments

请问如何实现音频的循环播放啊?setLooping我设置了没有作用

xadlovezy avatar Sep 22 '17 04:09 xadlovezy

@xadlovezy 什么音频?能提供Log么

ViTess avatar Sep 25 '17 06:09 ViTess

@ViTess 就是demo中的sound4.ogg,我设置了 fmlPlayer.setLooping(true);但是就只播放一遍

xadlovezy avatar Oct 10 '17 03:10 xadlovezy

image

xadlovezy avatar Oct 10 '17 04:10 xadlovezy

同样的问题,demo里面的mp3,设置了fmlPlayer.setLooping(true),但只播放一遍。

WiiliamChik avatar Oct 12 '17 11:10 WiiliamChik

设置了fmlPlayer.setLooping(true)后,int error = BASS.BASS_ErrorGetCode();的error值是5。

<string name="error_5">Invalid Handle</string>

这个错误看得不是很懂,望解释。

WiiliamChik avatar Oct 12 '17 11:10 WiiliamChik

@xadlovezy @WiiliamChik 这是之前加了网络播放的功能后,代码没有调整好的缘故。BASS库创建每一个播放流,都会为其分配一个int类型的句柄,然后所有操作都基于该句柄。目前FmlPlayer内只在其调用prepare后才生成唯一的句柄,而在demo中setLooping在prepare之前,所以才提示“Invalid Handle”,即句柄无效、找不到句柄。

解决方法是,调用prepare后再调用setLooping,或者在FmlPlayer的代码内,找到setSync,将内部的

        if (mDataParam != null && mDataParam.fileType == DataParam.FILE_TYPE_URL) {
            setLooping(isLoop);
            setVolume(mVolume);
            setPanning(mPan);
        }

改为:

        if (mDataParam != null /*&& mDataParam.fileType == DataParam.FILE_TYPE_URL*/) {
            setLooping(isLoop);
            setVolume(mVolume);
            setPanning(mPan);
        }

同时在demo的OnCompletionListener里将player给release了,可以加上是否设置了loop来避免release

ViTess avatar Oct 13 '17 08:10 ViTess

@ViTess 谢谢你的答复,现在ok了。

WiiliamChik avatar Oct 13 '17 10:10 WiiliamChik