feat : 麦 人声音乐 开关功能, 初次提交
This commit is contained in:
@@ -35,6 +35,7 @@ import com.chwl.app.star.StarFragment;
|
||||
import com.chwl.app.support.PreloadResourceViewModel;
|
||||
import com.chwl.app.ui.login.LoginPasswordActivity;
|
||||
import com.chwl.core.home.bean.MainTabInfo;
|
||||
import com.chwl.core.manager.AudioEngineManager;
|
||||
import com.chwl.core.settings.SettingsModel;
|
||||
import com.chwl.library.utils.JavaUtil;
|
||||
import com.netease.nim.uikit.StatusBarUtil;
|
||||
@@ -666,6 +667,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
|
||||
@Override
|
||||
public void exitRoom(RoomInfo roomInfo) {
|
||||
AudioEngineManager.get().setNotRecord(false);
|
||||
closeOpenRoomAnimation();
|
||||
DaemonService.stop(MainActivity.this);
|
||||
}
|
||||
|
@@ -9,7 +9,7 @@ public abstract class BottomViewListenerWrapper {
|
||||
|
||||
}
|
||||
|
||||
public void onOpenMicBtnClick() {
|
||||
public void onOpenMicBtnClick(int type) {
|
||||
|
||||
}
|
||||
|
||||
|
@@ -42,6 +42,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.chwl.app.notify.RoomNotifyManager;
|
||||
import com.chwl.app.ui.webview.baishun.BaiShunGameWebFragment;
|
||||
import com.chwl.app.ui.webview.baishun.IBaiShunGameListener;
|
||||
import com.chwl.core.manager.AudioEngineManager;
|
||||
import com.chwl.library.widget.SVGAView;
|
||||
import com.chwl.core.monsterhunting.bean.MonsterDataBean;
|
||||
import com.chwl.core.room.game.bean.BaiShunGameConfig;
|
||||
@@ -814,6 +815,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
public void exitRoom(RoomInfo currentRoomInfo) {
|
||||
if (currentRoomInfo != null && currentRoomInfo.getUid() == roomUid) {
|
||||
finish();
|
||||
AudioEngineManager.get().setNotRecord(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -83,6 +83,7 @@ import com.chwl.core.Constants
|
||||
import com.chwl.core.UriProvider
|
||||
import com.chwl.core.auth.AuthModel
|
||||
import com.chwl.core.bean.RoomMicInfo
|
||||
import com.chwl.core.contacts.MyConstant
|
||||
import com.chwl.core.gift.GiftModel
|
||||
import com.chwl.core.gift.bean.BoomMsgAnimBean
|
||||
import com.chwl.core.gift.bean.BoomMsgAwardList
|
||||
@@ -142,6 +143,7 @@ import com.chwl.library.utils.ListUtils
|
||||
import com.chwl.library.utils.ResUtil
|
||||
import com.chwl.library.utils.SingleToastUtil
|
||||
import com.chwl.library.utils.UIUtils
|
||||
import com.example.lib_utils.ktx.getString
|
||||
import com.google.gson.Gson
|
||||
import com.netease.nim.uikit.common.antispam.AntiSpamEvent
|
||||
import com.netease.nimlib.sdk.StatusCode
|
||||
@@ -389,6 +391,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
|
||||
openOrCloseGiftValue(true)
|
||||
updateView()
|
||||
updateMicBtn()
|
||||
AudioEngineManager.get().isNotRecord = false
|
||||
microView.setOnMicroItemClickListener(this)
|
||||
mDisposable = IMNetEaseManager.get().chatRoomEventObservable
|
||||
.subscribe { onReceiveRoomEvent(it) }
|
||||
@@ -1456,37 +1459,69 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
|
||||
* 底部按鈕點擊處理
|
||||
*/
|
||||
open inner class BaseRoomBottomViewWrapper : BottomViewListenerWrapper() {
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
override fun onOpenMicBtnClick() {
|
||||
override fun onOpenMicBtnClick(type : Int) {
|
||||
//todo do 关麦开麦
|
||||
val roomQueueInfo = AvRoomDataManager.get().getRoomQueueMemberInfoByAccount(AuthModel.get().currentUid.toString())
|
||||
if (roomQueueInfo?.mRoomMicInfo == null) return
|
||||
//先判斷麥上是否是開麥的
|
||||
if (!roomQueueInfo.mRoomMicInfo.isMicMute && !AudioEngineManager.get().isAudienceRole) {
|
||||
|
||||
if (!isHavingMicPermissions) {
|
||||
val rxPermissions = RxPermissions(this@BaseRoomFragment)
|
||||
rxPermissions.request(Manifest.permission.RECORD_AUDIO)
|
||||
.subscribe { aBoolean: Boolean ->
|
||||
if (aBoolean) {
|
||||
AudioEngineManager.get().isMute = !AudioEngineManager.get().isMute
|
||||
AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER)
|
||||
|
||||
if (type == MyConstant.MicType.open) {
|
||||
AudioEngineManager.get().isMute = false
|
||||
AudioEngineManager.get().isNotRecord = false
|
||||
// AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER)
|
||||
}else if (type == MyConstant.MicType.music) {
|
||||
AudioEngineManager.get().isMute = false
|
||||
// AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER)
|
||||
AudioEngineManager.get().isNotRecord = true
|
||||
}else if (type == MyConstant.MicType.close) {
|
||||
AudioEngineManager.get().isMute = true
|
||||
// AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_AUDIENCE)
|
||||
AudioEngineManager.get().isNotRecord = false
|
||||
}
|
||||
updateMicBtn()
|
||||
} else {
|
||||
toast("開啟權限後才能開麥")
|
||||
toast(R.string.ask_again.getString())
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
AudioEngineManager.get().isMute = !AudioEngineManager.get().isMute
|
||||
|
||||
if (type == MyConstant.MicType.open) {
|
||||
AudioEngineManager.get().isMute = false
|
||||
AudioEngineManager.get().isNotRecord = false
|
||||
// AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER)
|
||||
}else if (type == MyConstant.MicType.music) {
|
||||
AudioEngineManager.get().isMute = false
|
||||
// AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER)
|
||||
AudioEngineManager.get().isNotRecord = true
|
||||
}else if (type == MyConstant.MicType.close) {
|
||||
AudioEngineManager.get().isMute = true
|
||||
// AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_AUDIENCE)
|
||||
AudioEngineManager.get().isNotRecord = false
|
||||
}
|
||||
|
||||
updateMicBtn()
|
||||
|
||||
if (AudioEngineManager.get().isMute) {
|
||||
AudioEngineManager.get().stopLocalAudio()
|
||||
} else if (AvRoomDataManager.get().isOnMic(myUid)) {
|
||||
AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
override fun onSendFaceBtnClick() {
|
||||
if (AvRoomDataManager.get().isOnMic(myUid) || AvRoomDataManager.get().isRoomOwner) {
|
||||
if (dynamicFaceDialog == null) {
|
||||
|
@@ -16,13 +16,15 @@ import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.PopupWindow;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.chwl.core.contacts.MyConstant;
|
||||
import com.chwl.core.manager.AudioEngineManager;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.chwl.app.avroom.activity.RoomTypeSwitchActivity;
|
||||
import com.chwl.core.utils.extension.StringExtensionKt;
|
||||
import com.chwl.library.utils.SizeUtils;
|
||||
import com.netease.nim.uikit.api.NimUIKit;
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
|
||||
import com.netease.nimlib.sdk.msg.model.RecentContact;
|
||||
@@ -32,7 +34,6 @@ import com.chwl.app.avroom.BottomViewListenerWrapper;
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils;
|
||||
import com.chwl.app.room_chat.activity.RoomMsgActivity;
|
||||
import com.chwl.core.helper.ImHelperUtils;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
import com.chwl.core.manager.IMMessageManager;
|
||||
import com.chwl.core.pay.event.FirstChargeEvent;
|
||||
import com.chwl.core.room.bean.RoomInfo;
|
||||
@@ -227,11 +228,35 @@ public class BottomView extends LinearLayout implements View.OnClickListener {
|
||||
}
|
||||
|
||||
public void setMicBtnOpen(boolean isOpen) {
|
||||
if (isOpen) {
|
||||
if(openMic == null){
|
||||
return;
|
||||
}
|
||||
|
||||
// if (isOpen) {
|
||||
// openMic.setImageResource(R.drawable.room_menu_ic_mic_open);
|
||||
// } else {
|
||||
// openMic.setImageResource(R.drawable.room_menu_ic_mic_close);
|
||||
// }
|
||||
|
||||
//
|
||||
RoomInfo currentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
|
||||
if (currentRoomInfo != null) {
|
||||
openMic.setEnabled(true);
|
||||
if(!AudioEngineManager.get().isMute()){
|
||||
if (AudioEngineManager.get().isNotRecord()) {
|
||||
openMic.setImageResource(R.drawable.room_menu_ic_mic_music);
|
||||
} else {
|
||||
openMic.setImageResource(R.drawable.room_menu_ic_mic_open);
|
||||
}
|
||||
}else{
|
||||
openMic.setImageResource(R.drawable.room_menu_ic_mic_close);
|
||||
}
|
||||
} else {
|
||||
openMic.setEnabled(false);
|
||||
openMic.setImageResource(R.drawable.room_menu_ic_mic_close);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void setRemoteMuteOpen(boolean isOpen) {
|
||||
@@ -317,10 +342,7 @@ public class BottomView extends LinearLayout implements View.OnClickListener {
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.icon_room_open_mic:
|
||||
if (wrapper != null) {
|
||||
wrapper.onOpenMicBtnClick();
|
||||
}
|
||||
// showMicSetDialog(openMic);
|
||||
showMicSetDialog(openMic);
|
||||
break;
|
||||
|
||||
case R.id.tv_room_send_msg_input:
|
||||
@@ -468,6 +490,8 @@ public class BottomView extends LinearLayout implements View.OnClickListener {
|
||||
contentView = LayoutInflater.from(getContext()).inflate(R.layout.popup_mic_set, null);
|
||||
micSetPopupWindow = new PopupWindow(contentView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
|
||||
micSetPopupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
micSetPopupWindow.setTouchable(true);
|
||||
micSetPopupWindow.setFocusable(false);
|
||||
// micSetPopupWindow.setAnimationStyle(R.style.style_anim_mic_set);
|
||||
} else {
|
||||
contentView = micSetPopupWindow.getContentView();
|
||||
@@ -477,16 +501,28 @@ public class BottomView extends LinearLayout implements View.OnClickListener {
|
||||
ImageView micMusic = contentView.findViewById(R.id.micMusic);
|
||||
ImageView micOn = contentView.findViewById(R.id.micOn);
|
||||
|
||||
micOff.setOnClickListener(v -> {
|
||||
micSetPopupWindow.dismiss();
|
||||
});
|
||||
micMusic.setOnClickListener(v -> {
|
||||
micSetPopupWindow.dismiss();
|
||||
});
|
||||
micOn.setOnClickListener(v -> {
|
||||
micSetPopupWindow.dismiss();
|
||||
if (wrapper != null) {
|
||||
wrapper.onOpenMicBtnClick(MyConstant.MicType.open);
|
||||
}
|
||||
});
|
||||
|
||||
micMusic.setOnClickListener(v -> {
|
||||
micSetPopupWindow.dismiss();
|
||||
if (wrapper != null) {
|
||||
wrapper.onOpenMicBtnClick(MyConstant.MicType.music);
|
||||
}
|
||||
});
|
||||
|
||||
micOff.setOnClickListener(v -> {
|
||||
micSetPopupWindow.dismiss();
|
||||
if (wrapper != null) {
|
||||
wrapper.onOpenMicBtnClick(MyConstant.MicType.close);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
int[] vLoc = new int[2];
|
||||
parent.getLocationInWindow(vLoc);
|
||||
try {
|
||||
|
@@ -277,10 +277,12 @@ public class MessageView extends FrameLayout {
|
||||
private boolean isChat(){return mMsgType.equals(ResUtil.getString(R.string.send_msg));}
|
||||
private boolean isGift(){return mMsgType.equals(ResUtil.getString(R.string.send_gift_tab_title));}
|
||||
|
||||
|
||||
//todo do 消息类型分类 需要进一步判断
|
||||
private boolean isChatMsg(ChatRoomMessage msg){
|
||||
return (msg.getMsgType() == MsgTypeEnum.text);
|
||||
}
|
||||
|
||||
//todo do 消息类型分类 需要进一步判断
|
||||
private boolean isGiftMsg(ChatRoomMessage msg){
|
||||
return (msg.getMsgType() == MsgTypeEnum.custom);
|
||||
}
|
||||
|
@@ -46,7 +46,7 @@ public class LogoutHelper {
|
||||
if (e instanceof SocketTimeoutException || e instanceof SocketException || e instanceof HttpException) {
|
||||
activity.toast(ResUtil.getString(R.string.login_helper_logouthelper_013));
|
||||
} else if (e instanceof BanAccountException) {
|
||||
//todo do 显示id 跟 原因
|
||||
//todo do 封禁 显示id 跟 原因
|
||||
BanAccountException exception = (BanAccountException) e;
|
||||
String text = ResUtil.getString(R.string.login_helper_logouthelper_02) + exception.getMessage() + ResUtil.getString(R.string.login_helper_logouthelper_03);
|
||||
int start = text.length();
|
||||
|
@@ -1,6 +1,8 @@
|
||||
package com.chwl.core.manager;
|
||||
|
||||
|
||||
import com.chwl.library.utils.config.BasicConfig;
|
||||
import com.chwl.library.utils.pref.CommonPref;
|
||||
import com.netease.nim.uikit.common.util.log.LogUtil;
|
||||
import com.chwl.core.manager.agora.RtcEngineManager;
|
||||
import com.chwl.core.manager.trtc.TRtcEngineManager;
|
||||
@@ -180,8 +182,28 @@ public class AudioEngineManager {
|
||||
|
||||
public void adjustRecordingSignalVolume(int volume) {
|
||||
if (this.iAudioEngine == null) return;
|
||||
// this.iAudioEngine.adjustRecordingSignalVolume(volume);
|
||||
if (notRecord) {
|
||||
this.iAudioEngine.adjustRecordingSignalVolume(0);
|
||||
} else {
|
||||
this.iAudioEngine.adjustRecordingSignalVolume(volume);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean notRecord = false;
|
||||
public void setNotRecord(boolean isNotRecord){
|
||||
notRecord = isNotRecord;
|
||||
if (notRecord) {
|
||||
adjustRecordingSignalVolume(0);
|
||||
} else {
|
||||
adjustRecordingSignalVolume(VolumeSetting.getVoiceVolume());
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isNotRecord() {
|
||||
return notRecord;
|
||||
}
|
||||
|
||||
|
||||
public int startAudioMixing(String filePath, boolean loopback, int cycle) {
|
||||
if (this.iAudioEngine == null) {
|
||||
|
@@ -10,6 +10,7 @@ import com.chwl.core.manager.AudioEngineManager;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
import com.chwl.core.manager.IMNetEaseManager;
|
||||
import com.chwl.core.manager.RoomEvent;
|
||||
import com.chwl.core.manager.VolumeSetting;
|
||||
import com.chwl.core.music.bean.LocalMusicInfo;
|
||||
import com.chwl.core.music.db.bean.LocalMusicBean;
|
||||
import com.chwl.core.music.db.model.LocalMusicDbModel;
|
||||
@@ -52,8 +53,10 @@ public class PlayerModel extends BaseModel implements IPlayerModel {
|
||||
private PlayerModel() {
|
||||
playerListMusicInfos = new ArrayList<>();
|
||||
state = STATE_STOP;
|
||||
volume = CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).getInt("volume", 50);
|
||||
recordingVolume = CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).getInt("recordingVolume", 50);
|
||||
// volume = CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).getInt("volume", 50);
|
||||
// recordingVolume = CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).getInt("recordingVolume", 50);
|
||||
volume = VolumeSetting.getMusicVolume();
|
||||
recordingVolume = VolumeSetting.getVoiceVolume();
|
||||
|
||||
mDisposable = IMNetEaseManager.get().getChatRoomEventObservable()
|
||||
.subscribe(new Consumer<RoomEvent>() {
|
||||
@@ -273,14 +276,16 @@ public class PlayerModel extends BaseModel implements IPlayerModel {
|
||||
@Override
|
||||
public void seekVolume(int volume) {
|
||||
this.volume = volume;
|
||||
CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).putInt("volume", volume);
|
||||
// CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).putInt("volume", volume);
|
||||
VolumeSetting.putMusicVolume(volume);
|
||||
AudioEngineManager.get().adjustAudioMixingVolume(volume);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void seekRecordingVolume(int volume) {
|
||||
this.recordingVolume = volume;
|
||||
CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).putInt("recordingVolume", volume);
|
||||
// CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).putInt("recordingVolume", volume);
|
||||
VolumeSetting.putVoiceVolume(volume);
|
||||
AudioEngineManager.get().adjustRecordingSignalVolume(volume);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user