diff --git a/app/build.gradle b/app/build.gradle
index 921cbc776..0532953b0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -250,9 +250,9 @@ dependencies {
// 易盾一键登录
implementation(name: 'quicklogin_libary-external-release', ext: 'aar')
- implementation(name: 'CMCCSSOSDK-WY', ext: 'aar')
- implementation(name: 'Ui-factory_oauth_mobile_3.8.3.1', ext: 'aar')
- implementation(name: 'CTAccount_sdk_api_v3.7.0_all', ext: 'aar')
+ implementation(name: 'CMCCSSOSDK-wy-release', ext: 'aar')
+ implementation(name: 'Ui-factory_oauth_mobile_3.9.1.7_external', ext: 'aar')
+ implementation(name: 'CTAccount_sdk_api_v3.8.3_all', ext: 'aar')
implementation 'com.github.fodroid:XRadioGroup:v1.5'
implementation files('libs/msa_mdid_1.0.13.aar')
diff --git a/app/quick-pass-libs/CMCCSSOSDK-WY.aar b/app/quick-pass-libs/CMCCSSOSDK-WY.aar
deleted file mode 100644
index adf4c19c5..000000000
Binary files a/app/quick-pass-libs/CMCCSSOSDK-WY.aar and /dev/null differ
diff --git a/app/quick-pass-libs/CMCCSSOSDK-wy-release.aar b/app/quick-pass-libs/CMCCSSOSDK-wy-release.aar
new file mode 100644
index 000000000..f798760d3
Binary files /dev/null and b/app/quick-pass-libs/CMCCSSOSDK-wy-release.aar differ
diff --git a/app/quick-pass-libs/CTAccount_sdk_api_v3.7.0_all.aar b/app/quick-pass-libs/CTAccount_sdk_api_v3.7.0_all.aar
deleted file mode 100644
index 412bc5f19..000000000
Binary files a/app/quick-pass-libs/CTAccount_sdk_api_v3.7.0_all.aar and /dev/null differ
diff --git a/app/quick-pass-libs/CTAccount_sdk_api_v3.8.3_all.aar b/app/quick-pass-libs/CTAccount_sdk_api_v3.8.3_all.aar
new file mode 100644
index 000000000..95c91b3f3
Binary files /dev/null and b/app/quick-pass-libs/CTAccount_sdk_api_v3.8.3_all.aar differ
diff --git a/app/quick-pass-libs/Ui-factory_oauth_mobile_3.8.3.1.aar b/app/quick-pass-libs/Ui-factory_oauth_mobile_3.8.3.1.aar
deleted file mode 100644
index cbd2d4e83..000000000
Binary files a/app/quick-pass-libs/Ui-factory_oauth_mobile_3.8.3.1.aar and /dev/null differ
diff --git a/app/quick-pass-libs/Ui-factory_oauth_mobile_3.9.1.7_external.aar b/app/quick-pass-libs/Ui-factory_oauth_mobile_3.9.1.7_external.aar
new file mode 100644
index 000000000..082d82536
Binary files /dev/null and b/app/quick-pass-libs/Ui-factory_oauth_mobile_3.9.1.7_external.aar differ
diff --git a/app/quick-pass-libs/quicklogin_libary-external-release.aar b/app/quick-pass-libs/quicklogin_libary-external-release.aar
index e1726d21d..6cbeefacf 100644
Binary files a/app/quick-pass-libs/quicklogin_libary-external-release.aar and b/app/quick-pass-libs/quicklogin_libary-external-release.aar differ
diff --git a/app/src/common/res/drawable/bg_f6f7f9_8_radius.xml b/app/src/common/res/drawable/bg_f6f7f9_8_radius.xml
new file mode 100644
index 000000000..0b35519c6
--- /dev/null
+++ b/app/src/common/res/drawable/bg_f6f7f9_8_radius.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ffb6f8c5..ddc202620 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1233,6 +1233,14 @@
android:name=".avroom.firstcharge.FirstChargeDialog"
android:theme="@style/dialogactivity" />
+
+
+
+
diff --git a/app/src/main/java/com/yizhuan/erban/avroom/adapter/UpMicAdapter.java b/app/src/main/java/com/yizhuan/erban/avroom/adapter/UpMicAdapter.java
index d5b567c71..7657a2e07 100644
--- a/app/src/main/java/com/yizhuan/erban/avroom/adapter/UpMicAdapter.java
+++ b/app/src/main/java/com/yizhuan/erban/avroom/adapter/UpMicAdapter.java
@@ -37,7 +37,7 @@ public class UpMicAdapter extends BaseQuickAdapter {
this.consumer = consumer;
this.upUid = upUid;
List list = new ArrayList<>();
- int size = AvRoomDataManager.get().isCpRoom() ? 2 : 9;
+ int size = AvRoomDataManager.get().isCpRoom() ? 2 : (AvRoomDataManager.get().isOpenGame() ? 6 : 9);
for (int i = 0; i < size; i++) {
list.add("");
}
diff --git a/app/src/main/java/com/yizhuan/erban/base/TitleBar.java b/app/src/main/java/com/yizhuan/erban/base/TitleBar.java
index 4854b376f..8bb1dc506 100644
--- a/app/src/main/java/com/yizhuan/erban/base/TitleBar.java
+++ b/app/src/main/java/com/yizhuan/erban/base/TitleBar.java
@@ -65,7 +65,7 @@ public class TitleBar extends ViewGroup implements View.OnClickListener {
setBackgroundColor(mBackgroundColor);
}
- private int mBackgroundColor = getResources().getColor(R.color.translucent);
+ private int mBackgroundColor = getResources().getColor(R.color.transparent);
public TitleBar(Context context) {
super(context);
diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.java
index 2f4651364..bf6beef12 100644
--- a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.java
+++ b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.java
@@ -157,6 +157,12 @@ public class MeFragment extends BaseFragment implements View.OnClickListener {
public void onResume() {
super.onResume();
initUserDate();
+ // 每次页面重新可见的时候,如果处于审核状态,都尝试刷新拿取最新信息
+ // 不算是一个多好的做法,但是 it works
+ // 不算频繁,可以接受
+ if (mUserInfo != null && mUserInfo.isReview()) {
+ requestUpdateUserInfo();
+ }
}
private void initUserDate() {
diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/GrantedPermissionsActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/GrantedPermissionsActivity.kt
new file mode 100644
index 000000000..6e5995420
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/ui/setting/GrantedPermissionsActivity.kt
@@ -0,0 +1,102 @@
+package com.yizhuan.erban.ui.setting
+
+import android.content.Context
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.BaseViewHolder
+import com.trello.rxlifecycle3.android.ActivityEvent
+import com.yizhuan.erban.R
+import com.yizhuan.erban.base.BaseActivity
+import com.yizhuan.erban.common.EmptyViewHelper
+import com.yizhuan.erban.ui.setting.bean.PermissionEntity
+import com.yizhuan.erban.ui.utils.RVDelegate
+import com.yizhuan.erban.ui.widget.DividerItemDecoration
+import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil
+import com.yizhuan.erban.utils.PermissionUtil
+import io.reactivex.Completable
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.schedulers.Schedulers
+import java.util.concurrent.TimeUnit
+
+class GrantedPermissionsActivity : BaseActivity() {
+ private lateinit var recyclerView: RecyclerView
+ private lateinit var rvDelegate: RVDelegate
+ private var isResumedFromSetting = false
+
+ companion object {
+ fun start(context: Context) {
+ val intent = Intent(context, GrantedPermissionsActivity::class.java)
+ context.startActivity(intent)
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_granted_permissions)
+ initTitleBar("系统权限管理")
+ initView()
+ rvDelegate = RVDelegate.Builder()
+ .setLayoutManager(LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false))
+ .setRecyclerView(recyclerView)
+ .setEmptyView(EmptyViewHelper.createEmptyView(this, "未有已授权的系统权限"))
+ .setAdapter(PermissionAdapter())
+ .build()
+ }
+
+ override fun onResume() {//修改系统权限设置返回立即读取会有黑屏问题
+ super.onResume()
+ if (isResumedFromSetting) {
+ isResumedFromSetting = false
+ Completable.timer(1500, TimeUnit.MILLISECONDS)
+ .compose(bindUntilEvent(ActivityEvent.DESTROY))
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .doOnSubscribe { dialogManager.showProgressDialog(context, false) }
+ .doOnComplete {
+ rvDelegate.setNewData(PermissionUtil.instance.getGrantedPermissions(context))
+ dialogManager.dismissDialog()
+ }
+ .doOnError { dialogManager.dismissDialog() }
+ .subscribe()
+ } else {
+ rvDelegate.setNewData(PermissionUtil.instance.getGrantedPermissions(context))
+ }
+ }
+
+ override fun onStop() {
+ super.onStop()
+ isResumedFromSetting = true
+ }
+
+ private fun initView() {
+ recyclerView = findViewById(R.id.recycler_view)
+ recyclerView.addItemDecoration(
+ DividerItemDecoration(
+ this, LinearLayoutManager.VERTICAL,
+ UIUtil.dip2px(this, 16.toDouble()),
+ R.color.transparent
+ )
+ )
+ }
+
+ fun jumpToSystemSetting(view: View) {
+ PermissionUtil.instance.jumpToSetting(this)
+ }
+
+ class PermissionAdapter :
+ BaseQuickAdapter(R.layout.item_permission_granted) {
+ override fun convert(helper: BaseViewHolder, item: PermissionEntity?) {
+ item?.let {
+ helper.getView(R.id.tv_name)?.text = it.alias
+ helper.getView(R.id.tv_desc)?.text = it.description
+ helper.getView(R.id.icon)?.setImageResource(it.icon)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/PermissionGuideActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/PermissionGuideActivity.kt
new file mode 100644
index 000000000..790b1b87c
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/ui/setting/PermissionGuideActivity.kt
@@ -0,0 +1,53 @@
+package com.yizhuan.erban.ui.setting
+
+import android.content.Context
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import androidx.databinding.DataBindingUtil
+import com.yizhuan.erban.BuildConfig
+import com.yizhuan.erban.R
+import com.yizhuan.erban.base.BaseActivity
+import com.yizhuan.erban.base.BaseViewBindingActivity
+import com.yizhuan.erban.databinding.ActivityPermissionGuideBinding
+import com.yizhuan.erban.ui.webview.CommonWebViewActivity
+import com.yizhuan.erban.utils.PermissionUtil
+import com.yizhuan.xchat_android_core.UriProvider
+
+class PermissionGuideActivity : BaseViewBindingActivity(),
+ View.OnClickListener {
+
+ companion object {
+ fun start(context: Context) {
+ val intent = Intent(context, PermissionGuideActivity::class.java)
+ context.startActivity(intent)
+ }
+ }
+
+ override fun init() {
+ initTitleBar("个人信息与权限")
+ binding.click = this
+ }
+
+ override fun onClick(v: View?) {
+ when (v?.id) {
+ R.id.tv_system_permission -> GrantedPermissionsActivity.start(this)
+ R.id.tv_jump_setting -> PermissionUtil.instance.jumpToSetting(this)
+ R.id.tv_privacy_guide -> CommonWebViewActivity.start(
+ this,UriProvider.getPrivacyUrl()
+ )
+ R.id.tv_sdk_permission -> CommonWebViewActivity.start(
+ this,
+ UriProvider.getSDKPermissionUrl()
+ )
+ R.id.tv_device_permission -> CommonWebViewActivity.start(
+ this,
+ UriProvider.getDeivcePermissionUrl()
+ )
+ R.id.tv_personal_permission -> CommonWebViewActivity.start(
+ this,
+ UriProvider.getPersonalInfoUrl()
+ )
+ }
+ }
+}
diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.java b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.java
index 592d09426..77bbaa869 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.java
@@ -228,6 +228,9 @@ public class SettingActivity extends BaseActivity implements View.OnClickListene
case R.id.tv_notice_setting:
NoticeSettingActivity.start(context);
break;
+ case R.id.rly_permission:
+ PermissionGuideActivity.Companion.start(context);
+ break;
}
}
diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/bean/PermissionEntity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/bean/PermissionEntity.kt
new file mode 100644
index 000000000..19358af4c
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/ui/setting/bean/PermissionEntity.kt
@@ -0,0 +1,71 @@
+package com.yizhuan.erban.ui.setting.bean
+
+import android.Manifest
+import com.yizhuan.erban.R
+import com.yizhuan.xchat_android_core.utils.TextUtils
+
+enum class PermissionEntity(
+ val alias: String,
+ val description: String,
+ var icon: Int = R.drawable.icon_permission_common,
+ val permissionName: Array
+) {
+
+
+ PHONE(
+ "电话",
+ "读取通话状态、移动网络信息和设备信息",
+ R.drawable.icon_permission_phone,
+ arrayOf(Manifest.permission.READ_PHONE_STATE)
+ ),
+ LOCATOIN(
+ "位置",
+ "访问大致位置(通过网络定位)",
+ R.drawable.icon_permission_location,
+ arrayOf(
+ Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.ACCESS_COARSE_LOCATION
+ )
+
+ ),
+ CONTACT(
+ "联系人",
+ "获取系统中通讯录信息",
+ R.drawable.icon_permission_common,
+ arrayOf(
+ Manifest.permission.READ_CONTACTS,
+ Manifest.permission.WRITE_CONTACTS,
+ Manifest.permission.GET_ACCOUNTS
+ )
+ ),
+ MICROPHONE(
+ "录音",
+ "录制音频",
+ R.drawable.icon_permission_mic,
+ arrayOf(Manifest.permission.RECORD_AUDIO)
+ ),
+ CAMERA(
+ "相机",
+ "拍摄相片或录制视频",
+ R.drawable.icon_permission_camera,
+ arrayOf(Manifest.permission.CAMERA)
+ ),
+ STORAGE(
+ "存储", "读取手机存储,修改/删除手机储存", R.drawable.icon_permission_storage,
+ arrayOf(
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE
+ )
+ );
+
+ companion object {
+ fun fetchPermission(name: String): PermissionEntity? {
+ if (TextUtils.isEmptyText(name)) return null
+
+ values().forEach {
+ if (it.permissionName.contains(name)) return it
+ }
+ return null
+ }
+ }
+}
diff --git a/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoActivity.java b/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoActivity.java
index 246d7b5dc..25a5dc718 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoActivity.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoActivity.java
@@ -1,5 +1,7 @@
package com.yizhuan.erban.ui.user;
+import static com.yizhuan.erban.ui.user.UserInfoActivity.IdentityState.OWN;
+
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
@@ -19,6 +21,9 @@ import androidx.recyclerview.widget.RecyclerView;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.yizhuan.erban.module_hall.hall.activity.ModuleClanActivity;
+import com.yizhuan.erban.ui.user.adapter.SelfPhotoAdapter;
+import com.yizhuan.erban.ui.utils.ImageLoadUtilsV2;
+import com.yizhuan.erban.ui.widget.rollviewpager.adapter.StaticPagerAdapterWrapper;
import com.yizhuan.erban.ui.widget.rollviewpager.hintview.TextHintView;
import com.netease.nim.uikit.impl.cache.NimUserInfoCache;
import com.netease.nim.uikit.support.glide.GlideApp;
@@ -113,9 +118,10 @@ public class UserInfoActivity extends BaseBindingActivity 0) {
showUserPhoto(position - 1);
} else {
+
UIHelper.showModifyPhotosAct(this, userId);
}
} else {
@@ -564,7 +572,7 @@ public class UserInfoActivity extends BaseBindingActivity {
ErbanTakePhotoActivity.startToSelectPhoto(this, this);
@@ -299,7 +315,7 @@ public class UserInfoModifyActivity extends BaseActivity
case R.id.rl_audio_record:
checkPermission(() -> {
// 点击跳转到我的声音页面
- UIHelper.showMyVoiceAct(UserInfoModifyActivity.this, Method.AUDIO,"编辑资料");
+ UIHelper.showMyVoiceAct(UserInfoModifyActivity.this, Method.AUDIO, "编辑资料");
isAvatar = false;
}, R.string.ask_again,
Manifest.permission.RECORD_AUDIO);
@@ -319,6 +335,7 @@ public class UserInfoModifyActivity extends BaseActivity
UserInfo user = new UserInfo();
user.setUid(AuthModel.get().getCurrentUid());
user.setAvatar(url);
+ showAvatarAuditing = true;
UserModel.get().requestUpdateUserInfo(user).subscribe(userInfoUpdateObserver);
}
}
@@ -382,6 +399,10 @@ public class UserInfoModifyActivity extends BaseActivity
initData(mUserInfo);
}
getDialogManager().dismissDialog();
+ if (showAvatarAuditing) {
+ showAvatarAuditing = false;
+ showAvatarAuditingDialog();
+ }
}
@Override
@@ -401,4 +422,17 @@ public class UserInfoModifyActivity extends BaseActivity
StatusBarUtil.transparencyBar(this);
StatusBarUtil.StatusBarLightMode(this);
}
+
+ private void showAvatarAuditingDialog() {
+ toast(R.string.avatar_auditing);
+ //延迟3秒重新获取用户信息更新状态
+ ivAvatarAuditiong.setVisibility(View.VISIBLE);
+ Completable.timer(3000, TimeUnit.MILLISECONDS)
+ .compose(bindUntilEvent(ActivityEvent.STOP))
+ .doOnComplete(() -> {
+ UserModel.get().updateCurrentUserInfo().subscribe(userInfoUpdateObserver);
+ }).doOnError(throwable -> {
+ throwable.printStackTrace();
+ }).subscribe();
+ }
}
diff --git a/app/src/main/java/com/yizhuan/erban/ui/user/UserModifyPhotosActivity.java b/app/src/main/java/com/yizhuan/erban/ui/user/UserModifyPhotosActivity.java
index 46b95798e..aad950f34 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/user/UserModifyPhotosActivity.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/user/UserModifyPhotosActivity.java
@@ -200,6 +200,7 @@ public class UserModifyPhotosActivity extends TakePhotoActivity implements UserM
@Override
public void onSuccess(UserInfo info) {
+ toast("相片已送审,审核成功后自动上传相片");
isChanged = true;
getDialogManager().dismissDialog();
if (info.getUid() == userId) {
diff --git a/app/src/main/java/com/yizhuan/erban/ui/user/adapter/SelfPhotoAdapter.kt b/app/src/main/java/com/yizhuan/erban/ui/user/adapter/SelfPhotoAdapter.kt
new file mode 100644
index 000000000..7f26bc75d
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/ui/user/adapter/SelfPhotoAdapter.kt
@@ -0,0 +1,48 @@
+package com.yizhuan.erban.ui.user.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.FrameLayout
+import android.widget.ImageView
+import com.yizhuan.erban.R
+import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil
+import com.yizhuan.erban.ui.widget.rollviewpager.adapter.StaticPagerAdapterWrapper
+import com.yizhuan.xchat_android_core.user.bean.UserDetailInfo
+
+class SelfPhotoAdapter(
+ photoBeans: List,
+ context: Context
+) : StaticPagerAdapterWrapper(photoBeans, context) {
+ private val origin by lazy {
+ UserInfoPhotoAdapter(photoBeans, context)
+ }
+
+ override fun getView(container: ViewGroup?, position: Int): View {
+ val originView = origin.getView(container, position)
+ val flContainer = FrameLayout(context)
+ flContainer.layoutParams = FrameLayout.LayoutParams(
+ FrameLayout.LayoutParams.MATCH_PARENT,
+ FrameLayout.LayoutParams.WRAP_CONTENT
+ )
+ flContainer.addView(originView)
+ //overlay
+ val statusView = ImageView(context)
+ statusView.setImageResource(R.drawable.ic_album_auditing)
+ statusView.scaleType = ImageView.ScaleType.CENTER_INSIDE
+ val statusViewLayoutParams =
+ FrameLayout.LayoutParams(UIUtil.dip2px(context, 86.0), UIUtil.dip2px(context, 51.0))
+ statusViewLayoutParams.gravity = Gravity.RIGHT
+ flContainer.addView(statusView, statusViewLayoutParams)
+
+ val isVisit = (dataList.getOrNull(position)?.isReview == true)
+ statusView.visibility = if (isVisit) View.VISIBLE else View.GONE
+ return flContainer
+ }
+
+ override fun setData(dataList: MutableList?) {
+ super.setData(dataList)
+ origin.setData(dataList)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/ui/user/adapter/UserInfoPhotoAdapter.java b/app/src/main/java/com/yizhuan/erban/ui/user/adapter/UserInfoPhotoAdapter.java
index 1ba7aa5de..02c358744 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/user/adapter/UserInfoPhotoAdapter.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/user/adapter/UserInfoPhotoAdapter.java
@@ -10,7 +10,7 @@ import android.widget.ImageView;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.user.ShowPhotoActivity;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
-import com.yizhuan.erban.ui.widget.rollviewpager.adapter.StaticPagerAdapter;
+import com.yizhuan.erban.ui.widget.rollviewpager.adapter.StaticPagerAdapterWrapper;
import com.yizhuan.xchat_android_core.user.bean.UserDetailInfo;
import com.yizhuan.xchat_android_core.user.bean.UserPhoto;
@@ -22,47 +22,33 @@ import java.util.List;
* @date 2017/8/7
*/
-public class UserInfoPhotoAdapter extends StaticPagerAdapter {
- private Context context;
- private List photoBeanList;
+public class UserInfoPhotoAdapter extends StaticPagerAdapterWrapper {
private LayoutInflater mInflater;
public UserInfoPhotoAdapter(List photoBeans, Context context) {
- this.context = context;
- this.photoBeanList = photoBeans;
+ super(photoBeans, context);
mInflater = LayoutInflater.from(context);
}
@Override
public View getView(ViewGroup container, int position) {
- UserDetailInfo.DataBean.PrivatePhotoBean photoInfo = photoBeanList.get(position);
+ UserDetailInfo.DataBean.PrivatePhotoBean photoInfo = dataList.get(position);
ImageView imgBanner = (ImageView) mInflater.inflate(R.layout.banner_userinfo_photo_item, container, false);
if (photoInfo == null) return imgBanner;
- ImageLoadUtils.loadImage(context, photoInfo.getPhotoUrl(), imgBanner);
- imgBanner.setOnClickListener(v -> {
- showUserPhoto(position);
- });
+ ImageLoadUtils.loadImage(context, photoInfo.getPhotoUrl(), imgBanner);
+ imgBanner.setOnClickListener(v -> {
+ showUserPhoto(position);
+ });
return imgBanner;
}
- @Override
- public int getCount() {
- return photoBeanList == null ? 0 : photoBeanList.size();
-
- }
-
- public void setData(List bannerInfos) {
- this.photoBeanList = bannerInfos;
- }
-
-
private void showUserPhoto(int position) {
//创建一个集合拿来做用户所有照片信息
ArrayList userPhotos = new ArrayList<>();
- for (int i = 0 ; i < photoBeanList.size() ; i++) {
+ for (int i = 0; i < dataList.size(); i++) {
UserPhoto newPhoto = new UserPhoto();
- newPhoto.setPhotoUrl(photoBeanList.get(i).getPhotoUrl());
+ newPhoto.setPhotoUrl(dataList.get(i).getPhotoUrl());
userPhotos.add(newPhoto);
}
Intent intent = new Intent(context, ShowPhotoActivity.class);
diff --git a/app/src/main/java/com/yizhuan/erban/ui/utils/sys/PermissionUtil.kt b/app/src/main/java/com/yizhuan/erban/ui/utils/sys/PermissionUtil.kt
new file mode 100644
index 000000000..e6540a2f2
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/ui/utils/sys/PermissionUtil.kt
@@ -0,0 +1,4 @@
+package com.yizhuan.erban.ui.utils.sys
+
+class PermissionUtil {
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/CommonMessageDialog.kt b/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/CommonMessageDialog.kt
new file mode 100644
index 000000000..2c213a230
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/CommonMessageDialog.kt
@@ -0,0 +1,17 @@
+package com.yizhuan.erban.ui.widget.dialog
+
+import android.content.Context
+import com.yizhuan.erban.R
+import com.yizhuan.erban.databinding.DialogCommonMessageBinding
+import com.yizhuan.erban.treasure_box.widget.dialog.BaseBindingDialog
+import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
+
+@ActLayoutRes(R.layout.dialog_common_message)
+class CommonMessageDialog(context: Context, theme: Int) :
+ BaseBindingDialog(context, theme) {
+ constructor(context: Context) : this(context, R.style.dialog)
+
+ override fun init() {
+ setCancelable(true)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/ui/widget/rollviewpager/adapter/StaticPagerAdapterWrapper.java b/app/src/main/java/com/yizhuan/erban/ui/widget/rollviewpager/adapter/StaticPagerAdapterWrapper.java
new file mode 100644
index 000000000..98ceee4fe
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/ui/widget/rollviewpager/adapter/StaticPagerAdapterWrapper.java
@@ -0,0 +1,26 @@
+package com.yizhuan.erban.ui.widget.rollviewpager.adapter;
+
+import android.content.Context;
+
+import java.util.List;
+
+public abstract class StaticPagerAdapterWrapper extends StaticPagerAdapter {
+
+ protected Context context;
+ protected List dataList;
+
+
+ public StaticPagerAdapterWrapper(List dataList, Context context) {
+ this.context = context;
+ this.dataList = dataList;
+ }
+
+ public void setData(List dataList) {
+ this.dataList = dataList;
+ }
+
+ @Override
+ public int getCount() {
+ return dataList == null ? 0 : dataList.size();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/utils/PermissionUtil.kt b/app/src/main/java/com/yizhuan/erban/utils/PermissionUtil.kt
new file mode 100644
index 000000000..8f2196cc5
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/utils/PermissionUtil.kt
@@ -0,0 +1,126 @@
+package com.yizhuan.erban.utils
+
+import android.content.ComponentName
+import android.content.Context
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.net.Uri
+import android.os.Build
+import com.microquation.linkedme.android.v4.ContextCompatLKMe
+import com.yizhuan.erban.BuildConfig
+import com.yizhuan.erban.ui.setting.bean.PermissionEntity
+import java.lang.Exception
+
+class PermissionUtil {
+ companion object {
+ val instance = PermissionUtil()
+ }
+
+ fun getGrantedPermissions(context: Context): List {
+ val packageInfo = context.packageManager.getPackageInfo(
+ context.packageName,
+ PackageManager.GET_PERMISSIONS,
+ )
+ val permissions = packageInfo.requestedPermissions
+ val list = permissions?.filter { str -> str.startsWith("android.permission") }?.let {
+ if (Build.VERSION.SDK_INT < 23) {
+ it
+ } else {
+ it.filter { s ->
+ ContextCompatLKMe.checkSelfPermission(context, s) ==
+ PackageManager.PERMISSION_GRANTED
+ }
+ }
+ }
+
+ val permissionList = ArrayList()
+ list?.forEach {
+ PermissionEntity.fetchPermission(it)
+ ?.let { permission ->
+ if (!permissionList.contains(permission)) permissionList.add(permission)
+ }
+ }
+ return permissionList
+ }
+
+ fun jumpToSetting(context: Context) {
+ when (Build.BRAND?.toLowerCase()) {
+ "redmi", "xiaomi" -> toXiaomiPermission(context)
+ "huawei", "honor" -> toHuaWeiPermission(context)
+ "meizu" -> toMeizuPermission(context)
+ else -> toCommonPermission(context)
+ }
+ }
+
+ private fun toHuaWeiPermission(context: Context) {
+ try {
+ val intent = Intent()
+ intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
+ val comp = ComponentName(
+ "com.huawei.systemmanager",
+ "com.huawei.permissionmanager.ui.MainActivity"
+ )//华为权限管理
+ intent.component = comp
+ context.startActivity(intent)
+ } catch (e: Exception) {
+ e.printStackTrace()
+ toCommonPermission(context)
+ }
+ }
+
+ private fun toXiaomiPermission(context: Context) {
+ try { // MIUI 8
+ val localIntent = Intent("miui.intent.action.APP_PERM_EDITOR")
+ localIntent.setClassName(
+ "com.miui.securitycenter",
+ "com.miui.permcenter.permissions.PermissionsEditorActivity"
+ )
+ localIntent.putExtra("extra_pkgname", context.packageName)
+ context.startActivity(localIntent)
+ } catch (e: Exception) {
+ try { // MIUI 5/6/7
+ val localIntent = Intent("miui.intent.action.APP_PERM_EDITOR")
+ localIntent.setClassName(
+ "com.miui.securitycenter",
+ "com.miui.permcenter.permissions.AppPermissionsEditorActivity"
+ )
+ localIntent.putExtra("extra_pkgname", context.packageName)
+ context.startActivity(localIntent)
+ } catch (e1: Exception) { // 否则跳转到应用详情
+ toCommonPermission(context)
+ }
+ }
+ }
+
+ private fun toMeizuPermission(context: Context) {
+ try {
+ val intent = Intent("com.meizu.safe.security.SHOW_APPSEC")
+ intent.addCategory(Intent.CATEGORY_DEFAULT)
+ intent.putExtra("packageName", BuildConfig.APPLICATION_ID)
+ context.startActivity(intent)
+ } catch (e: Exception) {
+ e.printStackTrace()
+ toCommonPermission(context)
+ }
+ }
+
+ private fun toCommonPermission(context: Context) {
+ val localIntent = Intent()
+ localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ if (Build.VERSION.SDK_INT >= 9) {
+ localIntent.action = "android.settings.APPLICATION_DETAILS_SETTINGS"
+ localIntent.data = Uri.fromParts("package", context.packageName, null)
+ } else if (Build.VERSION.SDK_INT <= 8) {
+ localIntent.action = Intent.ACTION_VIEW
+ localIntent.setClassName(
+ "com.android.settings",
+ "com.android.settings.InstalledAppDetails"
+ )
+ localIntent.putExtra(
+ "com.android.settings.ApplicationPkgName",
+ context.packageName
+ )
+ }
+ context.startActivity(localIntent)
+ }
+}
diff --git a/app/src/main/res/drawable-xhdpi/ic_album_auditing.png b/app/src/main/res/drawable-xhdpi/ic_album_auditing.png
new file mode 100644
index 000000000..ce938f260
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_album_auditing.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_avatar_auditing.png b/app/src/main/res/drawable-xhdpi/ic_avatar_auditing.png
new file mode 100644
index 000000000..426d9d636
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_avatar_auditing.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_dialog_auditing.png b/app/src/main/res/drawable-xhdpi/ic_dialog_auditing.png
new file mode 100644
index 000000000..61e7334a4
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_dialog_auditing.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_permission_camera.png b/app/src/main/res/drawable-xhdpi/icon_permission_camera.png
new file mode 100644
index 000000000..c2b2ca66e
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_permission_camera.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_permission_common.png b/app/src/main/res/drawable-xhdpi/icon_permission_common.png
new file mode 100644
index 000000000..ec9bf72e3
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_permission_common.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_permission_location.png b/app/src/main/res/drawable-xhdpi/icon_permission_location.png
new file mode 100644
index 000000000..0152ce2e3
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_permission_location.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_permission_mic.png b/app/src/main/res/drawable-xhdpi/icon_permission_mic.png
new file mode 100644
index 000000000..b4fd8cf1d
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_permission_mic.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_permission_phone.png b/app/src/main/res/drawable-xhdpi/icon_permission_phone.png
new file mode 100644
index 000000000..42a318473
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_permission_phone.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_permission_storage.png b/app/src/main/res/drawable-xhdpi/icon_permission_storage.png
new file mode 100644
index 000000000..9ed02161f
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_permission_storage.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/quick_pass_checked.png b/app/src/main/res/drawable-xxhdpi/quick_pass_checked.png
new file mode 100644
index 000000000..39031cbaa
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/quick_pass_checked.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/quick_pass_uncheck.png b/app/src/main/res/drawable-xxhdpi/quick_pass_uncheck.png
new file mode 100644
index 000000000..6fcc7aab3
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/quick_pass_uncheck.png differ
diff --git a/app/src/main/res/drawable/bg_room_pk_bottom.xml b/app/src/main/res/drawable/bg_room_pk_bottom.xml
index b99276981..949855eb5 100644
--- a/app/src/main/res/drawable/bg_room_pk_bottom.xml
+++ b/app/src/main/res/drawable/bg_room_pk_bottom.xml
@@ -2,7 +2,7 @@
diff --git a/app/src/main/res/drawable/shape_circle_33_white.xml b/app/src/main/res/drawable/shape_circle_33_white.xml
new file mode 100644
index 000000000..a07296edd
--- /dev/null
+++ b/app/src/main/res/drawable/shape_circle_33_white.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_granted_permissions.xml b/app/src/main/res/layout/activity_granted_permissions.xml
new file mode 100644
index 000000000..2accdcf29
--- /dev/null
+++ b/app/src/main/res/layout/activity_granted_permissions.xml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_permission_guide.xml b/app/src/main/res/layout/activity_permission_guide.xml
new file mode 100644
index 000000000..c52efe984
--- /dev/null
+++ b/app/src/main/res/layout/activity_permission_guide.xml
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml
index 73195f981..215b5aeac 100644
--- a/app/src/main/res/layout/activity_setting.xml
+++ b/app/src/main/res/layout/activity_setting.xml
@@ -308,6 +308,37 @@
android:textColor="@color/text_title_white"
android:textSize="14sp" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_me.xml b/app/src/main/res/layout/fragment_me.xml
index a6186cb4b..263aa5493 100644
--- a/app/src/main/res/layout/fragment_me.xml
+++ b/app/src/main/res/layout/fragment_me.xml
@@ -5,6 +5,8 @@
+
+
@@ -67,7 +69,7 @@
+
+
diff --git a/app/src/main/res/layout/item_micro_game.xml b/app/src/main/res/layout/item_micro_game.xml
index b269a7bcc..071fc484a 100644
--- a/app/src/main/res/layout/item_micro_game.xml
+++ b/app/src/main/res/layout/item_micro_game.xml
@@ -52,6 +52,13 @@
android:visibility="gone"
tools:visibility="visible" />
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index d633223ff..fcf911a1d 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -587,4 +587,8 @@
+
+ #99FFFFFF
+ #1AFFFFFF
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9a62d8cc2..31a8b5177 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -683,6 +683,7 @@
关于&app_name;
检查版本
实验室
+ 个人信息与权限
退出当前账号
清除缓存
@@ -908,4 +909,6 @@
1)只有牌照房房主和超管才可以发起跨房pk,一次只能选择一个牌照房发起;\n 2)只有房主和超管才可以接受或拒绝跨房pk请求,若10秒内不点击pk邀请弹窗,弹窗消失,视为自动拒绝;\n 3)发起pk时需选择pk时间和pk对象,自定义时间下限为5,上限为180,只能填写整数;\n 4)pk发起后,未到pk时间无法自行结束,若有特殊情况需提前结束可联系客服,但本场pk不算胜负。
1.每人仅可获得1次首充福利\n2.每个手机号,设备,实名认证等如已参与过首充,则无法获得奖励。
关注的人和收藏的房间都会出现在这里\n暂无关注的人和收藏的房间哦
+ 头像已送审,审核成功后自动应用头像
+
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 0a8a4ba93..8a6eda7d8 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -546,4 +546,19 @@
- @anim/anim_message_tip_out
+
+
diff --git a/app/src/module_community/res/drawable-xhdpi/icon_dy_item_more.png b/app/src/module_community/res/drawable-xhdpi/icon_dy_item_more.png
index 15f113c8a..fa43ab28a 100644
Binary files a/app/src/module_community/res/drawable-xhdpi/icon_dy_item_more.png and b/app/src/module_community/res/drawable-xhdpi/icon_dy_item_more.png differ
diff --git a/app/src/module_community/res/layout/activity_publish.xml b/app/src/module_community/res/layout/activity_publish.xml
index 9637915c6..c4233633c 100644
--- a/app/src/module_community/res/layout/activity_publish.xml
+++ b/app/src/module_community/res/layout/activity_publish.xml
@@ -43,7 +43,7 @@
android:paddingTop="@dimen/dp_10"
android:paddingEnd="@dimen/dp_20"
android:paddingBottom="@dimen/dp_10"
- android:textColor="@color/white"
+ android:textColor="@color/text_title_white"
android:textColorHint="@color/text_secondary_4f516a"
android:textSize="@dimen/sp_13"
app:layout_constraintTop_toBottomOf="@id/title_bar" />
diff --git a/app/src/module_quick_pass/java/com/yizhuan/erban/quick_pass/QuickLoginUiConfig.java b/app/src/module_quick_pass/java/com/yizhuan/erban/quick_pass/QuickLoginUiConfig.java
index 5fec67294..84b9687cf 100644
--- a/app/src/module_quick_pass/java/com/yizhuan/erban/quick_pass/QuickLoginUiConfig.java
+++ b/app/src/module_quick_pass/java/com/yizhuan/erban/quick_pass/QuickLoginUiConfig.java
@@ -7,7 +7,7 @@ import androidx.core.content.ContextCompat;
import com.netease.nis.quicklogin.helper.UnifyUiConfig;
import com.yizhuan.erban.R;
-import com.yizhuan.xchat_android_core.UriProvider;
+import com.yizhuan.xchat_android_core.PreferencesUtils;
/**
* Created by hzhuqi on 2019/12/31
@@ -27,6 +27,7 @@ public class QuickLoginUiConfig {
int X_OFFSET = 0;
int BOTTOM_OFFSET = 0;
+ final boolean privacyState = PreferencesUtils.readPrivacyState();
UnifyUiConfig uiConfig = new UnifyUiConfig.Builder()
// 状态栏
.setStatusBarDarkColor(false)
@@ -80,20 +81,23 @@ public class QuickLoginUiConfig {
*/
// .setPrivacyXOffset(43)
- .setPrivacyState(false)
+ .setPrivacyState(privacyState)
.setPrivacySize(12)
// .setPrivacyTopYOffset(510)
.setPrivacyBottomYOffset(20)
+ .setPrivacyXOffset(20)
+ .setPrivacyMarginRight(20)
.setCheckedImageName("quick_pass_checked")
.setUnCheckedImageName("quick_pass_uncheck")
// 协议详情页导航栏
.setProtocolPageNavTitle("服务条款")
.setProtocolPageNavBackIcon("quick_pass_back")
.setProtocolPageNavColor(Color.WHITE)
-
-// .setBackgroundImage("bg1")
- // 自定义控件
-// .addCustomView(otherLoginRel, "relative", UnifyUiConfig.POSITION_IN_BODY, null)
+ .setClickEventListener((viewType, code) -> {
+ if (viewType == 2) {
+ PreferencesUtils.savePrivacyState(code == 1);
+ }
+ })
.build(context);
return uiConfig;
}
diff --git a/app/src/module_quick_pass/java/com/yizhuan/erban/quick_pass/QuickPassLoginAct.java b/app/src/module_quick_pass/java/com/yizhuan/erban/quick_pass/QuickPassLoginAct.java
index 3ab4279b9..2cc13c0e8 100644
--- a/app/src/module_quick_pass/java/com/yizhuan/erban/quick_pass/QuickPassLoginAct.java
+++ b/app/src/module_quick_pass/java/com/yizhuan/erban/quick_pass/QuickPassLoginAct.java
@@ -177,7 +177,6 @@ public class QuickPassLoginAct extends BaseLoginAct implements View.OnClickListe
login.onePass(new QuickLoginTokenListener() {
@Override
public void onGetTokenSuccess(String s, String s1) {
- getDialogManager().showProgressDialog(QuickPassLoginAct.this);
setClickEnable(false);
AuthModel.get().quickPassLogin(s, s1, "", "")
.compose(bindToLifecycle())
@@ -192,15 +191,13 @@ public class QuickPassLoginAct extends BaseLoginAct implements View.OnClickListe
@Override
public void onSuccess(String s) {
setClickEnable(false);
- getDialogManager().dismissDialog();
- finish();
+ login.quitActivity();
StatisticManager.Instance().onEvent(
StatisticsProtocol.Event.EVENT_ONE_CLICK_LOGIN_SUCCEED, "一键登录成功");
}
@Override
public void onError(Throwable e) {
- getDialogManager().dismissDialog();
dealWithLoginError(e);
setClickEnable(true);
StatisticManager.Instance().onEvent(
diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/UriProvider.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/UriProvider.java
index d0fbce467..f0928fc31 100644
--- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/UriProvider.java
+++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/UriProvider.java
@@ -348,4 +348,35 @@ public class UriProvider {
return IM_SERVER_URL.concat("/yinyou/modules/room_rank/index.html?roomUid="+ AvRoomDataManager.get().getRoomUid());
}
+ /**
+ * 第三方SDK协议
+ *
+ * @return
+ */
+ public static String getSDKPermissionUrl() {
+ return JAVA_WEB_URL.concat("/yinyou/modules/rule/sdk.html");
+ }
+
+ /**
+ * 隐私协议设备权限
+ *
+ * @return
+ */
+ public static String getDeivcePermissionUrl() {
+ return JAVA_WEB_URL.concat("/yinyou/modules/rule/permissions.html");
+ }
+
+ /**
+ * 隐私协议-个人信息
+ */
+ public static String getPersonalInfoUrl() {
+ return JAVA_WEB_URL.concat("/yinyou/modules/rule/personal-info.html");
+ }
+
+ /**
+ * 隐私指引
+ */
+ public static String getPrivacyUrl() {
+ return JAVA_WEB_URL.concat("/yinyou/modules/rule/privacy-wap.html");
+ }
}
diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/RtcEngineManager.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/RtcEngineManager.java
deleted file mode 100644
index 5c8bc2268..000000000
--- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/RtcEngineManager.java
+++ /dev/null
@@ -1,634 +0,0 @@
-package com.yizhuan.xchat_android_core.manager;
-
-import android.annotation.SuppressLint;
-import android.os.Environment;
-import android.os.Handler;
-import android.os.Message;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.annotation.Nullable;
-
-import com.yizhuan.xchat_android_constants.XChatConstants;
-import com.yizhuan.xchat_android_core.auth.AuthModel;
-import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
-import com.yizhuan.xchat_android_core.room.ktv.event.RemoteVideoEvent;
-import com.yizhuan.xchat_android_core.room.queue.bean.MicMemberInfo;
-import com.yizhuan.xchat_android_core.statistic.LogFactory;
-import com.yizhuan.xchat_android_core.statistic.StatisticManager;
-import com.yizhuan.xchat_android_core.statistic.protocol.LogProtocol;
-import com.yizhuan.xchat_android_library.rxbus.RxBus;
-import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
-import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
-
-import java.io.File;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import io.agora.ktvkit.IKTVKitEventHandler;
-import io.agora.ktvkit.KTVKit;
-import io.agora.rtc.Constants;
-import io.agora.rtc.IRtcEngineEventHandler;
-import io.agora.rtc.RtcEngine;
-import io.agora.rtc.video.VideoCanvas;
-
-import static io.agora.rtc.Constants.AUDIO_PROFILE_MUSIC_STANDARD;
-import static io.agora.rtc.Constants.AUDIO_RECORDING_QUALITY_LOW;
-import static io.agora.rtc.Constants.AUDIO_SCENARIO_GAME_STREAMING;
-
-/**
- * 声网管理类
- *
- * @author jiahui
- * @date 2017/12/12
- */
-public final class RtcEngineManager {
-
- @Nullable
- private RtcEngine mRtcEngine;
-
- /**
- * 队列说话列表
- */
- private List speakQueueMembersPosition;
- private String uid;
- public boolean isAudienceRole;
- /**
- * 麦上是否闭麦,true:闭麦,false:开麦
- */
- public boolean isMute;
- /**
- * 听筒是否关闭
- */
- public boolean isRemoteMute;
- private boolean needRecord;
- private boolean isOpenAVRoomActivity;
- private boolean isOpenVoiceMatchActivity;
- //是否在房间,判断是切换品质还是第一次进
- private boolean inRoom;
- private EngineEventHandler eventHandler;
-
- private static final class Helper {
- private static final RtcEngineManager INSTANCE = new RtcEngineManager();
- }
-
- private RtcEngineManager() {
- System.out.println("hehehehe" + RtcEngine.getSdkVersion());
- speakQueueMembersPosition = new ArrayList<>();
- }
-
- public static RtcEngineManager get() {
- return Helper.INSTANCE;
- }
-
- public void startRtcEngine(long uid) {
- RoomInfo curRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
- joinChannel(curRoomInfo.getRoomId(), uid);
- if (curRoomInfo.getUid() == uid && curRoomInfo.getType() != RoomInfo.ROOMTYPE_HOME_PARTY) {
- //设置用户角色为主播,轰趴房不能默认设置房主为主播
- setRole(Constants.CLIENT_ROLE_BROADCASTER);
- } else {
- setRole(Constants.CLIENT_ROLE_AUDIENCE);
- }
- }
-
- public void joinChannel(long channelId, long uid) {
- initRtcEngine(channelId, uid, AUDIO_PROFILE_MUSIC_STANDARD, AUDIO_SCENARIO_GAME_STREAMING);
- }
-
- private void initRtcEngine(long channelId, long uid, int quality, int audioShowRoom) {
- this.uid = uid + "";
- this.isMute = false;
- this.isRemoteMute = false;
- enterChannel(channelId, (int) uid, quality, audioShowRoom);
- }
-
- private void enterChannel(long channelId, int uid, int quality, int audioShowRoom) {
- if (eventHandler == null) {
- eventHandler = new EngineEventHandler(this);
- }
- eventHandler.isEnter = true;
- if (mRtcEngine == null) {
- try {
- mRtcEngine = RtcEngine.create(BasicConfig.INSTANCE.getAppContext(), XChatConstants.AGORA_KEY, eventHandler);
- } catch (Exception e) {
- throw new RuntimeException("NEED TO check rtc sdk init fatal error\n" + Log.getStackTraceString(e));
- }
- //设置频道模式为直播
- mRtcEngine.setChannelProfile(Constants.CHANNEL_PROFILE_LIVE_BROADCASTING);
- mRtcEngine.setAudioProfile(quality, audioShowRoom);
- mRtcEngine.enableAudioVolumeIndication(600, 3,false);
- mRtcEngine.setDefaultAudioRoutetoSpeakerphone(true);
- mRtcEngine.setExternalVideoSource(true, false, true);
- mRtcEngine.setRecordingAudioFrameParameters(48000, 2, 2, 960);
- mRtcEngine.setVideoProfile(Constants.VIDEO_PROFILE_360P, false);
- mRtcEngine.enableDualStreamMode(true);
- mRtcEngine.setParameters(String.format(Locale.US, "{\"che.audio.headset.monitoring,true\"}"));
- mRtcEngine.setParameters(String.format(Locale.US, "{\"che.audio.enable.androidlowlatencymode,true\"}"));
- mRtcEngine.setLogFile(Environment.getExternalStorageDirectory()
- + File.separator + BasicConfig.INSTANCE.getAppContext().getPackageName() + "/log/agora-rtc.log");
- }
- //创建并加入频道
- mRtcEngine.joinChannel(null, String.valueOf(channelId), null, uid);
- }
-
-
- public int stopAudioMixing() {
- if (mRtcEngine != null) {
- return mRtcEngine.stopAudioMixing();
- }
- return -1;
- }
-
- public void leaveChannel() {
- if (mRtcEngine != null) {
- stopAudioMixing();
- mRtcEngine.leaveChannel();
- mRtcEngine = null;
- }
- if (handler != null)
- handler.removeCallbacksAndMessages(null);
- isMute = false;
- isRemoteMute = false;
- needRecord = false;
- inRoom = false;
- }
-
- public void setOpenAVRoomActivity(boolean openAVRoomActivity) {
- isOpenAVRoomActivity = openAVRoomActivity;
- setRemoteMute(isRemoteMute);
- setMute(isMute);
- }
-
- public void setOpenVoiceMatchActivity(boolean openVoiceMatchActivity) {
- isOpenVoiceMatchActivity = openVoiceMatchActivity;
- setRemoteMute(isRemoteMute);
- setMute(isMute);
- }
-
- //设置静音
- public void setRemoteMute(boolean mute) {
- if (mRtcEngine != null) {
- int result = mRtcEngine.muteAllRemoteAudioStreams(mute || (isOpenVoiceMatchActivity && !isOpenAVRoomActivity));
- if (result == 0) {
- isRemoteMute = mute;
- }
- }
- }
-
- public void setRemoteMute(int uid, boolean mute) {
- if (mRtcEngine != null) {
- mRtcEngine.muteRemoteAudioStream(uid, mute);
- }
- }
-
- public void setRemoteMute(MicMemberInfo chatRoomMember, boolean mute) {
- if (chatRoomMember != null && !TextUtils.isEmpty(chatRoomMember.getAccount())) {
- String account = chatRoomMember.getAccount();
- Integer uid = Integer.valueOf(account);
- if (uid != 0)
- AudioEngineManager.get().setRemoteMute(uid, false);
- }
- }
-
- /**
- * 设置角色,上麦,下麦(调用)
- *
- * @param role CLIENT_ROLE_AUDIENCE: 听众 ,CLIENT_ROLE_BROADCASTER: 主播
- */
- public void setRole(int role) {
- if (mRtcEngine != null) {
- //先已是否静音为准
- mRtcEngine.setClientRole(role);
- isAudienceRole = role != Constants.CLIENT_ROLE_BROADCASTER;
- }
- }
-
- /**
- * 设置是否能说话,静音,人自己的行为
- *
- * @param mute true:静音,false:不静音
- */
- @SuppressLint("CheckResult")
- public void setMute(boolean mute) {
- if (mRtcEngine != null) {
- int result = mRtcEngine.muteLocalAudioStream(mute || (isOpenVoiceMatchActivity && !isOpenAVRoomActivity));
- if (result == 0) {
- isMute = mute;
- }
- }
- }
-
- private Handler handler = new RtcEngineHandler(this);
-
- private static class RtcEngineHandler extends Handler {
- private WeakReference mReference;
-
- RtcEngineHandler(RtcEngineManager manager) {
- mReference = new WeakReference<>(manager);
- }
-
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- RtcEngineManager rtcEngineManager = mReference.get();
- if (rtcEngineManager == null) return;
- if (msg.what == 0) {
- if (!RtcEngineManager.get().inRoom) {
- IMNetEaseManager.get().joinAvRoom();
- }
-
- RtcEngineManager.get().inRoom = true;
- if (rtcEngineManager.needRecord && rtcEngineManager.mRtcEngine != null) {
- rtcEngineManager.mRtcEngine.startAudioRecording(Environment.getExternalStorageDirectory()
- + File.separator + BasicConfig.INSTANCE.getAppContext().getPackageName()
- + "/audio/" + System.currentTimeMillis() + ".aac", AUDIO_RECORDING_QUALITY_LOW);
- }
-
- } else if (msg.what == 1) {//onAudioVolumeIndication 说话声音音量提示回调
- IRtcEngineEventHandler.AudioVolumeInfo[] speakers = (IRtcEngineEventHandler.AudioVolumeInfo[]) msg.obj;
- RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
- if (roomInfo == null) return;
- if (rtcEngineManager.speakQueueMembersPosition.size() > 0) {
- rtcEngineManager.speakQueueMembersPosition.clear();
- }
- if (speakers == null || speakers.length == 0) return;
- for (IRtcEngineEventHandler.AudioVolumeInfo speaker : speakers) {
- // 0 代表的是房主,其他代表的是uid
- int uid = speaker.uid == 0 ? Integer.valueOf(rtcEngineManager.uid) : speaker.uid;
- int micPosition = AvRoomDataManager.get().getMicPosition(uid);
- // 如果是房主的话,并且房主的mic位置没有的啊,则把房主的位置设置为-1(兼容ios轻聊房光晕)
- if (uid == AvRoomDataManager.get().mCurrentRoomInfo.getUid() &&
- AvRoomDataManager.get().mCurrentRoomInfo.getType() == RoomInfo.ROOMTYPE_LIGHT_CHAT
- && micPosition == Integer.MIN_VALUE) {
- micPosition = -1;
- }
- if (micPosition == Integer.MIN_VALUE &&
- uid == AuthModel.get().getCurrentUid()) {
- // 如果麦上没有自己,并且自己在说话,要把自己变成听众
- AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_AUDIENCE);
- } else if (micPosition == Integer.MIN_VALUE &&
- uid != AuthModel.get().getCurrentUid()) {
- // 如果麦上没有这个人,要把他静音
- AudioEngineManager.get().setRemoteMute(uid, true);
- }
- if (micPosition == Integer.MIN_VALUE) continue;
- rtcEngineManager.speakQueueMembersPosition.add(micPosition);
- }
- IMNetEaseManager.get().getChatRoomEventObservable().onNext(
- new RoomEvent().setEvent(RoomEvent.SPEAK_STATE_CHANGE)
- .setMicPositionList(rtcEngineManager.speakQueueMembersPosition)
- );
- } else if (msg.what == 2) {//onUserMuteAudio 用户静音回调
- Integer uid = (Integer) msg.obj;
- }
- }
- }
-
- private static class EngineEventHandler extends IRtcEngineEventHandler {
- private WeakReference mReference;
- private boolean isEnter;
-
- EngineEventHandler(RtcEngineManager manager) {
- mReference = new WeakReference<>(manager);
- isEnter = true;
- }
-
- @Override
- public void onJoinChannelSuccess(String channel, int uid, int elapsed) {
- super.onJoinChannelSuccess(channel, uid, elapsed);
- //声网进入频道成功日志
- StatisticManager.Instance().sendAliyunLog(LogFactory.create(
- LogProtocol.LogLevel.LEVEL_VERBOSE,
- LogProtocol.Topic.TOPIC_AUDIO_LOG,
- LogProtocol.Event.EVENT_AUDIO_CHANNEL
- )
- .append("uid", String.valueOf(AuthModel.get().getCurrentUid()))
- .append("type", "1")
- .append("room_id", channel));
- if (mReference.get() != null && isEnter) {
- isEnter = false;
- mReference.get().handler.sendEmptyMessage(0);
- }
- }
-
-
- @Override
- public void onRejoinChannelSuccess(String channel, int uid, int elapsed) {
- super.onRejoinChannelSuccess(channel, uid, elapsed);
- //声网重新链接频道成功日志
- StatisticManager.Instance().sendAliyunLog(LogFactory.create(
- LogProtocol.LogLevel.LEVEL_VERBOSE,
- LogProtocol.Topic.TOPIC_AUDIO_LOG,
- LogProtocol.Event.EVENT_AUDIO_CHANNEL
- )
- .append("uid", String.valueOf(AuthModel.get().getCurrentUid()))
- .append("type", "3")
- .append("room_id", channel));
-
- }
-
- @Override
- public void onLeaveChannel(RtcStats stats) {
- super.onLeaveChannel(stats);
- //声网离开频道成功日志
- StatisticManager.Instance().sendAliyunLog(LogFactory.create(
- LogProtocol.LogLevel.LEVEL_VERBOSE,
- LogProtocol.Topic.TOPIC_AUDIO_LOG,
- LogProtocol.Event.EVENT_AUDIO_CHANNEL
- )
- .append("uid", String.valueOf(AuthModel.get().getCurrentUid()))
- .append("type", "2"));
- }
-
- @Override
- public void onUserJoined(int uid, int elapsed) {
- super.onUserJoined(uid, elapsed);
- }
-
- @Override
- public void onActiveSpeaker(int uid) {
- super.onActiveSpeaker(uid);
- }
-
- @Override
- public void onLastmileQuality(int quality) {
- super.onLastmileQuality(quality);
- if (quality >= 3) {
- IMNetEaseManager.postRoomEvent(new RoomEvent().setEvent(RoomEvent.RTC_ENGINE_NETWORK_BAD)
- );
- }
- }
-
- @Override
- public void onConnectionInterrupted() {
- super.onConnectionInterrupted();
- IMNetEaseManager.postRoomEvent(new RoomEvent().setEvent(RoomEvent.RTC_ENGINE_NETWORK_CLOSE));
- }
-
- @Override
- public void onConnectionLost() {
- super.onConnectionLost();
- IMNetEaseManager.postRoomEvent(new RoomEvent().setEvent(RoomEvent.RTC_ENGINE_NETWORK_CLOSE));
- }
-
- @Override
- public void onAudioVolumeIndication(AudioVolumeInfo[] speakers, int totalVolume) {
- super.onAudioVolumeIndication(speakers, totalVolume);
- RtcEngineManager manager = mReference.get();
- if (manager != null) {
- Message message = manager.handler.obtainMessage();
- message.what = 1;
- message.obj = speakers;
- manager.handler.sendMessage(message);
- }
- }
-
- @Override
- public void onUserMuteAudio(int uid, boolean muted) {
- super.onUserMuteAudio(uid, muted);
- RtcEngineManager manager = mReference.get();
- if (manager != null) {
- if (muted) {
- Message message = manager.handler.obtainMessage();
- message.what = 2;
- message.obj = uid;
- manager.handler.sendMessage(message);
- }
- }
- }
-
- @Override
- public void onClientRoleChanged(int oldRole, int newRole) {
- super.onClientRoleChanged(oldRole, newRole);
- if (newRole==1)
- get().setMute(get().isMute);
- }
-
- @Override
- public void onAudioMixingFinished() {//伴奏播放已结束回调
- super.onAudioMixingFinished();
- IMNetEaseManager.get().getChatRoomEventObservable().onNext(
- new RoomEvent().setEvent(RoomEvent.METHOD_ON_AUDIO_MIXING_FINISHED)
- );
- }
-
- @Override
- public void onFirstRemoteVideoDecoded(final int uid, int width, int height, int elapsed) {
- RxBus.get().post(new RemoteVideoEvent(uid));
- get().remoteUid = uid;
- }
- }
-
- //音乐播放相关---------------begin--------------------------
-
- public void adjustAudioMixingVolume(int volume) {
- if (mRtcEngine != null) {
- mRtcEngine.adjustAudioMixingVolume(volume);
- }
- }
-
- public void adjustRecordingSignalVolume(int volume) {
- if (mRtcEngine != null) {
- mRtcEngine.adjustRecordingSignalVolume(volume);
- }
- }
-
- public int resumeAudioMixing() {
- if (mRtcEngine != null) {
- int result = mRtcEngine.resumeAudioMixing();
- return result;
- }
- return -1;
- }
-
- public int pauseAudioMixing() {
- if (mRtcEngine != null) {
- int result = mRtcEngine.pauseAudioMixing();
- return result;
- }
- return -1;
- }
-
-
- public int startAudioMixing(String filePath, boolean loopback, int cycle) {
- if (mRtcEngine != null) {
- mRtcEngine.stopAudioMixing();
- int result = 0;
- try {
- result = mRtcEngine.startAudioMixing(filePath, loopback, false, cycle);
- } catch (Exception e) {
- return -1;
- }
- return result;
- }
- return -1;
- }
-
- public int getAudioMixingCurrentPosition() {
- return mRtcEngine.getAudioMixingCurrentPosition();
- }
-
- public int getAudioMixingDuration() {
- return mRtcEngine.getAudioMixingDuration();
- }
- //音乐播放相关---------------end--------------------------
-
-
- //ktv相关---------------begin--------------------------
- private boolean isPlaying;
- private boolean isAccompany = true;
- private boolean isPush;
- private boolean isOpenKtv;
- private boolean isLive;
- private int remoteUid;
- private double accompanyVoice = 0.5;
- private double personVoice = 0.5;
- @Nullable
- private KTVKit ktvKit;
-
- public synchronized void openKtvModel() {
- if (mRtcEngine == null || isOpenKtv) return;
- try {
- ktvKit = KTVKit.create(mRtcEngine, BasicConfig.INSTANCE.getAppContext(), new IKTVKitEventHandler() {
- @Override
- public void onPlayerError(int error) {
- SingleToastUtil.showToast("MV播放出现未知错误,可以点击报错向我们反馈哦~~");
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
- mRtcEngine.enableVideo();
- mRtcEngine.enableLocalVideo(false);
- isOpenKtv = true;
- }
-
- public synchronized void closeKtvModel() {
- if (!isOpenKtv) return;
- stopPush();
- isPlaying = false;
- isOpenKtv = false;
- isLive = false;
- if (mRtcEngine != null) {
- mRtcEngine.disableVideo();
- }
- if (ktvKit != null) {
- KTVKit.destroy();
- ktvKit = null;
- }
- }
-
- public void stopPush() {
- if (isPush){
- isPush = false;
- if (mRtcEngine != null) {
- mRtcEngine.muteLocalVideoStream(true);
- mRtcEngine.enableLocalVideo(false);
- // mRtcEngine.enableInEarMonitoring(false);
- }
- if (ktvKit != null) ktvKit.stopPlayVideoFile();
- }
- }
-
- public synchronized void startMv(String url) {
- if (ktvKit == null || mRtcEngine == null || !isOpenKtv || !AvRoomDataManager.get().isOwnerOnMic())
- return;
- mRtcEngine.enableLocalVideo(true);
- mRtcEngine.muteLocalVideoStream(false);
- ktvKit.openAndPlayVideoFile(url);
- setAccompanyVoice(accompanyVoice);
- setPersonVoice(personVoice);
- isPlaying = true;
- isPush = true;
- isLive = true;
- }
-
- public synchronized void setupRemoteVideo(VideoCanvas canvas, int remoteUid) {
- if (mRtcEngine != null && isOpenKtv) {
- isPlaying = true;
- isLive = true;
- mRtcEngine.setupRemoteVideo(canvas);
- }
- }
-
-
- public void playOrPause() {
- if (ktvKit != null) ktvKit.pause();
- isPlaying = !isPlaying;
- }
-
- public void changeAudioStream() {
- if (ktvKit != null) ktvKit.switchAudioTrack();
- isAccompany = !isAccompany;
- }
-
- public void setAccompanyVoice(double progress) {
- if (progress < 0 || progress > 1) {
- return;
- }
- accompanyVoice = progress;
- if (ktvKit != null) ktvKit.adjustAccompanyVolume(progress);
- }
-
- public void setPersonVoice(double progress) {
- if (progress < 0 || progress > 1) {
- return;
- }
- personVoice = progress;
- if (ktvKit != null) ktvKit.adjustVoiceVolume(personVoice);
- }
-
- public boolean isPlaying() {
- return isPlaying;
- }
-
- public boolean isPush() {
- return isPush;
- }
-
- public boolean isAccompany() {
- return isAccompany;
- }
-
- public boolean isOpenKtv() {
- return isOpenKtv;
- }
-
- public boolean isLive() {
- return isLive;
- }
-
- public void setLive(boolean live) {
- isLive = live;
- }
-
- public int getRemoteUid() {
- return remoteUid;
- }
-
- public double getAccompanyVoice() {
- return accompanyVoice;
- }
-
- public double getPersonVoice() {
- return personVoice;
- }
-
- @Nullable
- public KTVKit getKtvKit() {
- return ktvKit;
- }
-
- public double getPlayPos() {
- return ktvKit == null ? 0 : ktvKit.getCurrentPosition();
- }
-
- public int getPlayDuration() {
- return ktvKit == null ? 0 : ktvKit.getDuration();
- }
-
- //ktv相关---------------end--------------------------
-}
diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/trtc/TRTCEngineAdapter.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/trtc/TRTCEngineAdapter.java
index 99f0c2e59..08e9089d0 100644
--- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/trtc/TRTCEngineAdapter.java
+++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/trtc/TRTCEngineAdapter.java
@@ -299,16 +299,6 @@ public class TRTCEngineAdapter extends BaseAdapterImpl {
if (setLiveTransCodingFlag) {
sInstance.setLiveTranscoding(currentTranscodingConfig);
}
- if (bDefaultMuteAllRemoteAudioStreams) {
- trtcCloud.muteRemoteAudio(userId, true);
- } else {
- trtcCloud.muteRemoteAudio(userId, false);
- }
- if (bDefaultMuteAllRemoteVideoStreams) {
- trtcCloud.muteRemoteVideoStream(userId, true);
- } else {
- trtcCloud.muteRemoteVideoStream(userId, false);
- }
}
@Override
diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/trtc/TRtcEngineManager.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/trtc/TRtcEngineManager.java
index 00ce3bf7b..5bec5ec88 100644
--- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/trtc/TRtcEngineManager.java
+++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/trtc/TRtcEngineManager.java
@@ -139,8 +139,8 @@ public class TRtcEngineManager extends BaseEngine {
@Override
public void setRemoteMute(long uid, boolean mute) {
Logger.t(TAG).d("setRemoteMute uid:%s mute:%s", uid, mute);
-
- if (mRtcEngine != null) {
+ //调用这个方法会影导致muteAllRemoteAudioStreams(true)失效!
+ if (mRtcEngine != null && !isRemoteMute) {
mRtcEngine.muteRemoteAudioStream((int) uid, mute);
}
}
diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/PreferencesUtils.java b/core/src/main/java/com/yizhuan/xchat_android_core/PreferencesUtils.java
index 485efc0a0..8fca9cf56 100644
--- a/core/src/main/java/com/yizhuan/xchat_android_core/PreferencesUtils.java
+++ b/core/src/main/java/com/yizhuan/xchat_android_core/PreferencesUtils.java
@@ -27,6 +27,7 @@ public class PreferencesUtils {
private static final String KEY_ACCOUNT_INFO = "AccountInfo";
private static final String KEY_NOTI_TOGGLE = "NotiToggle";
private static final String KEY_NOTI_CONFIG = "StatusBarNotificationConfig";
+ private static final String KEY_AGREE_PRIVACY = "key_agree_privacy";
public static void saveTicketInfo(TicketInfo ticketInfo) {
@@ -77,6 +78,7 @@ public class PreferencesUtils {
public static void setFristSendGold(boolean isOpen) {
SettingsPref.instance(BasicConfig.INSTANCE.getAppContext()).putBoolean(KEY_FRIST_SEED_GOLD, isOpen);
}
+
public static boolean readFristQQ() {
return SettingsPref.instance(BasicConfig.INSTANCE.getAppContext()).getBoolean(KEY_FRIST_QQ, true);
}
@@ -84,6 +86,7 @@ public class PreferencesUtils {
public static void setFristQQ(boolean isOpen) {
SettingsPref.instance(BasicConfig.INSTANCE.getAppContext()).putBoolean(KEY_FRIST_QQ, isOpen);
}
+
public static boolean readFristUser() {
return SettingsPref.instance(BasicConfig.INSTANCE.getAppContext()).getBoolean(KEY_FRIST_USER, true);
}
@@ -93,7 +96,6 @@ public class PreferencesUtils {
}
-
public static void saveStatusBarNotificationConfig(StatusBarNotificationConfig notificationConfig) {
ObjectPref.instance(BasicConfig.INSTANCE.getAppContext()).put(KEY_NOTI_CONFIG, notificationConfig);
}
@@ -109,4 +111,12 @@ public class PreferencesUtils {
saveTicketInfo(new TicketInfo());
saveLoginInfo(new LoginInfo("", ""));
}
+
+ public static void savePrivacyState(boolean privacy) {
+ ObjectPref.instance(BasicConfig.INSTANCE.getAppContext()).put(KEY_AGREE_PRIVACY, privacy);
+ }
+
+ public static boolean readPrivacyState() {
+ return (boolean) ObjectPref.instance(BasicConfig.INSTANCE.getAppContext()).get(KEY_AGREE_PRIVACY, false);
+ }
}
diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserDetailInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserDetailInfo.java
index aec203057..b1d3203e6 100644
--- a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserDetailInfo.java
+++ b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserDetailInfo.java
@@ -53,6 +53,7 @@ public class UserDetailInfo implements Serializable {
* userGiftWall : [{"uid":935007,"giftPrice":100,"giftId":1362,"giftName":"棒棒糖","picUrl":"http://image.doudouyuyin.com/FutM6ydZBdAn6Iz_ro7mgen1Cmph?imageslim","reciveCount":152}]
* dynamicInfo : [{"uid":935007,"worldId":-1,"content":"人生不如意之事 十之八九\n放下才是解脱","likeCount":1,"commentCount":2,"dynamicId":1339,"publishTime":1587726740000,"playCount":0,"type":2,"dynamicResList":[{"id":950,"resUrl":"https://image.zhongjialx.com/FhWRCGNLYybra8--ItDfuN3lpCIX?imageslim","resDuration":0,"format":"jpeg","width":2000,"height":1500}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://image.zhongjialx.com/rotate_picture_1587010848888.jpg?imageslim"},{"uid":935007,"worldId":-1,"content":"努力,才能保证你的价值🌹🌷💐🥀🍂🍁🌼🌸🌺🍃🌾🌱🌾🎍🌵🌵🌿🍀🌳🌳💐🌻🌷🌻","likeCount":1,"commentCount":1,"dynamicId":1337,"publishTime":1587726053000,"playCount":0,"type":2,"dynamicResList":[{"id":948,"resUrl":"https://image.zhongjialx.com/FhwRh_iAaqRkgsOZdHK3n3TM75Zq?imageslim","resDuration":0,"format":"jpeg","width":2000,"height":1500}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://image.zhongjialx.com/rotate_picture_1587010848888.jpg?imageslim"},{"uid":935007,"worldId":-1,"content":"盘他","likeCount":1,"commentCount":1,"dynamicId":1330,"publishTime":1587721604000,"playCount":0,"type":2,"dynamicResList":[{"id":947,"resUrl":"https://image.zhongjialx.com/FpthMLmgrkDHfEatTBKb0h05mnXj?imageslim","resDuration":0,"format":"jpeg","width":1080,"height":1672}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://image.zhongjialx.com/rotate_picture_1587010848888.jpg?imageslim"},{"uid":935007,"worldId":-1,"content":"铁汁,奥力给,没毛病吧?!","likeCount":1,"commentCount":3,"dynamicId":1329,"publishTime":1587720609000,"playCount":0,"type":2,"dynamicResList":[{"id":946,"resUrl":"https://image.zhongjialx.com/FtV48sdlmrKkc69OSft43J-S7wDk?imageslim","resDuration":0,"format":"png","width":1080,"height":1920}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://image.zhongjialx.com/rotate_picture_1587010848888.jpg?imageslim"},{"uid":935007,"worldId":-1,"content":"上热门🦆","likeCount":5,"commentCount":7,"dynamicId":1327,"publishTime":1587711821000,"playCount":0,"type":2,"dynamicResList":[{"id":938,"resUrl":"https://image.zhongjialx.com/FgInE7evjBy8lL33uHkmvORMlC1_?imageslim","resDuration":0,"format":"jpeg","width":1296,"height":1728}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://image.zhongjialx.com/rotate_picture_1587010848888.jpg?imageslim"}]
* privatePhoto : [{"photoUrl":"https://image.zhongjialx.com/rotate_picture_1587010848888.jpg?imageslim","seqNo":0}]
+ isReview boolean
*/
private int uid;
@@ -375,6 +376,7 @@ public class UserDetailInfo implements Serializable {
private String photoUrl;
private int seqNo;
+ private boolean isReview;
public String getPhotoUrl() {
return photoUrl;
@@ -391,6 +393,14 @@ public class UserDetailInfo implements Serializable {
public void setSeqNo(int seqNo) {
this.seqNo = seqNo;
}
+
+ public boolean isReview() {
+ return isReview;
+ }
+
+ public void setReview(boolean review) {
+ isReview = review;
+ }
}
}
}
diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java
index 0c91fe848..c10c3d3de 100644
--- a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java
+++ b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java
@@ -48,6 +48,10 @@ public class UserInfo implements Serializable {
private String nick;
//头像
private String avatar;
+ //isReview头像是否在审核中
+ private boolean isReview;
+ //新的头像
+ private String newAvatar;
//性别 1:男 2:女 0 :未知
private int gender;
//生日
@@ -350,6 +354,8 @@ public class UserInfo implements Serializable {
this.phone = userInfo.phone;
this.isBindPhone = userInfo.isBindPhone;
this.bindType = userInfo.bindType;
+ this.isReview = userInfo.isReview;
+ this.newAvatar = userInfo.newAvatar;
}
//
@@ -537,6 +543,22 @@ public class UserInfo implements Serializable {
return remainDay;
}
+ public void setNewAvatar(String newAvatar) {
+ this.newAvatar = newAvatar;
+ }
+
+ public String getNewAvatar() {
+ return newAvatar;
+ }
+
+ public void setReview(boolean review) {
+ isReview = review;
+ }
+
+ public boolean isReview() {
+ return isReview;
+ }
+
public void setRemainDay(int remainDay) {
this.remainDay = remainDay;
}
diff --git a/nim_uikit/res/values/colors.xml b/nim_uikit/res/values/colors.xml
index 68409c0bc..8035150c8 100644
--- a/nim_uikit/res/values/colors.xml
+++ b/nim_uikit/res/values/colors.xml
@@ -61,6 +61,7 @@
#ff333333
+ #0A333333
#ff666666
#ff999999
#bfc2c5