房间播放背景音乐增加单曲循环和全部循环切换功能
This commit is contained in:
@@ -252,7 +252,7 @@ public class RtcEngineManager extends BaseEngine {
|
||||
@Override
|
||||
public int getAudioMixingCurrentPosition() {
|
||||
|
||||
if (mRtcEngine != null) {
|
||||
if (mRtcEngine == null) {
|
||||
return -1;
|
||||
}
|
||||
int currentPosition = mRtcEngine.getAudioMixingCurrentPosition();
|
||||
|
@@ -644,7 +644,7 @@ public class TRTCEngineAdapter extends BaseAdapterImpl {
|
||||
|
||||
@Override
|
||||
public void onAudioEffectFinished(int effectId, int code) {
|
||||
TRTCEngineAdapterListener.onAudioEffectFinished(effectId);
|
||||
// TRTCEngineAdapterListener.onAudioEffectFinished(effectId);
|
||||
}
|
||||
};
|
||||
private TRTCEffectManager sTRTCEffectManager;
|
||||
@@ -715,12 +715,10 @@ public class TRTCEngineAdapter extends BaseAdapterImpl {
|
||||
sTRTCEffectManager.setMusicObserver(new TXAudioEffectManager.TXMusicPlayObserver() {
|
||||
@Override
|
||||
public void onStart(int id, int errCode) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayProgress(int id, long curPtsMS, long durationMS) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1357,12 +1355,9 @@ public class TRTCEngineAdapter extends BaseAdapterImpl {
|
||||
}
|
||||
curBgmcycle = 1;
|
||||
totalBgmcycle = cycle;
|
||||
trtcCloud.getAudioEffectManager().stopPlayMusic(mBGMId);
|
||||
sTRTCEffectManager.stopEffect(mBGMId);
|
||||
mBGMId++;
|
||||
final TXAudioEffectManager.AudioMusicParam audioMusicParam = new TXAudioEffectManager.AudioMusicParam(mBGMId, filePath);
|
||||
audioMusicParam.publish = true; //上行
|
||||
audioMusicParam.loopCount = cycle;
|
||||
trtcCloud.getAudioEffectManager().startPlayMusic(audioMusicParam);
|
||||
sTRTCEffectManager.playEffect(mBGMId,filePath,0,0,0,0,true);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1376,7 +1371,7 @@ public class TRTCEngineAdapter extends BaseAdapterImpl {
|
||||
mBgmFilePath = "";
|
||||
bgmisLoop = false;
|
||||
totalBgmcycle = 0;
|
||||
trtcCloud.getAudioEffectManager().stopPlayMusic(mBGMId);
|
||||
sTRTCEffectManager.stopEffect(mBGMId);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1385,7 +1380,7 @@ public class TRTCEngineAdapter extends BaseAdapterImpl {
|
||||
if (!enableAudioFlag) {
|
||||
return -1;
|
||||
}
|
||||
trtcCloud.getAudioEffectManager().pausePlayMusic(mBGMId);
|
||||
sTRTCEffectManager.pauseEffect(mBGMId);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1394,7 +1389,7 @@ public class TRTCEngineAdapter extends BaseAdapterImpl {
|
||||
if (!enableAudioFlag) {
|
||||
return -1;
|
||||
}
|
||||
trtcCloud.getAudioEffectManager().resumePlayMusic(mBGMId);
|
||||
sTRTCEffectManager.resumeEffect(mBGMId);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1403,7 +1398,7 @@ public class TRTCEngineAdapter extends BaseAdapterImpl {
|
||||
if (!enableAudioFlag) {
|
||||
return -1;
|
||||
}
|
||||
trtcCloud.getAudioEffectManager().setAllMusicVolume(volume);
|
||||
sTRTCEffectManager.setEffectsVolume(volume);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1412,7 +1407,7 @@ public class TRTCEngineAdapter extends BaseAdapterImpl {
|
||||
if (!enableAudioFlag) {
|
||||
return -1;
|
||||
}
|
||||
trtcCloud.getAudioEffectManager().setMusicPlayoutVolume(mBGMId, volume);
|
||||
sTRTCEffectManager.setVolumeOfEffect(mBGMId,volume);
|
||||
mMusicPlayoutVolume = volume;
|
||||
return 0;
|
||||
}
|
||||
@@ -1422,7 +1417,7 @@ public class TRTCEngineAdapter extends BaseAdapterImpl {
|
||||
if (!enableAudioFlag) {
|
||||
return -1;
|
||||
}
|
||||
trtcCloud.getAudioEffectManager().setMusicPublishVolume(mBGMId, volume);
|
||||
sTRTCEffectManager.setVolumeOfEffect(mBGMId,volume);
|
||||
mMusicPublishVolume = volume;
|
||||
return 0;
|
||||
}
|
||||
|
@@ -230,14 +230,14 @@ public class TRtcEngineEventHandler implements IRTCEngineHandler {
|
||||
|
||||
@Override
|
||||
public void onAudioMixingFinished() {//伴奏播放已结束回调
|
||||
IMNetEaseManager.get().getChatRoomEventObservable().onNext(
|
||||
new RoomEvent().setEvent(RoomEvent.METHOD_ON_AUDIO_MIXING_FINISHED)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAudioEffectFinished(int soundId) {
|
||||
|
||||
IMNetEaseManager.get().getChatRoomEventObservable().onNext(
|
||||
new RoomEvent().setEvent(RoomEvent.METHOD_ON_AUDIO_MIXING_FINISHED)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -208,7 +208,7 @@ public class TRtcEngineManager extends BaseEngine {
|
||||
result = mRtcEngine.resumeAudioMixing();
|
||||
} else {
|
||||
LocalMusicBean current = PlayerModel.get().getCurrent();
|
||||
startAudioMixing(current.getLocalUri(), false, 1);
|
||||
startAudioMixing(current.getLocalUri(), false, 0);
|
||||
}
|
||||
|
||||
isMusicPlaying = true;
|
||||
@@ -248,7 +248,7 @@ public class TRtcEngineManager extends BaseEngine {
|
||||
@Override
|
||||
public int getAudioMixingCurrentPosition() {
|
||||
|
||||
if (mRtcEngine != null) {
|
||||
if (mRtcEngine == null) {
|
||||
return -1;
|
||||
}
|
||||
int currentPosition = mRtcEngine.getAudioMixingCurrentPosition();
|
||||
|
@@ -61,6 +61,7 @@ public class DemoCache {
|
||||
private static final String KEY_FILTRATE_TYPE = "FilTrateType";
|
||||
private static final String KEY_RED_PACKAGE = "RedPackage";
|
||||
private static final String KEY_AT_MSG_UUID = "AtMsgUuid";
|
||||
private static final String KEY_BGM_SINGLE_CYCLE = "key_bgm_single_cycle";
|
||||
/**
|
||||
* 保存网页域名
|
||||
*/
|
||||
@@ -338,5 +339,13 @@ public class DemoCache {
|
||||
return SettingsPref.instance(BasicConfig.INSTANCE.getAppContext()).getBoolean(KEY_BOX_MESSAGE + AuthModel.get().getCurrentUid(), true);
|
||||
}
|
||||
|
||||
public static void saveBgmSingleCycle(boolean value) {
|
||||
SettingsPref.instance(BasicConfig.INSTANCE.getAppContext()).putBoolean(KEY_BGM_SINGLE_CYCLE , value);
|
||||
}
|
||||
|
||||
public static Boolean readBgmSingleCycle() {
|
||||
return SettingsPref.instance(BasicConfig.INSTANCE.getAppContext()).getBoolean(KEY_BGM_SINGLE_CYCLE, false);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@ import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.yizhuan.xchat_android_core.DemoCache;
|
||||
import com.yizhuan.xchat_android_core.base.BaseModel;
|
||||
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
|
||||
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
|
||||
@@ -36,9 +37,9 @@ import io.realm.RealmResults;
|
||||
*/
|
||||
|
||||
public class PlayerModel extends BaseModel implements IPlayerModel {
|
||||
private final String AUDIO_SUFFIX_MP3 = ".mp3";
|
||||
private boolean isRefresh;
|
||||
private List<LocalMusicBean> playerListMusicInfos;
|
||||
private final String AUDIO_SUFFIX_MP3 = ".mp3";
|
||||
private LocalMusicBean current;
|
||||
private List<LocalMusicBean> localMusicBeanList;
|
||||
private long currentLocalId;
|
||||
@@ -46,15 +47,7 @@ public class PlayerModel extends BaseModel implements IPlayerModel {
|
||||
private int volume;
|
||||
private int recordingVolume;
|
||||
private Disposable mDisposable;
|
||||
|
||||
|
||||
private static final class Helper {
|
||||
public static final PlayerModel INSTANCE = new PlayerModel();
|
||||
}
|
||||
|
||||
public static PlayerModel get() {
|
||||
return Helper.INSTANCE;
|
||||
}
|
||||
private PlayHandler handler = new PlayHandler(this);
|
||||
|
||||
private PlayerModel() {
|
||||
playerListMusicInfos = new ArrayList<>();
|
||||
@@ -85,6 +78,10 @@ public class PlayerModel extends BaseModel implements IPlayerModel {
|
||||
});
|
||||
}
|
||||
|
||||
public static PlayerModel get() {
|
||||
return Helper.INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRefresh() {
|
||||
return isRefresh;
|
||||
@@ -100,31 +97,6 @@ public class PlayerModel extends BaseModel implements IPlayerModel {
|
||||
return current;
|
||||
}
|
||||
|
||||
private PlayHandler handler = new PlayHandler(this);
|
||||
|
||||
static class PlayHandler extends Handler {
|
||||
private WeakReference<PlayerModel> mWeakReference;
|
||||
|
||||
PlayHandler(PlayerModel playerCore) {
|
||||
mWeakReference = new WeakReference<>(playerCore);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
super.handleMessage(msg);
|
||||
switch (msg.what) {
|
||||
case 0:
|
||||
PlayerModel playerCore = mWeakReference.get();
|
||||
if (playerCore != null)
|
||||
playerCore.playNext();
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LocalMusicBean> getPlayerListMusicInfos() {
|
||||
return playerListMusicInfos;
|
||||
@@ -167,7 +139,6 @@ public class PlayerModel extends BaseModel implements IPlayerModel {
|
||||
refreshLocalMusic(null);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addMusicToPlayerList(LocalMusicBean localMusicInfo) {
|
||||
PlayerDbModel.get().addToPlayerList(localMusicInfo.getLocalId());
|
||||
@@ -243,7 +214,7 @@ public class PlayerModel extends BaseModel implements IPlayerModel {
|
||||
}
|
||||
AudioEngineManager.get().adjustAudioMixingVolume(volume);
|
||||
AudioEngineManager.get().adjustRecordingSignalVolume(recordingVolume);
|
||||
int result = AudioEngineManager.get().startAudioMixing(localUri, false, 1);
|
||||
int result = AudioEngineManager.get().startAudioMixing(localUri, false, 0);
|
||||
if (result == -1) {
|
||||
return -1;
|
||||
}
|
||||
@@ -276,7 +247,7 @@ public class PlayerModel extends BaseModel implements IPlayerModel {
|
||||
|
||||
@Override
|
||||
public synchronized int playNext() {
|
||||
if(playerListMusicInfos==null || playerListMusicInfos.isEmpty()){
|
||||
if (playerListMusicInfos == null || playerListMusicInfos.isEmpty()) {
|
||||
return -3;
|
||||
}
|
||||
if (current == null) {
|
||||
@@ -350,4 +321,36 @@ public class PlayerModel extends BaseModel implements IPlayerModel {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static final class Helper {
|
||||
public static final PlayerModel INSTANCE = new PlayerModel();
|
||||
}
|
||||
|
||||
static class PlayHandler extends Handler {
|
||||
private WeakReference<PlayerModel> mWeakReference;
|
||||
|
||||
PlayHandler(PlayerModel playerCore) {
|
||||
mWeakReference = new WeakReference<>(playerCore);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
super.handleMessage(msg);
|
||||
switch (msg.what) {
|
||||
case 0:
|
||||
PlayerModel playerCore = mWeakReference.get();
|
||||
if (playerCore != null) {
|
||||
if (DemoCache.readBgmSingleCycle()) {
|
||||
playerCore.play(playerCore.getCurrent());
|
||||
} else {
|
||||
playerCore.playNext();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user