128 Commits

Author SHA1 Message Date
Max
136b3133ce feat:针对google play的审核调整(无障碍相关) 2024-01-24 11:08:56 +08:00
Max
015922bd90 feat:完善混淆操作文档 2024-01-23 14:43:56 +08:00
Max
8aba5ebaa2 fix:解决googleplay审核问题(onReceivedSslError) 2024-01-23 11:38:28 +08:00
Max
db75f129ee fix:修复压缩路径遍历问题(google play:Zip Path Traversal ) 2024-01-23 11:17:39 +08:00
Max
6cfc44285e chore:移除zego-SDK 2024-01-23 11:16:48 +08:00
Max
8b33e2536a chore:google渠道去掉x86 2024-01-22 19:56:50 +08:00
Max
9d2c83ff6b chore:补充aabres-mapping文件(暂时用不上) 2024-01-22 18:13:57 +08:00
Max
bf9fd90010 混淆配置:添加自定义混淆字典 2024-01-22 18:13:26 +08:00
Max
521d351e92 混淆配置:调整bean相关配置规则 2024-01-22 14:04:40 +08:00
Max
41cd821233 chore:调整App子文件位置 2024-01-22 14:00:06 +08:00
Max
670e305f60 chore:调整app包子文件位置 2024-01-22 13:58:18 +08:00
Max
153898c1a1 chore:补充aabresGuard的依赖配置 2024-01-22 13:49:47 +08:00
Max
b463797df9 混淆配置:添加aabresguard插件及配置 2024-01-22 13:47:30 +08:00
Max
bcd1e37115 混淆配置:内部类补充keep 2024-01-22 13:42:34 +08:00
Max
de48c6c071 feat:调试路径混淆策略 2024-01-20 23:34:00 +08:00
Max
a9c87c7f76 feat:调整Mob初始化参数 2024-01-20 23:32:49 +08:00
Max
bae04574bf 混淆配置:调整混淆配置脚本 2024-01-20 16:38:35 +08:00
Max
718e4eb76d fix:修复分享复制链接点击无响应 2024-01-20 16:32:40 +08:00
Max
4e6a5e0fa5 混淆配置:修改StringExtansion上一级包名为ktx,方便脚本过滤 2024-01-20 14:38:40 +08:00
Max
3a84f71fcd feat:路径混淆支持白名单 2024-01-20 12:16:10 +08:00
Max
72a362f2a6 fix:删除刚刚修改导致的多余字符 2024-01-20 11:45:55 +08:00
Max
f71b49bdcd 混淆配置:调整RxExtenion位置,方便混淆脚本筛选 2024-01-20 11:45:22 +08:00
Max
81310b7d9e 混淆配置:PhotoCompressUtil内部类导致混淆问题 2024-01-20 11:43:41 +08:00
Max
305fc47512 fix:修复VipMainViewModel内LiveData空检验问题 2024-01-20 11:41:11 +08:00
Max
237c98c38d 混淆配置:移除无用类package-info.java 2024-01-20 11:40:18 +08:00
Max
ef7603237d 混淆配置:增加LifecycleCleared包配置,避免混淆失败 2024-01-20 11:37:58 +08:00
Max
0cc5d56f10 chore:调整混淆脚本 2024-01-20 11:34:57 +08:00
Max
9b27d3b395 feat:增加接口路径混淆拦截器 2024-01-19 18:21:13 +08:00
Max
4feed5409d feat:重命名GradientDrawableCreator,文件名与类名不一致导致混淆异常 2024-01-19 12:48:50 +08:00
Max
66fcf3caae feat:替换闪屏页的logo图 2024-01-19 11:25:04 +08:00
Max
74c7b2d3fe feat:修改logo 2024-01-19 11:11:30 +08:00
Max
b3151fda75 chore:重命名code.Constants,移动XChatConstants目录 2024-01-19 11:04:04 +08:00
Max
3b7db71b86 chore:移动包脚本:新增随机包名+md5取反(尽量避免与之前一致) 2024-01-18 19:19:23 +08:00
Max
4a990a4d62 chore:调整混淆规则(减少范围) 2024-01-18 19:11:05 +08:00
Max
e79c75fcbf chore:编译不通过处理:空检验 2024-01-18 19:03:04 +08:00
Max
30ec9bcf03 feat:line引用错误处理 2024-01-18 16:39:10 +08:00
Max
0f6e4f8699 feat:隐藏line相关入口 2024-01-18 16:05:26 +08:00
Max
8a70c1bb32 chore:调整混淆范围 2024-01-18 09:09:17 +08:00
Max
c37ecad328 feat:引入xmlclassguard插件及混淆辅助脚本 2024-01-17 18:46:44 +08:00
Max
c0cbc8b62c chore:调整library-core、utils包命名 2024-01-17 18:31:23 +08:00
Max
d73b530915 chore:正式环境也禁止Crashlytics上传混淆映射文件(暂时不确定是否影响审核) 2024-01-17 17:52:32 +08:00
Max
4788605b46 feat:升级Gradle版本到7.4.2 2024-01-17 17:50:05 +08:00
Max
4f5134a7a1 混淆配置:无用类清理 2024-01-17 17:05:49 +08:00
Max
56d9d8f5da 混淆配置:同名类处理 2024-01-17 17:04:11 +08:00
Max
bd6c421995 混淆配置:ItemEventListener独立,避免干扰 2024-01-17 16:46:54 +08:00
Max
b27df1cb89 混淆配置:处理databing导致混淆问题 2024-01-17 16:45:24 +08:00
Max
fdc7d338c1 混淆配置:xml&databind引用错误处理 2024-01-17 16:37:29 +08:00
Max
29ced00df8 混淆配置:同名类冲突处理 2024-01-17 16:14:34 +08:00
Max
9591c3dc37 混淆配置:补充刚才的修改 2024-01-17 16:14:08 +08:00
Max
5e57ff80ee 混淆配置:扩展类文件隔离,避免失败 2024-01-17 16:09:08 +08:00
Max
9ac9923e3a 混淆配置:重命名StringUtils 2024-01-17 16:05:40 +08:00
Max
710868591a 混淆配置:删除无用工具类ArrayUtils 2024-01-17 15:58:53 +08:00
Max
3b47be1bd5 混淆配置:重命名SystemUtils 2024-01-17 15:54:59 +08:00
Max
33f7c8a7fa 混淆配置:重命名Logger 2024-01-17 15:50:41 +08:00
Max
fa97defc82 混淆配置:重命名TextUtils 2024-01-17 15:46:54 +08:00
Max
f96458c2ac chore;调整firebase配置 2024-01-17 14:21:03 +08:00
Max
287222f7ad chore:调整版本号、google渠道名称 2024-01-17 12:01:24 +08:00
Max
151e5c11b1 chore:修改支付KEY 2024-01-17 11:51:09 +08:00
Max
37b3c941e2 chore:调整包名、签名、正式域名 2024-01-17 11:40:53 +08:00
Max
1333250224 feat:完成文件上传SDK集成(腾讯Cos),移除七牛云文件存储SDK
feat:内置的图片选择框架(Matisse),增加返回图片宽高信息,以及Android33权限适配
fix:修复部分场景Android33权限适配问题
2024-01-16 19:06:46 +08:00
Max
9bd8136f92 chore:补充删除部分推送SDK 2024-01-16 09:32:39 +08:00
Max
527340a357 chore:移除厂商推送SDK 2024-01-15 19:48:30 +08:00
Max
beb6c0a846 chore:移除微信支付、支付宝支付、移除人脸SDK,接入google支付(同步peko代码,未经测试) 2024-01-15 19:30:19 +08:00
Max
b260d2e797 feat:修改第三方SDK配置(IM、声网、TRTC、mob) 2024-01-15 14:40:49 +08:00
Max
81b1cf8124 chore:移除七鱼客服SDK 2024-01-15 14:13:10 +08:00
Max
cbd92a2f10 sync:同步音萌修改记录(针对华为市场审核的调整) 2024-01-15 14:11:55 +08:00
Max
8f0d723fba feat:移除微信、QQ相关的登录分享功能(还未与接口联调测试)
feat:新增google登录、Line登录、Line分享、复制链接(还未与接口联调测试)
2024-01-12 19:15:59 +08:00
Max
db6fdf3266 feat:调整登录页UI(仅UI),移除易盾一键登录SDK 2024-01-12 16:27:18 +08:00
Max
0c1ba80a40 chore:移除umeng-SDK 2024-01-12 15:20:13 +08:00
Max
a7da303a9c feat:移除bugly 2024-01-12 14:57:04 +08:00
Max
3f37821830 feat:集成firebase-analytics、Crashlytics(升级kotlin版本到1.8.22) 2024-01-12 14:08:23 +08:00
Max
56f1ca9f55 feat:移除LinkedMe-SDK 改用MobLink(简单同步Peko,未测试验证) 2024-01-11 19:05:21 +08:00
Max
b9f130b89e feat:屏蔽启动页隐私政策弹窗;
feat:去掉我的(实名认证、青少年、客服中心)入口
feat:去掉设置-绑定支付宝入口
2024-01-11 16:57:17 +08:00
Max
8f31292680 feat:去掉年度盛典icon换回默认的;
feat:关于我们移除备案信息展示
2024-01-11 16:07:39 +08:00
Max
b0d7fdd597 feat:替换加密方式;引入阿里utdid后续设备ID应该用的到 2024-01-11 15:57:35 +08:00
Max
42e26e7f0c feat:升级适配Android13 2024-01-11 14:47:11 +08:00
Max
3ac10340d6 feat:调整多渠道方式(换gradle默认方式) 2024-01-09 15:33:37 +08:00
Max
a10471d1c2 feat:完成华为应用市场权限申请适配(增加提示) 2024-01-09 14:46:05 +08:00
Max
d47536cc13 fix:修复房间榜单数据展示问题(榜二、榜三,数值未渲染) 2024-01-05 10:09:28 +08:00
Max
641c15a91e fix:删减部分代码 2024-01-04 16:02:41 +08:00
Max
f29dc93faa feat:调整客服中心权限拒绝提示判断;增加私聊图片权限检测与提示; 2024-01-04 15:57:29 +08:00
Max
42afa779db feat:调整首页部分文案提示 2024-01-04 14:01:32 +08:00
Max
d300ef179d feat:完善部分场景的权限拒绝提示 2024-01-04 12:14:34 +08:00
Max
ecd6b8da81 feat:调整应用启动图标(年度盛典) 2024-01-04 10:20:32 +08:00
Max
dec6e5e0c1 feat:完成年度庆典:应用logo、首页Tab 图标替换 2024-01-03 14:21:17 +08:00
Max
18b680db70 feat:删除首页-交友列表 无用的样式属性 2023-12-28 20:22:28 +08:00
Max
0fd330848c feat:大富翁游戏隐藏背景 2023-12-28 19:32:23 +08:00
Max
d0d2418dbf fix:修复交友页UI问题 2023-12-28 18:46:20 +08:00
Max
a129fb405e fix:修复首页-交友-数据未正常请求问题 2023-12-28 16:44:16 +08:00
Max
91b006422c feat:首页广场的下拉刷新组件换新样式 2023-12-28 15:49:05 +08:00
Max
d83dbe2337 fix:修复游戏房打开消息弹窗回来导致的闪烁问题:因为生命周期变化调用游戏暂停恢复导致,目前把游戏暂停恢复已到onStart,onStop中 2023-12-28 15:34:52 +08:00
Max
ce27034ca6 feat:恢复房间顶部排行榜入口:游戏房显示一个,其他房间三个 2023-12-28 14:36:20 +08:00
Max
340403fe0d fix:修复TRTC 上麦闭麦状态下还有声音光波问题,参考peko同步调整部分配置 2023-12-28 14:21:41 +08:00
Max
ac8dc50955 fix:调整埋点问题:eventLable为空被拦截问题 2023-12-28 11:06:56 +08:00
Max
32ef74df3a fix:调整游戏房间列表样式问题 2023-12-28 10:55:21 +08:00
Max
e4cb690b68 fix:调整UI问题 2023-12-27 21:15:00 +08:00
Max
96de9e153c feat:优化房间布局(动态状态栏高度) 2023-12-27 20:01:31 +08:00
Max
35032c1f8e feat:调整首页派对-礼物消息-房间上锁的处理 2023-12-27 17:39:01 +08:00
Max
3e1ab090aa feat:完成数据埋点需求 2023-12-27 17:14:07 +08:00
Max
95aeda920a Merge branch 'develop' into test/2.0.0 2023-12-27 15:07:12 +08:00
Max
60d6bbeae8 Merge branch 'feature/game' into test/2.0.0 2023-12-27 15:07:07 +08:00
Max
0b339136cc feat:去掉本地一键匹配的忽略私聊限制:由后端处理 2023-12-27 15:04:40 +08:00
Max
6e7743960c fix:修复首页房间条目点击进房参数问题 2023-12-27 14:57:54 +08:00
Max
7709020221 feat:完成用户资料页优化需求 2023-12-27 14:47:59 +08:00
Max
b9d59e9477 feat:拆分首页ViewModel 2023-12-27 11:22:00 +08:00
Max
321fa1b9ea feat:完成一键匹配入口进私聊:忽略限制功能 2023-12-26 23:22:04 +08:00
Max
ff746b5a11 feat:调整首页下拉刷新UI效果 2023-12-26 22:09:06 +08:00
Max
802383b9e8 feat:初步完成首页下拉动画 2023-12-26 20:20:31 +08:00
Max
b41a2e0376 feat:完成首页-交友UI与数据联调
feat:完成更多游戏房间页面功能
2023-12-26 19:23:15 +08:00
Max
732cea412c feat:调整首页部分类命名与目录结构、删除部分无用类 2023-12-26 10:56:05 +08:00
Max
52db404fc0 Merge branch 'fix/speaker' into develop 2023-12-26 09:53:49 +08:00
Max
2d954d21ef feat:调整TRTC音质级别 2023-12-25 20:56:10 +08:00
Max
b7eb1e66fa fix:修复声网上麦后导致静音失效问题 2023-12-25 20:20:09 +08:00
Max
6491efe708 feat:完善首页交友页UI与数据
feat:删除无用代码(旧首页)
2023-12-25 18:34:22 +08:00
Max
37ed8facf3 feat:完善首页-交友UI 2023-12-22 20:21:50 +08:00
Max
6becbb6226 fix:调整派对-房间-条目边框加载策略 2023-12-22 19:00:06 +08:00
Max
ea19645fe8 feat:删除无用代码 2023-12-22 18:08:58 +08:00
Max
d48844dc14 temp:增加打印ABI信息 2023-12-22 17:09:00 +08:00
Max
a939c29e3e feat:升级TRTC版本(abi开放x86) 2023-12-22 16:24:20 +08:00
Max
e55b4d7348 fix:增加异常捕获打印 2023-12-22 14:56:59 +08:00
Max
583d5a139b feat:调整派对-房间条目样式尺寸
feat:完善交友UI
2023-12-22 12:11:45 +08:00
Max
c7dd6ec61c feat:调整首页相关类命名 2023-12-22 10:08:38 +08:00
Max
a58165213d feat:增加首页动态切换Tab 2023-12-22 09:50:24 +08:00
Max
f21e117e7f feat:首页资源位增加本地缓存 2023-12-22 09:32:22 +08:00
Max
f9bd5b7a9f feat:初步完善【首页-派对】数据与UI对接 2023-12-21 20:24:05 +08:00
Max
b9251a89a5 feat:完成【首页-派对】部分UI 2023-12-20 20:00:39 +08:00
Max
e81d75a8b8 feat:升级最新SUD游戏SDK版本1.3.6.1181,完善房间入口等功能 2023-12-19 18:27:42 +08:00
Max
c691e5f570 feat:初步搭建新版首页页面(未实现功能) 2023-12-19 10:42:53 +08:00
902 changed files with 17267 additions and 15144 deletions

View File

View File

@@ -1,92 +0,0 @@
{
"agcgw":{
"backurl":"connect-drcn.hispace.hicloud.com",
"url":"connect-drcn.dbankcloud.cn",
"websocketbackurl":"connect-ws-drcn.hispace.dbankcloud.com",
"websocketurl":"connect-ws-drcn.hispace.dbankcloud.cn"
},
"agcgw_all":{
"CN":"connect-drcn.dbankcloud.cn",
"CN_back":"connect-drcn.hispace.hicloud.com",
"DE":"connect-dre.dbankcloud.cn",
"DE_back":"connect-dre.hispace.hicloud.com",
"RU":"connect-drru.hispace.dbankcloud.ru",
"RU_back":"connect-drru.hispace.dbankcloud.cn",
"SG":"connect-dra.dbankcloud.cn",
"SG_back":"connect-dra.hispace.hicloud.com"
},
"websocketgw_all":{
"CN":"connect-ws-drcn.hispace.dbankcloud.cn",
"CN_back":"connect-ws-drcn.hispace.dbankcloud.com",
"DE":"connect-ws-dre.hispace.dbankcloud.cn",
"DE_back":"connect-ws-dre.hispace.dbankcloud.com",
"RU":"connect-ws-drru.hispace.dbankcloud.ru",
"RU_back":"connect-ws-drru.hispace.dbankcloud.cn",
"SG":"connect-ws-dra.hispace.dbankcloud.cn",
"SG_back":"connect-ws-dra.hispace.dbankcloud.com"
},
"client":{
"cp_id":"890086000300337421",
"product_id":"736430079244645870",
"client_id":"458482081706542080",
"client_secret":"3573E319CDA06E85137A91CF68CF90BA850A639BCA6655A5310B2BCD81BC7213",
"project_id":"736430079244645870",
"app_id":"102953045",
"api_key":"DAEDAN1bqknzqRuvualUo98vO7U9uXBJtBZ0rNQHgSo03bXgkl98tD4sytVBCBB1Y7ha0NcY++dSp9JLsws9BzDN+/fS3v8J9We3nA==",
"package_name":"cn.nnbc123.voice"
},
"oauth_client":{
"client_id":"102953045",
"client_type":1
},
"app_info":{
"app_id":"102953045",
"package_name":"cn.nnbc123.voice"
},
"service":{
"analytics":{
"collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
"collector_url_ru":"datacollector-drru.dt.dbankcloud.ru,datacollector-drru.dt.hicloud.com",
"collector_url_sg":"datacollector-dra.dt.hicloud.com,datacollector-dra.dt.dbankcloud.cn",
"collector_url_de":"datacollector-dre.dt.hicloud.com,datacollector-dre.dt.dbankcloud.cn",
"collector_url_cn":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
"resource_id":"p1",
"channel_id":""
},
"search":{
"url":"https://search-drcn.cloud.huawei.com"
},
"cloudstorage":{
"storage_url_sg_back":"https://agc-storage-dra.cloud.huawei.asia",
"storage_url_ru_back":"https://agc-storage-drru.cloud.huawei.ru",
"storage_url_ru":"https://agc-storage-drru.cloud.huawei.ru",
"storage_url_de_back":"https://agc-storage-dre.cloud.huawei.eu",
"storage_url_de":"https://ops-dre.agcstorage.link",
"storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn",
"storage_url_sg":"https://ops-dra.agcstorage.link",
"storage_url_cn_back":"https://agc-storage-drcn.cloud.huawei.com.cn",
"storage_url_cn":"https://agc-storage-drcn.platform.dbankcloud.cn"
},
"ml":{
"mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn"
}
},
"region":"CN",
"configuration_version":"3.0",
"appInfos":[
{
"package_name":"cn.nnbc123.voice",
"client":{
"app_id":"102953045"
},
"app_info":{
"package_name":"cn.nnbc123.voice",
"app_id":"102953045"
},
"oauth_client":{
"client_type":1,
"client_id":"102953045"
}
}
]
}

View File

@@ -1,19 +1,17 @@
apply plugin: 'com.android.application'
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'com.huawei.agconnect'
apply plugin: 'com.tencent.vasdolly'
apply from: '../mob.gradle'
apply plugin: 'android-junk-code'
def onlyArm64 = Boolean.parseBoolean(only_arm64)
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: "com.bytedance.android.aabResGuard"
apply plugin: "xml-class-guard"
android {
compileSdkVersion COMPILE_SDK_VERSION.toInteger()
defaultConfig {
applicationId "cn.nnbc123.voice"
applicationId "app.yinm.chat"
minSdkVersion MIN_SDK_VERSION.toInteger()
targetSdkVersion TARGET_SDK_VERSION.toInteger()
versionCode Integer.valueOf(version_code)
@@ -21,18 +19,27 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
// ndk {
// abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
// }
flavorDimensions 'default'
}
splits {
// splits {
// abi {
// enable true
// reset()
// include 'armeabi-v7a', 'arm64-v8a', 'x86'
// universalApk true
// }
// }
bundle {
density {
enableSplit = true
}
abi {
enable true
reset()
include 'armeabi-v7a', 'arm64-v8a'
universalApk true
enableSplit = true
}
}
@@ -50,7 +57,7 @@ android {
if (abi == null) {
abi = "universal"
}
outputFileName = "yinmeng_${buildType.name}_v${defaultConfig.versionName}_${abi}_${date}.apk"
outputFileName = "yinm_${variant.flavorName}_${buildType.name}_v${defaultConfig.versionName}_${defaultConfig.versionCode}_${abi}_${date}.apk"
}
}
@@ -76,23 +83,13 @@ android {
signingConfigs {
v2 {
storeFile file('../yinmeng.jks')
storePassword "yinmeng2023"
keyAlias "yinmeng"
keyPassword "yinmeng2023"
storeFile file('../yinm.jks')
storePassword "yinm2023"
keyAlias "yinm"
keyPassword "yinm2023"
v2SigningEnabled true
v1SigningEnabled true
}
v1 {
storeFile file('../yinmeng.jks')
storePassword "yinmeng2023"
keyAlias "yinmeng"
keyPassword "yinmeng2023"
v2SigningEnabled false
v1SigningEnabled true
}
}
sourceSets {
@@ -147,8 +144,8 @@ android {
buildTypes {
release {
buildConfigField "String", "BASE_URL", "\"https://api.nnbc123.cn/\""
buildConfigField "String", "WEB_URL", "\"https://h5.nnbc123.cn/\""
buildConfigField "String", "BASE_URL", "\"https://api.yinm.chat/\""
buildConfigField "String", "WEB_URL", "\"https://h5.yinm.chat/\""
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
buildConfigField "String", "BASE_URL_STAGING", "BASE_URL"
buildConfigField "String", "BASE_URL_RELEASE", "BASE_URL"
@@ -156,18 +153,26 @@ android {
shrinkResources true
signingConfig signingConfigs.v2
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
manifestPlaceholders = [CRASHLYTICS_COLLECTION_ENABLED: "true"]
firebaseCrashlytics {
mappingFileUploadEnabled false
}
}
debug {
buildConfigField "String", "BASE_URL", "\"http://beta.api.nnbc123.cn/\""
buildConfigField "String", "WEB_URL", "\"http://beta.api.nnbc123.cn\""
buildConfigField "String", "BASE_URL", "\"http://beta.api.yinm.chat/\""
buildConfigField "String", "WEB_URL", "\"http://beta.api.yinm.chat\""
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
buildConfigField "String", "BASE_URL_STAGING", "\"https://api.nnbc123.cn/\""
buildConfigField "String", "BASE_URL_RELEASE", "\"https://api.nnbc123.cn/\""
buildConfigField "String", "BASE_URL_STAGING", "\"https://api.yinm.chat/\""
buildConfigField "String", "BASE_URL_RELEASE", "\"https://api.yinm.chat/\""
minifyEnabled false
shrinkResources false
signingConfig signingConfigs.v2
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
firebaseCrashlytics {
mappingFileUploadEnabled false
}
manifestPlaceholders = [CRASHLYTICS_COLLECTION_ENABLED: "false"]
}
}
@@ -182,6 +187,29 @@ android {
buildToolsVersion = '30.0.3'
productFlavors {
official {
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
}
google_yinm {
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
}
mlq {
ndk {
abiFilters 'x86'
}
}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [
// 渠道
CHANNEL_VALUE : name,
]
}
}
@@ -216,7 +244,6 @@ dependencies {
api "com.ms-square:expandableTextView:0.1.4"
api "com.jakewharton:butterknife:10.2.3"
annotationProcessor "com.jakewharton:butterknife-compiler:10.2.3"
implementation "com.llew.huawei:verifier:1.0.3"
annotationProcessor 'androidx.annotation:annotation:1.2.0'
implementation 'io.github.h07000223:flycoTabLayout:3.0.0'
@@ -247,65 +274,112 @@ dependencies {
implementation 'it.sephiroth.android.library.imagezoom:library:1.0.4'
// 易盾一键登录
implementation 'io.github.yidun:quicklogin:3.1.5'
implementation 'com.github.fodroid:XRadioGroup:v1.5'
//华为推送
implementation 'com.huawei.hms:push:6.5.0.300'
//魅族推送
implementation 'com.meizu.flyme.internet:push-internal:4.1.0'
//oppo推送需要
implementation 'commons-codec:commons-codec:1.6'
api 'com.tencent.vasdolly:helper:3.0.3'
// api 'com.tencent.vasdolly:helper:3.0.3'
implementation "io.github.tencent:vap:2.0.24"
implementation 'com.github.mmin18:realtimeblurview:1.2.1'
implementation 'com.qiyukf.unicorn:unicorn:8.2.0'
implementation 'com.github.yalantis:ucrop:2.2.7'
}
repositories {
flatDir {
dirs 'aliyun-libs', 'com.huawei.agconnect'
}
mavenCentral()
}
channel {
//多渠道包的输出目录默认为new File(project.buildDir,"channel")
outputDir = new File(project.buildDir, "channelapk")
//多渠道包的命名规则,默认为:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}-${buildTime}
def only64 = onlyArm64 ? "-only64" : ""
apkNameFormat = 'yinmeng-${buildType}only64-${flavorName}-v${versionName}-${buildTime}'.replace("only64", only64)
//快速模式生成渠道包时不进行校验速度可以提升10倍以上默认为false
fastMode = false
//buildTime的时间格式默认格式yyyyMMdd-HHmmss
buildTimeDateFormat = 'MMddHHmm'
//低内存模式仅针对V2签名默认为false只把签名块、中央目录和EOCD读取到内存不把最大头的内容块读取到内存在手机上合成APK时可以使用该模式
lowMemory = false
}
android.applicationVariants.all { variant ->
print("variant.name=" + variant.name)
switch (variant.name) {//变体名称如果没有设置productFlavors就是buildType名称如果有设置productFlavors就是flavor+buildType例如freeRelease、proRelease
case "release":
androidJunkCode.configMap.put(variant.name, {
packageBase = "com.nnbc123.plugin.ui" //生成java类根包名
packageCount = 30 //生成包数量
activityCountPerPackage = 30 //每个包下生成Activity类数量
excludeActivityJavaFile = false
//是否排除生成Activity的Java文件,默认false(layout和写入AndroidManifest.xml还会执行),主要用于处理类似神策全埋点编译过慢问题
otherCountPerPackage = 50 //每个下生成其它类的数量
methodCountPerClass = 20 //每个类下生成方法数量
resPrefix = "mango_" //生成的layout、drawable、string等资源名前缀
drawableCount = 300 //生成drawable资源数量
stringCount = 300 //生成string数量
})
break
if (variant.name.contains("release") || variant.name.contains("Release")) {
androidJunkCode.configMap.put(variant.name, {
packageBase = "app.yinm.a.u" //生成java类根包名
packageCount = 30 //生成包数量
activityCountPerPackage = 30 //每个包下生成Activity类数量
excludeActivityJavaFile = false
//是否排除生成ActivityJava文件,默认false(layout和写入AndroidManifest.xml还会执行),主要用于处理类似神策全埋点编译过慢问题
otherCountPerPackage = 50 //每个包下生成其它类的数量
methodCountPerClass = 20 //每个下生成方法数量
resPrefix = "ymc_" //生成的layout、drawable、string等资源名前缀
drawableCount = 300 //生成drawable资源数量
stringCount = 300 //生成string数量
})
}
}
}
aabResGuard {
mappingFile = file("aab-res-guard-mapping.txt").toPath()
// Mapping file used for incremental obfuscation
whiteList = [ // White list rules
// 魅力财富icon
"*.R.drawable.charm_ic_*",
"*.R.drawable.wealth_ic_*",
// ----------
"*.R.raw.*",
"*.R.drawable.icon",
//谷歌服务
"*.R.string.default_web_client_id",
"*.R.string.firebase_database_url",
"*.R.string.gcm_defaultSenderId",
"*.R.string.google_api_key",
"*.R.string.google_app_id",
"*.R.string.google_crash_reporting_api_key",
"*.R.string.google_storage_bucket",
"*.R.string.project_id",
//所有涉及到 getResources().getIdentifier 对应的资源ID
"*.R.array.a1",
"*.R.string.s1",
"*.R.mipmap.m1",
"*.R.dimen.d1",
"*.R.integer.int1",
//Firebase Crashlytics
"*.R.string.com.crashlytics.*",
"*.R.bool.com.crashlytics.useFirebaseAppId",
"*.R.string.com.crashlytics.useFirebaseAppId",
"*.R.bool.com.crashlytics.CollectDeviceIdentifiers",
"*.R.string.com.crashlytics.CollectDeviceIdentifiers",
"*.R.bool.com.crashlytics.CollectUserIdentifiers",
"*.R.string.com.crashlytics.CollectUserIdentifiers",
"*.R.string.com.crashlytics.ApiEndpoint",
"*.R.string.io.fabric.android.build_id",
"*.R.string.com.crashlytics.android.build_id",
"*.R.bool.com.crashlytics.RequireBuildId",
"*.R.string.com.crashlytics.RequireBuildId",
"*.R.bool.com.crashlytics.CollectCustomLogs",
"*.R.string.com.crashlytics.CollectCustomLogs",
"*.R.bool.com.crashlytics.Trace",
"*.R.string.com.crashlytics.Trace",
"*.R.string.com.crashlytics.CollectCustomKeys",
"*.R.string.com.google.firebase.crashlytics.mapping_file_id",
"*.R.string.com.google.firebase.crashlytics.unity_version"
]
obfuscatedBundleFileName = "yinm-google.aab" // Obfuscated file name, must end with '.aab'
mergeDuplicatedRes = true // Whether to allow the merge of duplicate resources
enableFilterFiles = false // Whether to allow filter files
filterList = [ // file filter rules
// "*/arm64-v8a/*",
// "META-INF/*"
]
enableFilterStrings = false // switch of filter strings
unusedStringPath = file("unused.txt").toPath() // strings will be filtered in this file
languageWhiteList = ["en", "zh"] // keep en,en-xx,zh,zh-xx etc. remove others.
}
//以下均为非必须
xmlClassGuard {
findAabConstraintReferencedIds = true
//用于增量混淆的 mapping 文件
mappingFile = file("xml-class-mapping.txt")
//更改manifest文件的package属性即包名
packageChange = ["com.nnbc123.app" : "app.yinm.app",
"com.nnbc123.core" : "app.yinm.cc",
"com.nnbc123.library": "app.yinm.ll"]
moveDir = []
generateObfuscateClassStartName = "ZZZZ"
randomObfuscatePackageNamePlaceholder = ["app.yinm.a.#", "app.yinm.a.a.#", "app.yinm.a.b.#", "app.yinm.a.c.#", "app.yinm.a.d.#", "app.yinm.a.e.#"]
randomObfuscateClassNamePlaceholder = ["#", "#1", "#2", "#3", "#4", "#5", "#6", "#7", "#8", "#9"]
}

29
app/google-services.json Normal file
View File

@@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "414487219613",
"project_id": "yinm-gp-a9649",
"storage_bucket": "yinm-gp-a9649.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:414487219613:android:cb64fc92ca04f431c13374",
"android_client_info": {
"package_name": "app.yinm.chat"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyC8Ekb0HRZzsNq8aBp2qs_97G6h76URl24"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -30,6 +30,10 @@
# 保留行号
-keepattributes SourceFile,LineNumberTable
-obfuscationdictionary ./../dictionry.txt
-classobfuscationdictionary ./../dictionry.txt
-packageobfuscationdictionary ./../dictionry.txt
#-dontwarn #//dontwarn去掉警告
#-dontskipnonpubliclibraryclassmembers
#-keep public class * extends android.app.Fragment
@@ -65,8 +69,18 @@
public static final ** CREATOR;
}
-keep class * implements java.io.Serializable {
*;
# 保留 Serializable 序列化的类不被混淆
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
!private <fields>;
!private <methods>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
##---------------Begin: proguard configuration for Gson ----------
# Gson specific classes
@@ -114,20 +128,8 @@
-dontwarn com.netease.**
-keep class com.netease.** {*;}
# Presenter 相关
-keep class com.nnbc123.app.base.** { *; }
-keep public class * extends com.nnbc123.app.base.BaseMvpPresenter
-keep public class * extends com.nnbc123.library.base.factory.AbstractMvpPresenter
# 云信自定义 ViewHolder 配置
-dontwarn com.nnbc123.app.ui.im.recent.holder.**
-keep class com.nnbc123.app.ui.im.recent.holder.** {*;}
-keep class com.nnbc123.app.ui.im.chat.** {*;}
-keep class com.nnbc123.app.luckymoney.viewholder.** {*;}
-keep class com.nnbc123.app.share.viewholder.** {*;}
-keep class com.nnbc123.app.public_chat_hall.msg.viewholder.** {*;}
-keep class com.nnbc123.app.module_hall.im.msgholder.** {*;}
-keep class com.nnbc123.app.mentoring_relationship.viewholder.** {*;}
-keep public class * extends com.netease.nim.uikit.common.ui.recyclerview.holder.RecyclerViewHolder {*;}
-keep public class * extends com.netease.nim.uikit.business.session.viewholder.MsgViewHolderBase {*;}
@@ -168,16 +170,9 @@
#-------------云信相关的混淆配置------------
#-------------TakePhoto的混淆配置------------
-keep class com.nnbc123.app.takephoto.** { *; }
-dontwarn com.jph.takephoto.**
-keep class com.darsh.multipleimageselect.** { *; }
-dontwarn com.darsh.multipleimageselect.**
-keep class com.soundcloud.android.crop.** { *; }
-dontwarn com.soundcloud.android.crop.**
#-------------TakePhoto的混淆配置------------
@@ -207,9 +202,6 @@
<init>(...);
}
-dontwarn com.nnbc123.app.bindadapter.**
-keep class com.nnbc123.app.bindadapter.** {*;}
# Ping++ 混淆过滤
-dontwarn com.pingplusplus.**
-keep class com.pingplusplus.** {*;}
@@ -237,10 +229,24 @@
}
# @Keep
-keep,allowobfuscation @interface android.support.annotation.Keep
-keep @android.support.annotation.Keep class *
-keepclassmembers class * {
@android.support.annotation.Keep *;
}
-keep,allowobfuscation @interface androidx.annotation.Keep
-keep @androidx.annotation.Keep class *
-keepclassmembers class * {
@androidx.annotation.Keep *;
}
# TODO 网络加载 一些业务bean gson 时候混淆问题
-keep class org.json.** {*;}
-dontwarn com.nnbc123.core.**
-keep class com.nnbc123.core.** {*;}
-keep class **.bean.** {*;}
-keep class **.result.** {*;}
-keep class **.entity.** {*;}
#百度统计
@@ -313,10 +319,6 @@
-keep class com.amap.api.fence.**{*;}
-keep class com.autonavi.aps.amapapi.model.**{*;}
#暂时keep这个View排查华为oom问题
-keep class com.nnbc123.app.avroom.widget.MicroView{*;}
-keep class com.nnbc123.app.ui.widget.rollviewpager.RollPagerView{*;}
#linkedMe
-keep class com.microquation.linkedme.android.** { *; }
@@ -333,7 +335,13 @@
-dontwarn com.sdk.**
-keep class com.sdk.** { *;}
-keep class cn.com.chinatelecom.account.**{*;}
-keep public class * extends android.view.View
-keep public class * extends android.view.View {
*** get*();
void set*(***);
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keep class com.netease.nis.quicklogin.entity.**{*;}
-keep class com.netease.nis.quicklogin.listener.**{*;}
-keep class com.netease.nis.quicklogin.QuickLogin{
@@ -373,8 +381,6 @@
-dontwarn com.meizu.cloud.**
-keep class com.meizu.cloud.** {*;}
-keep class com.nnbc123.app.ui.widget.AppBarLayoutBehavior {*;}
#ViewBinding使用的反射生成的对应Binding
-keepclassmembers class * implements androidx.viewbinding.ViewBinding {
public static ** inflate(***);
@@ -450,7 +456,7 @@
-keep class android.support.v8.renderscript.** { *; }
-keep class androidx.renderscript.** { *; }
-keep class com.nnbc123.plugin.ui.**{*;}
-keep class app.yinm.plugin.ui.**{*;}
-dontwarn com.qiyukf.**
-keep class com.qiyukf.** {*;}
@@ -461,3 +467,8 @@
-keep class androidx.recyclerview.widget.** { *; }
-keep class androidx.viewpager2.widget.** { *; }
-keep class io.agora.**{*;}
-keepattributes SourceFile,LineNumberTable # Keep file names and line numbers.
-keep public class * extends java.lang.Exception # Optional: Keep custom exceptions.
-keep class com.google.android.exoplayer2.** {*;}
-keep interface com.google.android.exoplayer2.**

View File

@@ -24,8 +24,15 @@
<!-- 控制呼吸灯,振动器等,用于新消息提醒 -->
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.VIBRATE" /> <!-- 外置存储存取权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 多媒体相关 -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
@@ -67,13 +74,7 @@
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
<!-- 适配安卓12&11获取当前已安装的所有应用列表-->
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
</intent>
</queries>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<application
android:name="com.nnbc123.app.application.XChatApplication"
android:allowBackup="false"
@@ -86,6 +87,13 @@
android:theme="@style/MyMaterialTheme"
android:usesCleartextTraffic="true"
tools:replace="android:name,android:allowBackup">
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${CRASHLYTICS_COLLECTION_ENABLED}" />
<!-- 多渠道 -->
<meta-data
android:name="CHANNEL"
android:value="${CHANNEL_VALUE}" />
<!-- 刘海屏适配 begin -->
<!-- 小米 -->
<meta-data
@@ -174,14 +182,7 @@
<action android:name="com.heytap.mcs.action.RECEIVE_MCS_MESSAGE" />
</intent-filter>
</service>
<service
android:name="com.nnbc123.app.push.OppoPushService"
android:exported="false"
android:permission="com.coloros.mcs.permission.SEND_MCS_MESSAGE">
<intent-filter>
<action android:name="com.coloros.mcs.action.RECEIVE_MCS_MESSAGE" />
</intent-filter>
</service> <!-- 云信集成oppo推送 end -->
<!-- 云信集成oppo推送 end -->
<!-- 云信集成华为推送 start -->
<service
android:name="com.netease.nimlib.mixpush.hw.HWPushService"
@@ -199,41 +200,6 @@
android:authorities="${applicationId}.ipc.provider"
android:exported="false"
android:process=":core" /> <!-- 配置的service和receiver -->
<service
android:name="com.xiaomi.push.service.XMPushService"
android:enabled="true"
android:process=":mixpush" />
<service
android:name="com.xiaomi.push.service.XMJobService"
android:enabled="true"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process=":mixpush" /> <!--此service必须在3.0.1版本以后包括3.0.1版本)加入 -->
<service
android:name="com.xiaomi.mipush.sdk.PushMessageHandler"
android:enabled="true"
android:exported="false" />
<service
android:name="com.xiaomi.mipush.sdk.MessageHandleService"
android:enabled="true" /> <!--此service必须在2.2.5版本以后包括2.2.5版本)加入 -->
<receiver
android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver"
android:exported="true"
tools:node="remove">>
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver
android:name="com.xiaomi.push.service.receivers.PingReceiver"
android:exported="false"
android:process=":mixpush">
<intent-filter>
<action android:name="com.xiaomi.push.PING_TIMER" />
</intent-filter>
</receiver>
<receiver
android:name="com.netease.nimlib.mixpush.mi.MiPushReceiver"
android:exported="true">
@@ -243,27 +209,8 @@
<action android:name="com.xiaomi.mipush.ERROR" />
</intent-filter>
</receiver>
<receiver
android:name="com.nnbc123.app.push.MiPushReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" />
<action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" />
<action android:name="com.xiaomi.mipush.ERROR" />
</intent-filter>
</receiver> <!-- 云信集成小米推送 end -->
<!-- 云信集成小米推送 end -->
<!-- 云信继承vivo推送 start -->
<service
android:name="com.vivo.push.sdk.service.CommandClientService"
android:exported="true"
android:permission="com.push.permission.UPSTAGESERVICE" />
<activity
android:name="com.vivo.push.sdk.LinkProxyClientActivity"
android:exported="false"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<receiver
android:name="com.netease.nimlib.mixpush.vivo.VivoPushReceiver"
android:exported="false">
@@ -274,24 +221,6 @@
</intent-filter>
</receiver>
<receiver
android:name="com.qiyukf.nimlib.service.NimReceiver"
android:exported="false"
android:process=":core"
tools:node="remove">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<service
android:name="com.qiyukf.nimlib.job.NIMJobService"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process=":core"
tools:node="remove" />
<meta-data
android:name="com.vivo.push.api_key"
android:value="8de0df98690ba00225b88313aaee754f" />
@@ -317,16 +246,7 @@
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
<receiver
android:name="com.nnbc123.app.push.MeizuPushReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.meizu.flyme.push.intent.MESSAGE" />
<action android:name="com.meizu.flyme.push.intent.REGISTER.FEEDBACK" />
<action android:name="com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK" />
</intent-filter>
</receiver> <!-- 云信集成魅族推送 end -->
</receiver><!-- 云信集成魅族推送 end -->
<!-- 云信配置 end ##################################################### -->
<!-- &lt;!&ndash; 安卓保活配置 &ndash;&gt; -->
<!-- <service -->
@@ -370,35 +290,6 @@
android:resource="@xml/provider_paths" />
</provider>
<activity
android:name="com.nnbc123.app.push.HWPushMiddleActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="com.huawei.codelabpush"
android:path="/deeplink"
android:scheme="yinmengpushscheme" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.bugly.beta.ui.BetaActivity"
android:configChanges="keyboardHidden|orientation|screenSize|locale"
android:theme="@android:style/Theme.Translucent" />
<activity
android:name="com.nnbc123.core.pay.PaymentActivity"
android:launchMode="singleTask"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" /> <!-- tinker配置 end ########################################################## -->
<!-- 支付相关配置 -->
<!-- 微信支付需要注册 -->
<activity-alias
android:name="${applicationId}.wxapi.WXPayEntryActivity"
android:exported="true"
android:targetActivity="com.nnbc123.core.pay.PaymentActivity" /> <!-- 支付相关配置 -->
<!-- shareSDK配置 end ####################################################### -->
<service
android:name="com.nnbc123.app.service.DaemonService"
@@ -426,8 +317,8 @@
<!-- 此处scheme值需要替换为后台设置中的scheme值 -->
<data
android:host="linkedme"
android:scheme="yinmengnnbc" />
android:host="main"
android:scheme="yinmapp" />
<action android:name="android.intent.action.VIEW" />
@@ -473,7 +364,7 @@
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name="com.nnbc123.app.UserGuideActivity"
android:name="com.nnbc123.app.guide.UserGuideActivity"
android:label="引导页"
android:screenOrientation="portrait" />
<activity
@@ -483,7 +374,7 @@
android:name="com.nnbc123.app.ui.search.SearchUserActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.nnbc123.app.MainActivity"
android:name="com.nnbc123.app.main.MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="音萌"
android:launchMode="singleTask"
@@ -494,15 +385,7 @@
android:screenOrientation="portrait"
android:theme="@style/OnePixelActivity" />
<activity
android:name="com.nnbc123.app.MiddleActivity"
android:noHistory="true"
android:screenOrientation="portrait">
<meta-data
android:name="linkedme.sdk.auto_link_keys"
android:value="linkedme" />
</activity>
<activity
android:name="com.nnbc123.app.NimMiddleActivity"
android:name="com.nnbc123.app.ui.im.NimMiddleActivity"
android:noHistory="true"
android:screenOrientation="portrait" />
<activity
@@ -779,7 +662,7 @@
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name="com.nnbc123.app.ErbanTakePhotoActivity"
android:name="com.nnbc123.app.takephoto.app.ErbanTakePhotoActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
@@ -1177,7 +1060,7 @@
android:name="com.nnbc123.app.shipantics.RadishRankingActivity"
android:theme="@style/room_message_activity" />
<activity
android:name="com.nnbc123.app.home.activity.MoreRoomActivity"
android:name="com.nnbc123.app.game_room.GameRoomActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.nnbc123.app.avroom.wishlist.WishListCreateActivity"
@@ -1239,6 +1122,9 @@
android:exported="false"
android:screenOrientation="portrait"
android:theme="@style/AppThemeUCrop" />
<activity
android:name=".ui.agent.AgentActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
</application>
</manifest>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,77 +0,0 @@
package com.nnbc123.app;
import android.os.Bundle;
import android.util.Log;
import com.microquation.linkedme.android.LinkedME;
import com.microquation.linkedme.android.util.LinkProperties;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.nnbc123.app.base.BaseActivity;
import com.nnbc123.core.linked.LinkedModel;
import com.nnbc123.core.linked.bean.LinkedInfo;
import java.util.HashMap;
/**
* Created by chenran on 2017/8/5.
*/
public class MiddleActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent() != null) {
//获取与深度链接相关的值
LinkProperties linkProperties = getIntent().getParcelableExtra(LinkedME.LM_LINKPROPERTIES);
if (linkProperties != null) {
Log.i("LinkedME-Demo", "Channel " + linkProperties.getChannel());
Log.i("LinkedME-Demo", "control params " + linkProperties.getControlParams());
Log.i("LinkedME-Demo", "link(深度链接) " + linkProperties.getLMLink());
Log.i("LinkedME-Demo", "是否为新安装 " + linkProperties.isLMNewUser());
//获取自定义参数封装成的hashmap对象,参数键值对由集成方定义
HashMap<String, String> hashMap = linkProperties.getControlParams();
LogUtil.print("linkedme", hashMap);
//根据key获取传入的参数的值,该key关键字View可为任意值,由集成方规定,请与web端商议,一致即可
LinkedInfo linkedInfo = new LinkedInfo();
linkedInfo.setNewUser(linkProperties.isLMNewUser());
String roomuid = hashMap.get("roomuid");
String uid = hashMap.get("uid");
String channel = hashMap.get("linkedmeChannel");
String type = hashMap.get("type");
String familyId = hashMap.get("familyId");
String url = hashMap.get("url");
String worldId = hashMap.get("worldId");
String dynamicId = hashMap.get("dynamicId");
String inviteCode = hashMap.get("inviteCode");
if (roomuid != null) {
linkedInfo.setRoomUid(roomuid);
}
if (uid != null) {
linkedInfo.setUid(uid);
}
if (type != null) {
linkedInfo.setType(type);
}
if (familyId != null) {
linkedInfo.setFamilyId(familyId);
}
if (url != null) {
linkedInfo.setUrl(url);
}
if (worldId != null) {
linkedInfo.setWorldId(worldId);
}
if (dynamicId != null) {
linkedInfo.setDynamicId(dynamicId);
}
linkedInfo.setInviteCode(inviteCode);
LinkedModel.get().setLinkedInfo(linkedInfo);
}
}
finish();
}
}

View File

@@ -1,25 +1,15 @@
package com.nnbc123.app.application;
import static com.nnbc123.xchat_android_constants.XChatConstants.HW_APP_ID;
import static com.nnbc123.xchat_android_constants.XChatConstants.HW_CERTIFICATE_NAME;
import static com.nnbc123.xchat_android_constants.XChatConstants.OPPO_APP_ID;
import static com.nnbc123.xchat_android_constants.XChatConstants.OPPO_APP_KEY;
import static com.nnbc123.xchat_android_constants.XChatConstants.OPPO_CERTIFICATE_NAME;
import static com.nnbc123.xchat_android_constants.XChatConstants.OPPO_SECRET;
import static com.nnbc123.xchat_android_constants.XChatConstants.VIVO_CERTIFICATE_NAME;
import static com.nnbc123.xchat_android_constants.XChatConstants.XM_APP_ID;
import static com.nnbc123.xchat_android_constants.XChatConstants.XM_APP_KEY;
import static com.nnbc123.xchat_android_constants.XChatConstants.XM_CERTIFICATE_NAME;
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_OPEN_ROOM_NOTI;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.graphics.Color;
import android.net.http.HttpResponseCache;
import android.os.Build;
import android.os.Environment;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
@@ -28,14 +18,13 @@ import androidx.multidex.MultiDex;
import com.bumptech.glide.request.target.ViewTarget;
import com.bytedance.hume.readapk.HumeSDK;
import com.chu.utils.MetaDataUtils;
import com.coorchice.library.utils.LogUtils;
import com.facebook.stetho.Stetho;
import com.heytap.msp.push.HeytapPushManager;
import com.hjq.toast.ToastUtils;
import com.huawei.hms.support.common.ActivityMgr;
import com.llew.huawei.verifier.LoadedApkHuaWei;
import com.microquation.linkedme.android.LinkedME;
import com.mob.MobSDK;
import com.mob.moblink.MobLink;
import com.mob.moblink.RestoreSceneListener;
import com.mob.moblink.Scene;
import com.netease.nim.uikit.api.NimUIKit;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nimlib.sdk.NIMClient;
@@ -48,7 +37,8 @@ import com.netease.nimlib.sdk.msg.MessageNotifierCustomization;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nimlib.sdk.util.NIMUtil;
import com.nnbc123.app.qiyukefu.CustomerServerHelper;
import com.nnbc123.app.ui.agent.AgentActivity;
import com.nnbc123.core.interceptor.PathInterceptor;
import com.nnbc123.library.common.application.BaseApp;
import com.nnbc123.library.common.file.FileHelper;
import com.nnbc123.library.utils.ResUtil;
@@ -58,24 +48,16 @@ import com.orhanobut.logger.Logger;
import com.scwang.smartrefresh.header.MaterialHeader;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.tencent.bugly.Bugly;
import com.tencent.bugly.beta.Beta;
import com.tencent.bugly.crashreport.CrashReport;
import com.tencent.vasdolly.helper.ChannelReaderUtil;
import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;
import com.nnbc123.core.statistic.StatisticManager;
import com.nnbc123.app.BuildConfig;
import com.nnbc123.app.MainActivity;
import com.nnbc123.app.MiddleActivity;
import com.nnbc123.app.NimMiddleActivity;
import com.nnbc123.app.ui.im.NimMiddleActivity;
import com.nnbc123.app.R;
import com.nnbc123.app.module_hall.HallDataManager;
import com.nnbc123.app.other.activity.SplashActivity;
import com.nnbc123.app.quick_pass.QuickPassLoginAct;
import com.nnbc123.app.radish.wallet.RadishWalletManager;
import com.nnbc123.app.utils.PushMessageHandler;
import com.nnbc123.xchat_android_constants.XChatConstants;
import com.nnbc123.core.Constants;
import com.nnbc123.core.XChatConstants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.DemoCache;
import com.nnbc123.core.Env;
import com.nnbc123.core.UriProvider;
@@ -98,7 +80,6 @@ import com.nnbc123.core.public_chat_hall.model.PublicChatHallModel;
import com.nnbc123.core.radish.RadishModel;
import com.nnbc123.core.radish.signin.bean.ImNotice;
import com.nnbc123.core.room.face.DynamicFaceModel;
import com.nnbc123.core.statistic.StatisticManager;
import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
import com.nnbc123.core.user.UserModel;
import com.nnbc123.core.user.event.NeedCompleteInfoEvent;
@@ -213,12 +194,12 @@ public class XChatApplication extends BaseApp {
// 初始化 sp
long startTime = System.currentTimeMillis();
String channel = "";
channel = ChannelReaderUtil.getChannel(instance);
String channel;
channel = MetaDataUtils.INSTANCE.getStringData(CoreConstants.CHANNEL_KEY, application);
if (TextUtils.isEmpty(channel)) {
channel = "official";
channel = com.nnbc123.library.common.Constants.CHANNEL_DEF;
}
Log.d("XChatApplication", "channel:" + channel);
BasicConfig.INSTANCE.setOriginalChannel(channel);
//头条分包渠道
@@ -228,11 +209,11 @@ public class XChatApplication extends BaseApp {
channel = byteDanceChannel;
}
}
Log.d("XChatApplication", "channel2:" + channel);
BasicConfig.INSTANCE.setChannel(channel);
initEnv();
ActivityMgr.INST.init((Application) context);
//延迟初始化云信
NIMClient.init(context, null, options());
@@ -246,8 +227,6 @@ public class XChatApplication extends BaseApp {
ToastUtils.init(application);
if (inMainProcess(context)) {
HeytapPushManager.init(context, true);
DemoCache.saveLaunchCount();
// 注册自定义推送消息处理,这个是可选项
NIMPushClient.registerMixPushMessageHandler(new PushMessageHandler());
@@ -276,37 +255,15 @@ public class XChatApplication extends BaseApp {
ViewTarget.setTagId(R.id.tag_glide);
init(channel);
initStetho(context);
if (!TextUtils.isEmpty(channel)) {
CrashReport.setAppChannel(context, channel);
}
initBuglyUpdate();
Bugly.init(context, BuildConfig.DEBUG ? XChatConstants.BUGLY_KEY_DEBUG : XChatConstants.BUGLY_KEY_RELEASE, BuildConfig.DEBUG);
//生命周期监听
if (lifeManager == null) {
lifeManager = new ActivityLifeManager();
}
registerActivityLifecycleCallback(lifeManager);
dealHuaWeiCrash();
initLinkedMe();
LinkedME.getInstance().setImmediate(true);
MobSDK.init(context);
MobSDK.submitPolicyGrantResult(true);
// 友盟统计初始化
UMConfigure.init(context, XChatConstants.UMENG_APP_KEY,
BasicConfig.INSTANCE.getChannel(), UMConfigure.DEVICE_TYPE_PHONE, null);
// 选用MANUAL页面采集模式
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.MANUAL);
// 支持在子进程中统计自定义事件
UMConfigure.setProcessEvent(true);
// 日志加密
UMConfigure.setEncryptEnabled(true);
// 集成测试
UMConfigure.setLogEnabled(BuildConfig.DEBUG);
} else {
CustomerServerHelper.init(instance, null);
}
LogUtils.d("init time = " + (System.currentTimeMillis() - startTime) + "ms");
@@ -318,15 +275,21 @@ public class XChatApplication extends BaseApp {
* 初始化linkedMe
*/
private static void initLinkedMe() {
LinkedME.getInstance(instance, XChatConstants.LINKED_ME_KEY);
if (isDebug()) {
//设置debug模式下打印LinkedME日志
LinkedME.getInstance().setDebug();
}
//初始时请设置为false
LinkedME.getInstance().setImmediate(false);
//设置处理跳转逻辑的中转页MiddleActivity详见后续配置
LinkedME.getInstance().setHandleActivity(MiddleActivity.class.getName());
MobSDK.init(instance, "391a13e3d2f0f", "66c1b96ec3546d4df709154dc3069a7d");
MobLink.setRestoreSceneListener(new RestoreSceneListener() {
@Override
public Class<? extends Activity> willRestoreScene(Scene scene) {
return AgentActivity.class;
}
@Override
public void completeRestore(Scene scene) {
}
@Override
public void notFoundScene(Scene scene) {
}
});
}
private static void initEnv() {
@@ -334,24 +297,12 @@ public class XChatApplication extends BaseApp {
Env.initEnv(BuildConfig.BUILD_TYPE, BuildConfig.DEBUG);
//切换生产坏境和测试环境 true/测试环境 false/生产环境
BasicConfig.INSTANCE.setDebuggable(Env.isDebug());
BasicConfig.INSTANCE.setRootDir(Constants.ERBAN_DIR_NAME);
BasicConfig.INSTANCE.setLogDir(Constants.LOG_DIR);
BasicConfig.INSTANCE.setConfigDir(Constants.CONFIG_DIR);
BasicConfig.INSTANCE.setVoiceDir(Constants.VOICE_DIR);
BasicConfig.INSTANCE.setCacheDir(Constants.CACHE_DIR);
BasicConfig.INSTANCE.setImageDir(Constants.IMAGE_CACHE_DIR);
}
private static void dealHuaWeiCrash() {
String brand = Build.BRAND;
String manufacturer = Build.MANUFACTURER;
if (!TextUtils.isEmpty(brand) && (
"HUAWEI".toLowerCase().equals(brand.toLowerCase())
|| "HONOR".toLowerCase().equals(brand.toLowerCase())
|| "HUAWEI".equals(manufacturer))) {
LoadedApkHuaWei.hookHuaWeiVerifier((Application) instance.getApplicationContext());
}
BasicConfig.INSTANCE.setRootDir(CoreConstants.ERBAN_DIR_NAME);
BasicConfig.INSTANCE.setLogDir(CoreConstants.LOG_DIR);
BasicConfig.INSTANCE.setConfigDir(CoreConstants.CONFIG_DIR);
BasicConfig.INSTANCE.setVoiceDir(CoreConstants.VOICE_DIR);
BasicConfig.INSTANCE.setCacheDir(CoreConstants.CACHE_DIR);
BasicConfig.INSTANCE.setImageDir(CoreConstants.IMAGE_CACHE_DIR);
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@@ -388,7 +339,7 @@ public class XChatApplication extends BaseApp {
// 定制通知栏提醒文案可选如果不定制将采用SDK默认文案
options.messageNotifierCustomization = messageNotifierCustomization;
options.appKey = Constants.nimAppKey;
options.appKey = CoreConstants.nimAppKey;
options.shouldConsiderRevokedMessageUnreadCount = true;
// 配置保存图片文件log 等数据的目录
@@ -414,21 +365,6 @@ public class XChatApplication extends BaseApp {
DemoCache.setNotificationConfig(config);
MixPushConfig mixPushConfig = new MixPushConfig();
//华为推送
mixPushConfig.hwAppId = HW_APP_ID;
mixPushConfig.hwCertificateName = HW_CERTIFICATE_NAME;
//小米推送
mixPushConfig.xmAppId = XM_APP_ID;
mixPushConfig.xmAppKey = XM_APP_KEY;
mixPushConfig.xmCertificateName = XM_CERTIFICATE_NAME;
//vivo推送
mixPushConfig.vivoCertificateName = VIVO_CERTIFICATE_NAME;
//oppo推送
mixPushConfig.oppoAppId = OPPO_APP_ID;
mixPushConfig.oppoAppKey = OPPO_APP_KEY;
mixPushConfig.oppoAppSercet = OPPO_SECRET;
mixPushConfig.oppoCertificateName = OPPO_CERTIFICATE_NAME;
options.mixPushConfig = mixPushConfig;
return options;
@@ -446,58 +382,6 @@ public class XChatApplication extends BaseApp {
return packageName.equals(processName);
}
/**
* 初始化bugly版本升级
*/
private static void initBuglyUpdate() {
/***** Beta高级设置 *****/
/**
* true表示app启动自动初始化升级模块;
* false不会自动初始化;
* 开发者如果担心sdk初始化影响app启动速度可以设置为false
* 在后面某个时刻手动调用Beta.init(getApplicationContext(),false);
*/
// Beta.autoInit = true;
/**
* true表示初始化时自动检查升级;
* false表示不会自动检查升级,需要手动调用Beta.checkUpgrade()方法;
*/
// Beta.autoCheckUpgrade = true;
/**
* 设置升级检查周期为60s(默认检查周期为0s)60s内SDK不重复向后台请求策略);
*/
// Beta.upgradeCheckPeriod = 60 * 1000;
/**
* 设置启动延时为1s默认延时3sAPP启动1s后初始化SDK避免影响APP启动速度;
*/
Beta.initDelay = 6 * 1000;
/**
* 设置sd卡的Download为更新资源保存目录;
* 后续更新资源会保存在此目录需要在manifest中添加WRITE_EXTERNAL_STORAGE权限;
*/
// Beta.storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
/**
* 点击过确认的弹窗在APP下次启动自动检查更新时会再次显示;
*/
Beta.showInterruptedStrategy = true;
/**
* 只允许在MainActivity上显示更新弹窗其他activity上不显示弹窗;
* 不设置会默认所有activity都可以显示弹窗;
* 2021/6/22 增加登录页面也可以弹出,万一域名挂了还可以用bugly更新!!
*/
Beta.canShowUpgradeActs.add(MainActivity.class);
Beta.canShowUpgradeActs.add(QuickPassLoginAct.class);
/**
* 自定义布局
*/
Beta.upgradeDialogLayoutId = R.layout.upgrade_dialog;//关键代码写这个布局添加自己想要的
}
/**
* 初始化RxNet
*
@@ -521,6 +405,7 @@ public class XChatApplication extends BaseApp {
RxNet.init(context)
.debug(BuildConfig.DEBUG)
.setBaseUrl(url)
.addInterceptors(new PathInterceptor())
.addInterceptors(new ParamsInterceptor(httpParams))
.addInterceptors(new NoParamsInterceptor())//注意:拦截器的添加顺序,请求的拦截顺序
.build();
@@ -660,24 +545,9 @@ public class XChatApplication extends BaseApp {
@Override
public void onTerminate() {
super.onTerminate();
CrashReport.closeBugly();
if (lifeManager != null) {
unregisterActivityLifecycleCallbacks(lifeManager);
}
GlobalHandleManager.get().unInit();
}
/**
* 初始化Stetho网络调试
*/
private static void initStetho(Context context) {
if (Env.isDebug()) {
Stetho.initialize(
Stetho.newInitializerBuilder(context)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(context))
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(context))
.build()
);
}
}
}

View File

@@ -10,7 +10,7 @@ import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import com.nnbc123.app.R;
import com.nnbc123.app.UIHelper;
import com.nnbc123.app.utils.UIHelper;
import com.nnbc123.app.audio.adapter.MyVoiceListAdapter;
import com.nnbc123.app.audio.helper.AudioPlayerHelper;
import com.nnbc123.app.audio.presenter.MyVoicePresenter;

View File

@@ -20,7 +20,7 @@ import com.opensource.svgaplayer.SVGACallback;
import com.opensource.svgaplayer.SVGAImageView;
import com.trello.rxlifecycle3.android.ActivityEvent;
import com.nnbc123.app.R;
import com.nnbc123.app.UIHelper;
import com.nnbc123.app.utils.UIHelper;
import com.nnbc123.app.audio.helper.AudioPlayerHelper;
import com.nnbc123.app.audio.helper.OnPlayListener;
import com.nnbc123.app.audio.helper.OnRefreshListener;

View File

@@ -12,7 +12,7 @@ import com.chad.library.adapter.base.BaseViewHolder;
import com.nnbc123.app.R;
import com.nnbc123.app.audio.widget.VoiceLine;
import com.nnbc123.core.audio.bean.UserVoiceInfo;
import com.nnbc123.core.utils.StringUtils;
import com.nnbc123.core.utils.CStringUtils;
import java.util.List;
import java.util.Locale;
@@ -103,7 +103,7 @@ public class MyVoiceListAdapter extends BaseQuickAdapter<UserVoiceInfo, BaseView
});
// 点击播放声音/停止声音
helper.voiceBarLayout.setOnClickListener(view -> {
if (StringUtils.isEmpty(item.getVoiceUrl())) {
if (CStringUtils.isEmpty(item.getVoiceUrl())) {
return;
}
boolean isChange = helper.getAdapterPosition() != voiceClickPos;
@@ -138,7 +138,7 @@ public class MyVoiceListAdapter extends BaseQuickAdapter<UserVoiceInfo, BaseView
});
// 点击播放声音/停止声音
helper.voiceBarLayout.setOnClickListener(view -> {
if (StringUtils.isEmpty(item.getVoiceUrl())) {
if (CStringUtils.isEmpty(item.getVoiceUrl())) {
return;
}
boolean isChange = helper.getAdapterPosition() != voiceClickPos;
@@ -175,7 +175,7 @@ public class MyVoiceListAdapter extends BaseQuickAdapter<UserVoiceInfo, BaseView
});
// 点击播放声音/停止声音
helper.voiceBarLayout.setOnClickListener(view -> {
if (StringUtils.isEmpty(item.getVoiceUrl())) {
if (CStringUtils.isEmpty(item.getVoiceUrl())) {
return;
}
boolean isChange = helper.getAdapterPosition() != voiceClickPos;

View File

@@ -93,7 +93,7 @@ public class AudioPlayerHelper {
try {
player.setDataSource(filePath);
} catch (IOException e) {
} catch (Exception e) {
e.printStackTrace();
}
preparing = true;
@@ -122,6 +122,9 @@ public class AudioPlayerHelper {
}
public void endPlay() {
if (listener != null) {
listener.onCompletion();
}
handler.removeMessages(WHAT_STATUS.COUNT_PLAY);
if (player != null) {
if (preparing) {

View File

@@ -11,7 +11,7 @@ import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import javax.annotation.Nullable;
import androidx.annotation.Nullable;
import io.reactivex.Single;
import io.reactivex.SingleOnSubscribe;

View File

@@ -14,7 +14,7 @@ import android.widget.TextView;
import com.coorchice.library.SuperTextView;
import com.opensource.svgaplayer.SVGAImageView;
import com.nnbc123.app.R;
import com.nnbc123.app.UIHelper;
import com.nnbc123.app.utils.UIHelper;
import com.nnbc123.app.audio.VoiceMatchActivity;
import com.nnbc123.app.audio.helper.OnPlayListener;
import com.nnbc123.app.audio.helper.SvgaCacheManager;
@@ -22,7 +22,7 @@ import com.nnbc123.app.audio.helper.VmSoundManager;
import com.nnbc123.app.common.widget.CircleImageView;
import com.nnbc123.app.ui.utils.ImageLoadUtils;
import com.nnbc123.app.ui.widget.magicindicator.buildins.UIUtil;
import com.nnbc123.xchat_android_constants.XChatConstants;
import com.nnbc123.core.XChatConstants;
import com.nnbc123.core.audio.bean.VoiceMatchInfo;
import com.nnbc123.core.auth.AuthModel;
import com.nnbc123.core.statistic.StatisticManager;

View File

@@ -10,7 +10,7 @@ import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.orhanobut.logger.Logger;
import com.nnbc123.app.R;
import com.nnbc123.app.UIHelper;
import com.nnbc123.app.utils.UIHelper;
import com.nnbc123.app.avroom.widget.ViewItem;
import com.nnbc123.app.common.widget.dialog.DialogManager;
import com.nnbc123.app.public_chat_hall.widget.ShutUpDialog;

View File

@@ -72,7 +72,7 @@ import com.nnbc123.app.ui.widget.dialog.AllServiceGiftLevelTwoDialog;
import com.nnbc123.app.ui.widget.dialog.MonsterDialog;
import com.nnbc123.app.ui.widget.marqueeview.Utils;
import com.nnbc123.app.utils.UserUtils;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.DemoCache;
import com.nnbc123.core.auth.AuthModel;
import com.nnbc123.core.auth.event.LogoutEvent;
@@ -90,9 +90,9 @@ import com.nnbc123.core.module_hall.hall.HallModel;
import com.nnbc123.core.module_hall.hall.bean.SuperAdminInfo;
import com.nnbc123.core.monsterhunting.bean.MonsterHuntingResult;
import com.nnbc123.core.monsterhunting.bean.MonsterInfo;
import com.nnbc123.core.monsterhunting.bean.MonsterProtocol;
import com.nnbc123.core.monsterhunting.bean.MonsterProtocolDataBean;
import com.nnbc123.core.monsterhunting.manager.MonsterDataManager;
import com.nnbc123.core.noble.AllServiceGiftProtocol;
import com.nnbc123.core.noble.AllServiceGiftProtocolDataBean;
import com.nnbc123.core.noble.NobleInfo;
import com.nnbc123.core.noble.NobleResourceType;
import com.nnbc123.core.noble.NobleUtil;
@@ -116,7 +116,7 @@ import com.nnbc123.core.super_admin.util.SuperAdminUtil;
import com.nnbc123.core.user.UserModel;
import com.nnbc123.core.user.bean.UserInfo;
import com.nnbc123.core.utils.LogUtils;
import com.nnbc123.core.utils.StringUtils;
import com.nnbc123.core.utils.CStringUtils;
import com.nnbc123.library.base.factory.CreatePresenter;
import com.nnbc123.library.rxbus.RxBus;
import com.nnbc123.library.utils.JavaUtil;
@@ -127,7 +127,6 @@ import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.orhanobut.logger.Logger;
import com.tencent.bugly.crashreport.CrashReport;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -198,7 +197,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
private GiftBroadcastObserver giftObserver;
private Dialog giftDialog;
private LinkedList<AllServiceGiftProtocol.DataBean> giftList;
private LinkedList<AllServiceGiftProtocolDataBean> giftList;
private boolean isResume = true;
@Nullable
private SingleRoomTipDialog singleRoomTipDialog;
@@ -236,8 +235,8 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
return;
}
Intent intent = new Intent(context, AVRoomActivity.class);
intent.putExtra(Constants.ROOM_INFO, (Parcelable) roomInfo);
intent.putExtra(Constants.ROOM_UID, roomInfo.getUid());
intent.putExtra(CoreConstants.ROOM_INFO, (Parcelable) roomInfo);
intent.putExtra(CoreConstants.ROOM_UID, roomInfo.getUid());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_INTO_ROOM_CLICK, "进入房间");
@@ -255,7 +254,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
return;
}
Intent intent = new Intent(context, AVRoomActivity.class);
intent.putExtra(Constants.ROOM_UID, roomUid);
intent.putExtra(CoreConstants.ROOM_UID, roomUid);
intent.putExtra("fromType", fromType);
if (!TextUtils.isEmpty(fromNick)) {
intent.putExtra("fromNick", fromNick);
@@ -277,7 +276,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
public static void setBackBg(Context context, RoomInfo roomInfo, SVGAImageView svgaRoomBg, String[] bgPicture) {
if (roomInfo != null && svgaRoomBg != null) {
if (roomInfo.getRoomBackground() != null) {
if (!StringUtils.isBlank(roomInfo.getRoomBackground().getPicUrl())) {
if (!CStringUtils.isBlank(roomInfo.getRoomBackground().getPicUrl())) {
int resourceType = NobleUtil.getResourceType(roomInfo.getRoomBackground().getPicUrl());
if (resourceType == NobleResourceType.URLS) {
if (!roomInfo.getRoomBackground().getPicUrl().equals(bgPicture[0])) {
@@ -291,7 +290,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
}
}
}
} else if (!StringUtils.isBlank(roomInfo.getBackPic())) {
} else if (!CStringUtils.isBlank(roomInfo.getBackPic())) {
int resourceType = NobleUtil.getResourceType(roomInfo.getBackPic());
if (resourceType == NobleResourceType.URLS) {
if (!roomInfo.getBackPic().equals(bgPicture[0])) {
@@ -405,11 +404,11 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
fromNick = intent.getStringExtra("fromNick");
fromUid = intent.getStringExtra("fromUid");
giftId = intent.getIntExtra("giftId", 0);
mRoomInfo = intent.getParcelableExtra(Constants.ROOM_INFO);
mRoomInfo = intent.getParcelableExtra(CoreConstants.ROOM_INFO);
if (mRoomInfo != null) {
roomUid = mRoomInfo.getRoomUid();
} else {
roomUid = intent.getLongExtra(Constants.ROOM_UID, 0);
roomUid = intent.getLongExtra(CoreConstants.ROOM_UID, 0);
}
}
@@ -549,7 +548,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
}
break;
case RoomEvent.MONSTER_STATUS_CHANGED:
MonsterProtocol.DataBean dataBean = roomEvent.getMonsterStatusAttachment().getDataBean();
MonsterProtocolDataBean dataBean = roomEvent.getMonsterStatusAttachment().getDataBean();
Log.e(TAG, "onRoomEventReceive: monster status changed: " + dataBean);
RoomInfo myRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
// 当前为房间页面并且当前房间为怪兽出现房间时才出现通知
@@ -597,7 +596,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
// 当前为房间页面并且当前房间为怪兽出现房间时才出现通知
if (UIUtils.isTopActivity(AVRoomActivity.this) && currentRoomInfo != null &&
currentRoomInfo.getUid() == monsterHuntingResult.getMonster().getAppearRoomUid()) {
MonsterProtocol.DataBean monsterInfo = monsterHuntingResult.getMonster();
MonsterProtocolDataBean monsterInfo = monsterHuntingResult.getMonster();
if (monsterDialog != null && monsterDialog.isShowing()) {
monsterDialog.dismiss();
}
@@ -915,7 +914,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
}
dismissLoadingDialog();
} catch (Exception e) {
CrashReport.postCatchedException(e);
StatisticManager.Instance().logException(e);
}
EventBus.getDefault().unregister(this);
super.onDestroy();
@@ -1196,14 +1195,14 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
giftList = new LinkedList<>();
}
int second2 = baseProtocol.getSecond();
AllServiceGiftProtocol.DataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocol.DataBean.class);
AllServiceGiftProtocolDataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocolDataBean.class);
if (data == null || data.getGiftUrl() == null || data.isCeremonyGift())
return;
giftList.add(data);
if (second2 == CUSTOM_MSG_ALL_SERVICE_GIFT) {
if (giftDialog != null && giftDialog.isShowing()) {
// 如果当前以及有礼物弹窗在展示,则需要等到他 dismiss 后再显示下一个
AllServiceGiftProtocol.DataBean dataBean = giftList.peekFirst();
AllServiceGiftProtocolDataBean dataBean = giftList.peekFirst();
if (dataBean != null) {
return;
} else {
@@ -1241,7 +1240,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
giftDialog = generateAllServiceGiftDialog(this, giftList.peekFirst());
giftDialog.setOnDismissListener(dialog -> {
giftList.pollFirst();
AllServiceGiftProtocol.DataBean dataBean = giftList.peekFirst();
AllServiceGiftProtocolDataBean dataBean = giftList.peekFirst();
if (dataBean != null) {
if (isValid()) {
showGiftDialog();
@@ -1253,7 +1252,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
giftDialog.show();
}
private AllServiceGiftDialog generateAllServiceGiftDialog(Context context, AllServiceGiftProtocol.DataBean dataBean) {
private AllServiceGiftDialog generateAllServiceGiftDialog(Context context, AllServiceGiftProtocolDataBean dataBean) {
switch (JavaUtil.str2int(dataBean.getLevelNum())) {
default:
case AllServiceGiftDialog.ALL_SERVICE_GIFT_LEVEL_1:

View File

@@ -21,7 +21,7 @@ import com.nnbc123.core.noble.NobleResourceType;
import com.nnbc123.core.user.bean.UserInfo;
import com.nnbc123.library.base.factory.CreatePresenter;
import com.nnbc123.library.utils.ListUtils;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.room.bean.OnlineChatMember;
import com.nnbc123.library.utils.SingleToastUtil;
@@ -41,13 +41,13 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
private SmartRefreshLayout mRefreshLayout;
private RecyclerView mRecyclerView;
private int mPage = Constants.PAGE_START;
private int mPage = CoreConstants.PAGE_START;
private int micPosition;
private boolean onlyManager;
public static void openActivity(FragmentActivity fragmentActivity, int micPosition,boolean onlyManager) {
Intent intent = new Intent(fragmentActivity, RoomInviteActivity.class);
intent.putExtra(Constants.KEY_POSITION, micPosition);
intent.putExtra(CoreConstants.KEY_POSITION, micPosition);
intent.putExtra("only_manager", onlyManager);
fragmentActivity.startActivityForResult(intent, 200);
}
@@ -62,7 +62,7 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
initWhiteTitleBar(onlyManager ? "在线房主/管理员" : getString(R.string.title_online));
Intent intent = getIntent();
if (intent != null)
micPosition = intent.getIntExtra(Constants.KEY_POSITION, Integer.MIN_VALUE);
micPosition = intent.getIntExtra(CoreConstants.KEY_POSITION, Integer.MIN_VALUE);
mRoomInviteAdapter = new RoomInviteAdapter(this, this);
mRecyclerView.setAdapter(mRoomInviteAdapter);
@@ -96,7 +96,7 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
}
public void firstLoad() {
mPage = Constants.PAGE_START;
mPage = CoreConstants.PAGE_START;
loadData(0);
}
@@ -112,7 +112,7 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
@Override
public void onRequestChatMemberByPageFail(String errorStr, int page) {
mPage = page;
if (mPage == Constants.PAGE_START) {
if (mPage == CoreConstants.PAGE_START) {
mRefreshLayout.finishRefresh(0);
showNoData(getString(R.string.data_error));
} else {
@@ -128,7 +128,7 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
@Override
public void onRequestMemberByPageSuccess(List<ChatRoomMember> memberList, int page) {
mPage = page;
if (mPage == Constants.PAGE_START) {
if (mPage == CoreConstants.PAGE_START) {
List<ChatRoomMember> chatRoomMemberList = mRoomInviteAdapter.getChatRoomMemberList();
if (!ListUtils.isListEmpty(chatRoomMemberList))
chatRoomMemberList.clear();
@@ -174,7 +174,7 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
intent.putExtra("account", chatRoomMember.getAccount());
String nick = chatRoomMember.getNick();
intent.putExtra("nick", nick == null ? "" : nick);
intent.putExtra(Constants.KEY_POSITION, micPosition);
intent.putExtra(CoreConstants.KEY_POSITION, micPosition);
setResult(100, intent);
finish();
}

View File

@@ -17,7 +17,8 @@ import android.widget.RelativeLayout;
import android.widget.TextView;
import com.coorchice.library.SuperTextView;
import com.netease.nim.uikit.common.util.string.StringUtil;
import com.netease.nim.uikit.common.util.string.NimStringUtil;
import com.nnbc123.core.utils.ktx.StringExtensionKt;
import com.opensource.svgaplayer.SVGAImageView;
import com.nnbc123.app.R;
import com.nnbc123.app.common.widget.CircleImageView;
@@ -39,7 +40,6 @@ import com.nnbc123.core.room.pk.bean.PKTeamInfo;
import com.nnbc123.core.room.queue.bean.MicMemberInfo;
import com.nnbc123.core.user.UserModel;
import com.nnbc123.core.utils.ActivityUtil;
import com.nnbc123.core.utils.StringExtensionKt;
import com.nnbc123.library.utils.config.BasicConfig;
/**
@@ -286,7 +286,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
}
protected void setSelectText(int index, String nick, int gender) {
tvNick.setText(StringExtensionKt.subAndReplaceDot(StringUtil.removeBlanks(nick), 7));
tvNick.setText(StringExtensionKt.subAndReplaceDot(NimStringUtil.removeBlanks(nick), 7));
tvNick.setTextColor(context.getResources().getColor(R.color.white));
if (tvNumber != null) {

View File

@@ -15,7 +15,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.nnbc123.app.R
import com.nnbc123.app.ui.utils.load
import com.nnbc123.app.utils.UserUtils
import com.nnbc123.core.Constants
import com.nnbc123.core.CoreConstants
import com.nnbc123.core.bean.RoomQueueInfo
import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.room.bean.RoomInfo
@@ -74,7 +74,7 @@ class DatingMicroViewAdapter(context: Context?) : BaseMicroViewAdapter(context)
super.bind(info, position)
val roomInfo = AvRoomDataManager.get().mCurrentRoomInfo ?: return
val roomMicInfo = info.mRoomMicInfo
val manMicro = Constants.maleIndex.contains(position)
val manMicro = CoreConstants.maleIndex.contains(position)
val uid = UserUtils.getUserUid()
if (roomMicInfo != null) {
viewGenderBg.setBackgroundResource(if (manMicro) R.drawable.shape_circle_micro_man_bg else R.drawable.shape_circle_micro_woman_bg)

View File

@@ -5,7 +5,7 @@ import com.chad.library.adapter.base.BaseViewHolder
import com.nnbc123.app.R
import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.ktx.subAndReplaceDot
class ExitRoomAdapter :
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_exit_room) {

View File

@@ -28,16 +28,6 @@ public class InviteFriendListAdapter extends BaseQuickAdapter<PublicChatHallFrie
this.context = context;
}
private OnItemClickListener onItemClickListener;
public interface OnItemClickListener {
void sendListener(UserInfo attentionInfo);
}
public void setRylListener(OnItemClickListener onClickListener) {
onItemClickListener = onClickListener;
}
@Override
protected void convert(BaseViewHolder helper, PublicChatHallFriendInfo pchFriendInfo) {
if (pchFriendInfo == null) return;

View File

@@ -16,7 +16,7 @@ import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.core.bean.RoomQueueInfo
import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.praise.PraiseModel
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.toast
import com.nnbc123.library.utils.config.BasicConfig

View File

@@ -8,7 +8,7 @@ import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.nnbc123.app.R;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.bean.RoomQueueInfo;
import com.nnbc123.core.manager.AvRoomDataManager;
@@ -78,7 +78,7 @@ public class UpMicAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
textView.setText(AvRoomDataManager.get().isDatingMode() ? "主持位" : "房主位");
} else {
if (AvRoomDataManager.get().isDatingMode()) {
textView.setText(position + (Constants.maleIndex.contains(position - 1) ? "号男神位" : "号女神位"));
textView.setText(position + (CoreConstants.maleIndex.contains(position - 1) ? "号男神位" : "号女神位"));
} else {
textView.setText(String.format(context.getResources().getString(R.string.which_mic_position), position));
}

View File

@@ -26,7 +26,7 @@ import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.room.anotherroompk.ShowGiftDialogEvent
import com.nnbc123.core.room.anotherroompk.ShowUserInfoDialogEvent
import com.nnbc123.core.utils.CurrentTimeUtils
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.ktx.subAndReplaceDot
import com.nnbc123.library.rxbus.RxBus
import com.nnbc123.library.utils.CommonUtils
import io.reactivex.Observable

View File

@@ -15,10 +15,10 @@ import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.room.anotherroompk.RoomPKModel
import com.nnbc123.core.room.anotherroompk.SimpleRoomInfo
import com.nnbc123.core.utils.ifNotNullOrEmpty
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.toIntOrDef
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.ifNotNullOrEmpty
import com.nnbc123.core.utils.ktx.subAndReplaceDot
import com.nnbc123.core.utils.ktx.toIntOrDef
import com.nnbc123.core.utils.ktx.toast
class RoomPKCreateActivity : BaseViewBindingActivity<ActivityRoomPkCreateBinding>() {

View File

@@ -16,7 +16,7 @@ import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.room.anotherroompk.RoomPKModel
import com.nnbc123.core.room.anotherroompk.SimpleRoomInfo
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.toast
class RoomPKSearchActivity : BaseViewBindingActivity<ActivityRoomPkSearchBinding>() {

View File

@@ -5,7 +5,7 @@ import com.chad.library.adapter.base.BaseViewHolder
import com.nnbc123.app.R
import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.core.room.anotherroompk.SimpleRoomInfo
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.ktx.subAndReplaceDot
class RoomPKSearchAdapter :
BaseQuickAdapter<SimpleRoomInfo, BaseViewHolder>(R.layout.item_room_pk_search) {

View File

@@ -9,7 +9,7 @@ import com.nnbc123.app.base.BaseDialog
import com.nnbc123.app.databinding.DialogRoomPkFinishBinding
import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.core.im.custom.bean.RoomPkBean
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.ktx.subAndReplaceDot
class RoomPkFinishDialog : BaseDialog<DialogRoomPkFinishBinding>() {

View File

@@ -8,7 +8,7 @@ import com.nnbc123.app.base.BaseDialog
import com.nnbc123.app.databinding.DialogRoomPkForceFinishBinding
import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.core.im.custom.bean.RoomPkBean
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.ktx.subAndReplaceDot
class RoomPkForceFinishDialog : BaseDialog<DialogRoomPkForceFinishBinding>() {

View File

@@ -8,9 +8,9 @@ import com.nnbc123.app.databinding.DialogRoomPkReceivedBinding
import com.nnbc123.core.im.custom.bean.RoomPkBean
import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.room.anotherroompk.RoomPKModel
import com.nnbc123.core.utils.ifNotNullOrEmpty
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.ifNotNullOrEmpty
import com.nnbc123.core.utils.ktx.subAndReplaceDot
import com.nnbc123.core.utils.ktx.toast
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable

View File

@@ -16,11 +16,11 @@ import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.transition.Transition
import com.chuhai.utils.PathUtils
import com.chu.utils.PathUtils
import com.hjq.toast.ToastUtils
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.netease.nim.uikit.support.glide.GlideApp
import com.nnbc123.app.ErbanTakePhotoActivity.TakePhotoCallBack
import com.nnbc123.app.takephoto.app.ErbanTakePhotoActivity.TakePhotoCallBack
import com.nnbc123.app.R
import com.nnbc123.app.application.XChatApplication
import com.nnbc123.app.avroom.PrivilegeViewModel
@@ -34,8 +34,8 @@ import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog
import com.nnbc123.core.file.FileModel
import com.nnbc123.core.privilege.bean.PrivilegeCardInfo
import com.nnbc123.core.utils.Logger
import com.nnbc123.core.utils.TextUtils
import com.nnbc123.core.utils.CLogger
import com.nnbc123.core.utils.CTextUtils
import com.nnbc123.library.common.file.FileHelper
import com.nnbc123.library.common.photo.PhotoProviderNew
import com.nnbc123.library.common.support.PathHelper
@@ -268,9 +268,9 @@ class CreatePrivilegeCardDialog : BaseDialog<DialogCreatePrivilegeCardBinding>()
}
private fun checkEmpty(): Boolean {
return (TextUtils.isEmptyText(binding.edName.text.toString()) || TextUtils.isEmptyText(
return (CTextUtils.isEmptyText(binding.edName.text.toString()) || CTextUtils.isEmptyText(
binding.edUseNumber.text.toString()
) || TextUtils.isEmptyText(binding.edValid.text.toString()) || TextUtils.isEmptyText(binding.edId.text.toString()) || TextUtils.isEmptyText(
) || CTextUtils.isEmptyText(binding.edValid.text.toString()) || CTextUtils.isEmptyText(binding.edId.text.toString()) || CTextUtils.isEmptyText(
mUrl
))
}
@@ -330,7 +330,7 @@ class CreatePrivilegeCardDialog : BaseDialog<DialogCreatePrivilegeCardBinding>()
}
if (sourceSize > 0) {
//不能上传图片的最小文件大小
Logger.debug(TAG, "sourceSize: $sourceSize")
CLogger.debug(TAG, "sourceSize: $sourceSize")
if (sourceSize < MIN_HEAD_PHOTO_SIZE) {
ToastUtils.show(R.string.text_bitmap_too_small)
return
@@ -438,7 +438,7 @@ class CreatePrivilegeCardDialog : BaseDialog<DialogCreatePrivilegeCardBinding>()
val outPath = getImageTempPath(path)
lifecycleScope.launch {
Log.d(TAG, "uploadVideo 开始保存封面 outPath:${outPath}")
val saveResult = com.chuhai.utils.ImageUtils.save(
val saveResult = com.chu.utils.ImageUtils.save(
resource,
outPath,
Bitmap.CompressFormat.JPEG, false

View File

@@ -15,7 +15,7 @@ import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.core.room.bean.RoomInfo
import com.nnbc123.core.room.game.GameInfo
import com.nnbc123.core.room.game.GameModel
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.toast
class CreateRoomDialog : BaseDialog<DialogCreateRoomBinding>() {

View File

@@ -19,14 +19,14 @@ import com.nnbc123.core.room.model.AvRoomModel
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.app.R
import com.nnbc123.app.UIHelper
import com.nnbc123.app.utils.UIHelper
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.avroom.adapter.ExitRoomAdapter
import com.nnbc123.app.avroom.presenter.HomePartyPresenter
import com.nnbc123.app.common.widget.dialog.DialogManager.LambdaOkDialogListener
import com.nnbc123.app.common.widget.dialog.DialogManager.OkCancelDialogListener
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.xchat_android_constants.XChatConstants
import com.nnbc123.core.XChatConstants
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import io.reactivex.disposables.Disposable
import org.greenrobot.eventbus.EventBus

View File

@@ -28,7 +28,7 @@ import com.nnbc123.app.home.helper.LoadPageDataHelper;
import com.nnbc123.app.ui.widget.dialog.BaseDialog;
import com.nnbc123.app.ui.widget.marqueeview.Utils;
import com.nnbc123.app.ui.widget.recyclerview.decoration.ColorDecoration;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.auth.AuthModel;
import com.nnbc123.core.bean.RoomQueueInfo;
import com.nnbc123.core.manager.AvRoomDataManager;
@@ -192,9 +192,9 @@ public class MicQueueDialog extends BaseDialog implements
if (key == -1) continue;
//相亲模式只能抱上对应的坑位
if (AvRoomDataManager.get().isDatingMode()) {
if (member.getGroupType() == GroupType.MALE && !Constants.maleIndex.contains(key))
if (member.getGroupType() == GroupType.MALE && !CoreConstants.maleIndex.contains(key))
continue;
if (member.getGroupType() == GroupType.FEMALE && Constants.maleIndex.contains(key))
if (member.getGroupType() == GroupType.FEMALE && CoreConstants.maleIndex.contains(key))
continue;
}
RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(key);
@@ -425,7 +425,7 @@ public class MicQueueDialog extends BaseDialog implements
public Single<List<QueuingMicMemeberInfo>> loadData(int curPage) {
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (roomInfo != null) {
return MicQueueModel.get().loadMicQueueList(roomInfo.getUid(), curPage, Constants.PAGE_SIZE)
return MicQueueModel.get().loadMicQueueList(roomInfo.getUid(), curPage, CoreConstants.PAGE_SIZE)
.flatMap(info -> {
queueMicListInfo = info;
AvRoomDataManager.get().myIsInQueue = info.getMyPos() >= 0;
@@ -470,7 +470,7 @@ public class MicQueueDialog extends BaseDialog implements
} else {
showNoDataLayout();
}
loadPageDataHelper.setCurPage(Constants.PAGE_START + 1);
loadPageDataHelper.setCurPage(CoreConstants.PAGE_START + 1);
}
public void removeQueueMember(String account) {

View File

@@ -26,7 +26,7 @@ import com.nnbc123.app.ui.widget.dialog.BaseDialog;
import com.nnbc123.app.ui.widget.dialog.CommonLoadingDialog;
import com.nnbc123.app.ui.widget.marqueeview.Utils;
import com.nnbc123.app.ui.widget.recyclerview.decoration.ColorDecoration;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.auth.AuthModel;
import com.nnbc123.core.bean.RoomQueueInfo;
import com.nnbc123.core.manager.AvRoomDataManager;
@@ -215,7 +215,7 @@ public class PKMicQueueDialog extends BaseDialog implements
if (roomInfo != null) {
return PkModel.get().loadPKMicQueueList(
curPage,
Constants.PAGE_SIZE
CoreConstants.PAGE_SIZE
)
.flatMap(info -> {
queueMicListInfo = info;
@@ -304,7 +304,7 @@ public class PKMicQueueDialog extends BaseDialog implements
} else {
showNoDataLayout();
}
loadPageDataHelper.setCurPage(Constants.PAGE_START + 1);
loadPageDataHelper.setCurPage(CoreConstants.PAGE_START + 1);
}

View File

@@ -16,7 +16,7 @@ import com.nnbc123.app.utils.SpannableBuilder
import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.room.bean.BroadcastInfo
import com.nnbc123.core.room.model.AvRoomModel
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.toast
import com.nnbc123.library.utils.CommonUtils
import com.nnbc123.library.utils.TextWatcherWrapper
import io.reactivex.Observable

View File

@@ -8,52 +8,56 @@ import android.graphics.drawable.ColorDrawable
import android.text.Spannable
import android.text.SpannableStringBuilder
import android.text.style.ForegroundColorSpan
import android.util.Log
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.WindowManager
import android.widget.PopupWindow
import android.widget.TextView
import com.android.billingclient.api.BillingClient
import com.android.billingclient.api.BillingResult
import com.android.billingclient.api.ProductDetails
import com.android.billingclient.api.Purchase
import com.google.android.flexbox.AlignItems
import com.google.android.flexbox.FlexboxLayoutManager
import com.google.android.flexbox.JustifyContent
import com.nnbc123.core.UriProvider
import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.pay.PayModel
import com.nnbc123.core.pay.PaymentActivity
import com.nnbc123.core.pay.bean.FirstChargeGoods
import com.nnbc123.core.pay.bean.FirstChargeReward
import com.nnbc123.core.pay.bean.PaymentResult
import com.nnbc123.core.pay.event.FirstChargeEvent
import com.nnbc123.core.pay.model.unionpay.UnionPayModel
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.toast
import com.nnbc123.app.R
import com.nnbc123.app.bank_card.activity.AddBankCardAgreementActivity
import com.nnbc123.app.base.BaseViewBindingActivity
import com.nnbc123.app.common.widget.dialog.DialogManager.AbsOkDialogListener
import com.nnbc123.app.databinding.DialogFirstChargeBinding
import com.nnbc123.app.ui.setting.ModifyPwdActivity
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.app.ui.webview.CommonWebViewActivity
import com.nnbc123.library.annatation.ActLayoutRes
import com.nnbc123.library.utils.JavaUtil
import com.nnbc123.library.utils.SingleToastUtil
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.nnbc123.app.ui.pay.BillingManager
import com.nnbc123.core.pay.bean.PayRecordId
import com.nnbc123.core.utils.net.IgnoreException
import com.nnbc123.library.common.Constants
import com.nnbc123.library.utils.AppMetaDataUtil
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
@ActLayoutRes(R.layout.dialog_first_charge)
class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>() {
class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>(),
BillingManager.BillingUpdatesListener {
private val TAG = "FirstChargeDialog"
private var goodsList: List<FirstChargeGoods>? = null
private var currGoods: FirstChargeGoods? = null
private lateinit var rewardAdapter: RewardAdapter
private lateinit var rvDelegate: RVDelegate<FirstChargeReward>
private lateinit var helpPopupWindow: PopupWindow
private var billingManager: BillingManager? = null
companion object {
@JvmStatic
@@ -99,8 +103,7 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>() {
binding.ivHelp.setOnClickListener { showHelpPopup() }
binding.tvCharge.setOnClickListener {
currGoods?.let {
SelectPayTypeDialog.newInstance(it.chargeProdId, "¥${it.chargeMoney}")
.show(this)
buyProduct(it.productDetails)
} ?: run {
"请选择充值产品!".toast()
}
@@ -147,19 +150,24 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>() {
1 -> {
binding.rbPlanB.visibility = View.GONE
binding.rbPlanC.visibility = View.GONE
binding.rbPlanA.text = "${goodsList[0].chargeMoney}"
binding.rbPlanA.text = "$${goodsList[0].chargeMoney}"
}
2 -> {
binding.rbPlanC.visibility = View.GONE
binding.rbPlanA.text = "${goodsList[0].chargeMoney}"
binding.rbPlanB.text = "${goodsList[1].chargeMoney}"
binding.rbPlanA.text = "$${goodsList[0].chargeMoney}"
binding.rbPlanB.text = "$${goodsList[1].chargeMoney}"
}
3 -> {
binding.rbPlanA.text = "${goodsList[0].chargeMoney}"
binding.rbPlanB.text = "${goodsList[1].chargeMoney}"
binding.rbPlanC.text = "${goodsList[2].chargeMoney}"
binding.rbPlanA.text = "$${goodsList[0].chargeMoney}"
binding.rbPlanB.text = "$${goodsList[1].chargeMoney}"
binding.rbPlanC.text = "$${goodsList[2].chargeMoney}"
}
}
if (AppMetaDataUtil.getChannelID().equals(Constants.CHANNEL_GOOGLE)) {
initBilling()
}
}
private fun updateCurrGoods(firstChargeGoods: FirstChargeGoods?) {
@@ -217,43 +225,6 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>() {
if (resultCode != RESULT_OK) {
return
}
//支付页面返回处理
if (requestCode == PaymentActivity.REQUEST_CODE_PAY) {
if (data != null && data.extras != null) {
val paymentResult: PaymentResult? =
data.getParcelableExtra(PaymentActivity.KEY_PAY_RESULT)
if (paymentResult != null) {
// 充值金额超过限定时,就必须先实名认证
when (JavaUtil.str2int(paymentResult.code)) {
PayModel.NOT_REAL_NAME_BEFORE_CHARGING -> dialogManager.showTipsDialog(
getString(R.string.tips_need_to_certification),
getString(R.string.go_to_certification),
object : AbsOkDialogListener() {
override fun onOk() {
// 跳去实名认证页面
CommonWebViewActivity.start(
this@FirstChargeDialog,
UriProvider.getTutuRealNamePage()
)
}
})
UnionPayModel.CODE_NEED_BIND_BANK_CARD_FIRST -> dialogManager.showTipsDialog(
getString(R.string.tips_need_bind_bank_card_first),
object : AbsOkDialogListener() {
override fun onOk() {
// 跳去添加银行卡页面
AddBankCardAgreementActivity.start(this@FirstChargeDialog)
}
})
else -> {
toast(paymentResult.msg)
//重新获取钱包信息
PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe()
}
}
}
}
}
if (requestCode == BIND_CODE_GOLD) {
ModifyPwdActivity.start(this, ModifyPwdActivity.FOGERT_PAY_PWD)
}
@@ -264,9 +235,114 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>() {
finish()
}
override fun onResume() {
super.onResume()
if (billingManager?.isServiceConnected == true) {
billingManager?.onQueryPurchases()
}
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
billingManager?.destroy()
}
private fun initBilling() {
billingManager = BillingManager(this, this)
}
@SuppressLint("CheckResult")
override fun onBillingClientSetupFinished() {
Log.i(TAG, "onBillingClientSetupFinished")
goodsList?.let { initProduceList(it) }
}
private fun initProduceList(goodsList: List<FirstChargeGoods>) {
val productKeys: MutableList<String> = ArrayList()
for (bean in goodsList) {
productKeys.add(bean.chargeProdId)
}
billingManager?.querySkuDetailsAsync(productKeys) { billingResult: BillingResult, productDetails: MutableList<ProductDetails> ->
if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) {
Log.w(
TAG,
"Unsuccessful query for type: " + BillingClient.ProductType.INAPP + ". Error code: " + billingResult.responseCode
)
return@querySkuDetailsAsync
}
if (productDetails.isNotEmpty()) {
for (chargeBean in goodsList) {
for (skuDetails in productDetails) {
if (skuDetails.productId == chargeBean.chargeProdId) {
chargeBean.productDetails = skuDetails
break
}
}
}
}
}
}
/*商品更新回调*/
@SuppressLint("CheckResult")
override fun onPurchasesUpdated(purchases: List<Purchase>) {
for (purchase in purchases) {
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED &&
purchase.accountIdentifiers != null
) {
PayModel.get().verifyOrder(
purchase.accountIdentifiers!!.obfuscatedAccountId,
purchase.products[0],
purchase.packageName,
purchase.purchaseToken
)
.compose(bindToLifecycle())
.subscribe(
{ token: String? ->
//L.i("token=" + token);
billingManager?.consumeAsync(token)
}
) { throwable: Throwable ->
if (throwable !is IgnoreException) {
SingleToastUtil.showToast(throwable.message)
}
}
}
}
Log.i(TAG, "onPurchasesUpdated")
}
override fun onConsumeFinished(token: String?, result: Int) {
}
override fun onFailedHandle(result: Int) {
}
/*购买商品*/
@SuppressLint("CheckResult")
fun buyProduct(skuDetails: ProductDetails?) {
if (skuDetails != null) {
Log.d(TAG, "BuyProduct:" + skuDetails.productId)
PayModel.get().placeOrder(skuDetails.productId)
.compose(bindToLifecycle())
.subscribe(
{ recordId: PayRecordId ->
billingManager?.initiatePurchaseFlow(
skuDetails,
recordId.recordId
)
}
) { throwable: Throwable ->
SingleToastUtil.showToast(
throwable.message
)
}
} else {
Log.w(TAG, "skuDetails ==null")
}
}
}

View File

@@ -7,7 +7,7 @@ import com.chad.library.adapter.base.BaseViewHolder
import com.nnbc123.app.R
import com.nnbc123.core.pay.bean.FirstChargeReward
import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.core.utils.TextUtils
import com.nnbc123.core.utils.CTextUtils
class RewardAdapter(private val itemWidth: Int) :
BaseQuickAdapter<FirstChargeReward, BaseViewHolder>(R.layout.item_first_charge_reward) {
@@ -23,6 +23,6 @@ class RewardAdapter(private val itemWidth: Int) :
)
helper.setText(R.id.tv_name, item.showText)
.setText(R.id.tv_time, item.showTime)
.setGone(R.id.tv_time, !TextUtils.isEmptyText(item.showTime))
.setGone(R.id.tv_time, !CTextUtils.isEmptyText(item.showTime))
}
}

View File

@@ -9,14 +9,11 @@ import android.view.View
import android.view.WindowManager
import androidx.core.graphics.toColorInt
import androidx.core.view.isVisible
import com.nnbc123.core.Constants
import com.nnbc123.core.pay.PayModel
import com.nnbc123.core.pay.PaymentActivity
import com.nnbc123.core.pay.bean.WalletInfo
import com.nnbc123.app.R
import com.nnbc123.app.base.BaseDialog
import com.nnbc123.app.databinding.DialogSelectPayTypeBinding
import com.nnbc123.app.ui.pay.ChargeActivity
import com.nnbc123.app.utils.SpannableBuilder
import com.nnbc123.library.annatation.ActLayoutRes
import com.nnbc123.library.utils.FormatUtils
@@ -29,7 +26,6 @@ import com.netease.nim.uikit.common.util.sys.ScreenUtil
@ActLayoutRes(R.layout.dialog_select_pay_type)
class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
private val chargeProdId by lazy { requireArguments().getString("chargeProdId", "") }
private val descText by lazy { requireArguments().getString("descText", "") }
private val money by lazy { requireArguments().getInt("money", 0) }
private val showDiamondCharge by lazy {
@@ -38,22 +34,21 @@ class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
false
)
}
private var removeView: View? = null
private var onDiamondChargeClick: (() -> Unit)? = null
private var onGoogleChargeClick: (() -> Unit)? = null
companion object {
@JvmStatic
fun newInstance(
chargeProdId: String,
descText: String,
showDiamondCharge: Boolean = false,
money: Int = 0
): SelectPayTypeDialog {
return SelectPayTypeDialog().apply {
arguments = Bundle().apply {
putString("chargeProdId", chargeProdId)
putString("descText", descText)
putBoolean("showDiamondCharge", showDiamondCharge)
putInt("money", money)
@@ -62,12 +57,14 @@ class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
}
}
private var payChannel = ""
fun setOnDiamondChargeClick(onDiamondChargeClick: (() -> Unit)) {
this.onDiamondChargeClick = onDiamondChargeClick
}
fun setOnGoogleChargeClick(onGoogleChargeClick: (() -> Unit)) {
this.onGoogleChargeClick = onGoogleChargeClick
}
override fun onStart() {
width = WindowManager.LayoutParams.MATCH_PARENT
gravity = Gravity.BOTTOM
@@ -85,24 +82,12 @@ class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
it.printStackTrace()
})
binding.tvConfirm.setOnClickListener {
if (payChannel.isEmpty()) {
SingleToastUtil.showToast("数据初始化中,请稍后~")
return@setOnClickListener
}
if (binding.rbAlipay.isChecked) {
PaymentActivity.start(requireActivity(), Constants.CHARGE_ALIPAY, chargeProdId)
} else if (binding.rbDiamond.isChecked) {
if (binding.rbDiamond.isChecked) {
onDiamondChargeClick?.invoke()
} else {
PaymentActivity.start(requireActivity(), Constants.CHARGE_WX, chargeProdId)
}
dismissAllowingStateLoss()
}
binding.tvMore.setOnClickListener {
removeView?.let {
binding.rg.addView(it)
binding.tvMore.visibility = View.GONE
dismissAllowingStateLoss()
} else if (binding.rbGoogle.isChecked) {
onGoogleChargeClick?.invoke()
dismissAllowingStateLoss()
}
}
@@ -113,7 +98,7 @@ class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
if (showDiamondCharge) {
binding.rg.setOnCheckedChangeListener { _, _ ->
if (binding.rbDiamond.isChecked) {
binding.tvDesc.text = "${money * 10}钻石"
binding.tvDesc.text = "${money * 1000}钻石"
} else {
binding.tvDesc.text = descText
}
@@ -123,9 +108,6 @@ class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
}
}
/**
* defaultPay 1默认支付宝2默认微信
*/
private fun setWalletData(walletInfo: WalletInfo) {
binding.rg.visibility = View.VISIBLE
var defaultDiamond = false
@@ -146,36 +128,11 @@ class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
)
)
.build()
defaultDiamond = money != 0 && money * 10 <= walletInfo.diamondNum
defaultDiamond = money != 0 && money * 1000 <= walletInfo.diamondNum
binding.rbDiamond.isChecked = defaultDiamond
} else {
binding.rbDiamond.isVisible = false
}
when (walletInfo.defaultPay) {
ChargeActivity.ALI_PAY_CLOSE -> {
payChannel = Constants.CHARGE_ALIPAY
removeView = binding.rbAlipay
binding.rg.removeView(binding.rbAlipay)
binding.rbWechat.isChecked = !defaultDiamond
binding.tvMore.visibility = View.VISIBLE
}
ChargeActivity.WX_PAY_CLOSE -> {
payChannel = Constants.CHARGE_WX
removeView = binding.rbWechat
binding.rg.removeView(binding.rbWechat)
binding.rbAlipay.isChecked = !defaultDiamond
binding.tvMore.visibility = View.VISIBLE
}
ChargeActivity.WX_PAY_OPEN -> {
payChannel = Constants.CHARGE_WX
binding.rbWechat.isChecked = !defaultDiamond
binding.rg.removeView(binding.rbAlipay)
binding.rg.addView(binding.rbAlipay)
}
else -> {
payChannel = Constants.CHARGE_ALIPAY
binding.rbAlipay.isChecked = !defaultDiamond
}
}
binding.rbGoogle.isChecked = !defaultDiamond
}
}

View File

@@ -3,13 +3,16 @@ package com.nnbc123.app.avroom.fragment
import android.Manifest
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
import android.content.DialogInterface
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Color
import android.graphics.drawable.Drawable
import android.graphics.drawable.GradientDrawable
import android.net.Uri
import android.os.Bundle
import android.provider.Settings
import android.text.TextUtils
import android.text.style.ForegroundColorSpan
import android.view.*
@@ -24,7 +27,7 @@ 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.nnbc123.core.Constants
import com.nnbc123.core.CoreConstants
import com.nnbc123.core.DemoCache
import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.bean.RoomMicInfo
@@ -89,7 +92,6 @@ import com.nnbc123.app.music.widget.MusicPlayerView
import com.nnbc123.app.room_chat.activity.RoomMsgActivity
import com.nnbc123.app.treasure_box.widget.GoldBoxHelper
import com.nnbc123.app.ui.utils.load
import com.nnbc123.app.ui.utils.loadAvatar
import com.nnbc123.app.ui.webview.DialogWebViewActivity
import com.nnbc123.app.ui.widget.ButtonItem
import com.nnbc123.app.ui.widget.GiftDialog
@@ -104,7 +106,7 @@ import com.nnbc123.app.ui.widget.rollviewpager.adapter.StaticPagerAdapter
import com.nnbc123.app.ui.widget.rollviewpager.hintview.ColorPointHintView
import com.nnbc123.app.utils.KeyBoardUtils
import com.nnbc123.app.utils.SpannableBuilder
import com.nnbc123.xchat_android_constants.XChatConstants
import com.nnbc123.core.XChatConstants
import com.nnbc123.library.net.rxnet.utils.RxNetWorkUtils
import com.nnbc123.library.rxbus.RxBus
import com.nnbc123.library.utils.*
@@ -115,6 +117,7 @@ import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder
import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
import com.nnbc123.app.avroom.hour_rank.RoomHourRankWidget
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog
import com.orhanobut.logger.Logger
import com.tbruyelle.rxpermissions2.RxPermissions
import com.trello.rxlifecycle3.android.FragmentEvent
@@ -451,7 +454,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
// 释放公屏和麦上的所有信息信息和动画
val roomUid = intent.getLongExtra(Constants.ROOM_UID, 0)
val roomUid = intent.getLongExtra(CoreConstants.ROOM_UID, 0)
if (roomUid != 0L && roomUid != AvRoomDataManager.get().mCurrentRoomInfo?.uid) {
releaseView()
}
@@ -1073,7 +1076,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
showToast(getString(R.string.tips_close_leave_mode_first))
return
}
val micPosition = data.extras?.getInt(Constants.KEY_POSITION, Int.MIN_VALUE)
val micPosition = data.extras?.getInt(CoreConstants.KEY_POSITION, Int.MIN_VALUE)
if (micPosition == Int.MIN_VALUE) return
//抱人上麦
@@ -1146,11 +1149,37 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
if (result) {
mvpPresenter?.upMicroPhone(micPosition, currentUid, b)
} else {
toast("请给予麦克风权限后再试!")
showDeniedTips(
requireContext(),
ResUtil.getString(R.string.permission_denied_tips_mic)
)
}
}, { throwable: Throwable? -> toast("发生一些异常,请稍后重试!") })
}
private fun showDeniedTips(context: Context, message: String) {
CommonTipDialog(context).apply {
setTipMsg(message)
setOkText("去设置")
setOnActionListener(
object : CommonTipDialog.OnActionListener {
override fun onOk() {
//同意跳到应用详情页面
val packageUri =
Uri.parse("package:${context.packageName}")
val intent = Intent(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
packageUri
)
(context as? Activity)?.startActivityForResult(
intent, 0
)
}
}
)
}.show()
}
/**
* 是否有麦克风权限
*
@@ -1355,7 +1384,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
.subscribe { aBoolean: Boolean ->
if (aBoolean) {
AudioEngineManager.get().isMute = !AudioEngineManager.get().isMute
AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER)
AudioEngineManager.get().setRole(CoreConstants.CLIENT_ROLE_BROADCASTER)
updateMicBtn()
} else {
toast("开启权限后才能开麦")
@@ -1371,7 +1400,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
"关闭麦克风"
)
} else if (AvRoomDataManager.get().isOnMic(myUid)) {
AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER)
AudioEngineManager.get().setRole(CoreConstants.CLIENT_ROLE_BROADCASTER)
}
}
}

View File

@@ -8,7 +8,7 @@ import com.nnbc123.core.room.bean.RoomInfo
import com.nnbc123.core.room.event.SwitchRoomEvent
import com.nnbc123.core.room.model.AvRoomModel
import com.nnbc123.core.utils.CurrentTimeUtils
import com.nnbc123.core.utils.StringUtils
import com.nnbc123.core.utils.CStringUtils
import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
@@ -64,7 +64,7 @@ class FakeSingleRoomBackFragment : BaseViewBindingFragment<FragmentFakeSingleRoo
jumpRoom(it)
} else {
preRoomInfo = it
if (!StringUtils.isBlank(it.backPic)) {
if (!CStringUtils.isBlank(it.backPic)) {
AVRoomActivity.setBackBg(mContext, it, binding.svgaImageViewBg, bgPicture)
}
}

View File

@@ -9,7 +9,7 @@ import com.nnbc123.core.room.bean.RoomInfo
import com.nnbc123.core.room.event.SwitchRoomEvent
import com.nnbc123.core.room.model.AvRoomModel
import com.nnbc123.core.utils.CurrentTimeUtils
import com.nnbc123.core.utils.StringUtils
import com.nnbc123.core.utils.CStringUtils
import com.opensource.svgaplayer.SVGADrawable
import com.opensource.svgaplayer.SVGAImageView
import com.opensource.svgaplayer.SVGAParser
@@ -55,7 +55,7 @@ class FakeSingleRoomFragment : BaseViewBindingFragment<FragmentFakeSingleRoomBin
jumpRoom(it)
} else {
preRoomInfo = it
if (!StringUtils.isBlank(it.backPic)) {
if (!CStringUtils.isBlank(it.backPic)) {
AVRoomActivity.setBackBg(mContext, it, binding.svgaImageViewBg, bgPicture)
}
}

View File

@@ -6,6 +6,7 @@ import android.view.View
import androidx.core.view.isInvisible
import androidx.core.view.isVisible
import androidx.databinding.DataBindingUtil
import com.gyf.immersionbar.ImmersionBar
import com.nnbc123.app.R
import com.nnbc123.app.avroom.adapter.GameMicroViewAdapter
import com.nnbc123.app.avroom.adapter.GameMiniMicroViewAdapter
@@ -58,6 +59,7 @@ class GameRoomFragment : BaseRoomFragment<IGameRoomView?, GameRoomPresenter?>(),
override fun onFindViews() {
super.onFindViews()
gameBinding = DataBindingUtil.bind(mView)!!
ImmersionBar.with(this).titleBarMarginTop(gameBinding.spaceTitleBar).init()
gameBinding.lifecycleOwner = this
gameBinding.click = this
gameBinding.ktvModel = false
@@ -169,22 +171,13 @@ class GameRoomFragment : BaseRoomFragment<IGameRoomView?, GameRoomPresenter?>(),
override fun onStart() {
super.onStart()
gameDelegate.onStart()
}
override fun onResume() {
super.onResume()
gameDelegate.onResume()
}
override fun onPause() {
super.onPause()
gameDelegate.onPause()
gameDelegate.onStart()
}
override fun onStop() {
super.onStop()
gameDelegate.onPause()
gameDelegate.onStop()
}

View File

@@ -6,14 +6,15 @@ import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.view.ViewConfiguration
import android.widget.ImageView
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import cn.sharesdk.framework.Platform
import com.chad.library.adapter.base.BaseQuickAdapter
import com.netease.nim.uikit.common.util.string.StringUtil
import com.gyf.immersionbar.ImmersionBar
import com.netease.nim.uikit.common.util.string.NimStringUtil
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
import com.netease.nimlib.sdk.msg.attachment.MsgAttachment
@@ -53,6 +54,9 @@ import com.nnbc123.core.room.anotherroompk.ShowUserInfoDialogEvent
import com.nnbc123.core.room.bean.RoomContributeDataInfo
import com.nnbc123.core.room.bean.RoomContributeUserInfo
import com.nnbc123.core.room.bean.RoomInfo
import com.nnbc123.core.room.bean.RoomModeType
import com.nnbc123.core.room.game.GameInfo
import com.nnbc123.core.room.game.GameModel
import com.nnbc123.core.room.model.RoomContributeListModel
import com.nnbc123.core.room.queuing_mic.event.HasAnimationEffect
import com.nnbc123.core.share.ShareModel
@@ -119,6 +123,7 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
override fun onFindViews() {
_binding = DataBindingUtil.bind(mView)
ImmersionBar.with(this).titleBarMarginTop(binding.layoutTitleBar).init()
setupRoomTitleMarquee()
}
@@ -128,7 +133,7 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
*/
private fun setupRoomTitleMarquee() {
try {
val configuration = ViewConfiguration.get(context)
val configuration = ViewConfiguration.get(requireContext())
val claz: Class<*> = configuration.javaClass
val field = claz.getDeclaredField("mFadingMarqueeEnabled")
field.isAccessible = true
@@ -240,16 +245,16 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
}
//这里的2和4是服务端定义的错误状态 关闭排麦模式和关闭PK模式!
private val isShowChangeGame: Boolean
get() = false
/* RoomInfo currentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
private val isShowChangeGame: Boolean get() {
val currentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
return currentRoomInfo != null &&
AvRoomDataManager.get().isRoomOwner() &&
currentRoomInfo.getIsPermitRoom() != 1 &&
currentRoomInfo.getType() != RoomInfo.ROOM_TYPE_SINGLE &&
(currentRoomInfo.getRoomModeType() == RoomModeType.NORMAL_MODE ||
currentRoomInfo.getRoomModeType() == 2 ||
currentRoomInfo.getRoomModeType() == 4);*/
currentRoomInfo.getRoomModeType() == 4)
}
fun setRoomBg(roomInfo: RoomInfo?) {
if (_binding == null) return
@@ -355,7 +360,7 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
binding.roomInfo = it
updateHasAnimationEffect()
binding.roomTitle.text = RegexUtil.getPrintableString(it.getTitle())
if (!StringUtil.isEmpty(it.getRoomPwd())) {
if (!NimStringUtil.isEmpty(it.getRoomPwd())) {
binding.roomTitle.setCompoundDrawablesWithIntrinsicBounds(
0, 0, R.drawable.icon_room_lock, 0
)
@@ -404,7 +409,7 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
binding.roomTitle.text = RegexUtil.getPrintableString(currentRoomInfo.getTitle())
}
if (currentRoomInfo != null) {
if (!StringUtil.isEmpty(currentRoomInfo.getRoomPwd())) {
if (!NimStringUtil.isEmpty(currentRoomInfo.getRoomPwd())) {
binding.roomTitle.setCompoundDrawablesWithIntrinsicBounds(
null, null,
resources.getDrawable(R.drawable.icon_room_lock), null
@@ -421,6 +426,38 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
setupFollowRoom()
FOLLOW_ROOM_TYPE = if (AvRoomDataManager.get().isRoomFans) "2" else "1"
setIdOnlineData()
if (isShowChangeGame) {
initRvGame()
binding.layoutRankTop1.isVisible = false
binding.layoutRankTop2.isVisible = false
binding.llChangeGame.visibility = View.VISIBLE
if (AvRoomDataManager.get().isOpenGame) {
binding.tvCurrGame.text = it.mgName
} else {
binding.tvCurrGame.text = "扩列交友"
}
GameModel.getGameList()
.compose(bindToLifecycle())
.subscribe { gameInfos ->
if (AvRoomDataManager.get().isOpenGame) {
for (i in gameInfos.indices) {
val gameInfo: GameInfo = gameInfos[i]
if (gameInfo.mgId.toLongOrNull() == it.mgId) {
gameInfos.removeAt(i)
break
}
}
val gameInfo = GameInfo()
gameInfo.name = "扩列交友"
gameInfos.add(gameInfo)
}
gameAdapter?.setNewData(gameInfos)
}
} else {
binding.llChangeGame.setVisibility(View.GONE)
binding.layoutRankTop1.isVisible = true
binding.layoutRankTop2.isVisible = true
}
}
}
@@ -515,23 +552,7 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
.compose(bindToLifecycle())
.compose(RxHelper.handleBeanData())
.subscribe { roomContributeDataInfo: RoomContributeDataInfo ->
val rankings = roomContributeDataInfo.rankings
updateRoomRanks(roomContributeDataInfo.rankings)
var imageView: ImageView
val avatarList = listOf(
binding.ivRank0,
binding.ivRank1,
binding.ivRank2
)
for (i in avatarList.indices) {
imageView = avatarList[i]
if (rankings.size > i) {
val info = rankings[i]
imageView.loadAvatar(info.avatar)
} else {
imageView.setImageResource(R.drawable.default_avatar)
}
}
}
}

View File

@@ -8,6 +8,7 @@ import android.widget.ImageView;
import androidx.databinding.DataBindingUtil;
import com.gyf.immersionbar.ImmersionBar;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.nnbc123.app.R;
import com.nnbc123.app.avroom.activity.AVRoomActivity;
@@ -33,9 +34,8 @@ import com.nnbc123.app.common.widget.dialog.DialogManager;
import com.nnbc123.app.databinding.FragmentAvRoomGameBinding;
import com.nnbc123.app.ui.utils.ImageLoadKt;
import com.nnbc123.app.ui.webview.DatingRuleWebViewActivity;
import com.nnbc123.app.ui.webview.DialogWebViewActivity;
import com.nnbc123.app.utils.UserUtils;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.UriProvider;
import com.nnbc123.core.auth.AuthModel;
import com.nnbc123.core.gift.GiftModel;
@@ -133,6 +133,7 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
public void onFindViews() {
super.onFindViews();
gameBinding = DataBindingUtil.bind(mView);
ImmersionBar.with(this).titleBarMarginTop(gameBinding.layoutRoot).init();
gameBinding.setLifecycleOwner(this);
gameBinding.setClick(this);
gameBinding.setKtvModel(false);
@@ -672,7 +673,7 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
}
FaceInfo info = null;
for (FaceInfo faceInfo : faceInfos) {
if (faceInfo.getId() == Constants.DRAGON_BAR_ID) {
if (faceInfo.getId() == CoreConstants.DRAGON_BAR_ID) {
info = faceInfo;
}
}

View File

@@ -18,7 +18,7 @@ import com.nnbc123.app.avroom.presenter.HomePartyUserListPresenter;
import com.nnbc123.app.avroom.view.IHomePartyUserListView;
import com.nnbc123.app.base.BaseMvpFragment;
import com.nnbc123.app.ui.widget.UserInfoDialog;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.manager.AvRoomDataManager;
import com.nnbc123.core.room.bean.OnlineChatMember;
import com.nnbc123.core.room.bean.RoomInfo;
@@ -43,7 +43,7 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
private SmartRefreshLayout mRefreshLayout;
private OnlineUserAdapter mOnlineUserAdapter;
private int mPage = Constants.PAGE_START;
private int mPage = CoreConstants.PAGE_START;
private boolean isShowToUser = false;
@Override
@@ -105,7 +105,7 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
public void firstLoad() {
mPage = Constants.PAGE_START;
mPage = CoreConstants.PAGE_START;
loadData(0);
}
@@ -128,14 +128,14 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
}
}
mOnlineUserAdapter.setNewData(chatRoomMemberList);
if (mPage == Constants.PAGE_START) {
if (mPage == CoreConstants.PAGE_START) {
mRefreshLayout.finishRefresh();
} else {
mRefreshLayout.finishLoadmore(0);
}
mPage++;
} else {
if (mPage == Constants.PAGE_START) {
if (mPage == CoreConstants.PAGE_START) {
mRefreshLayout.finishRefresh();
} else {
mRefreshLayout.finishLoadmore(0);
@@ -147,7 +147,7 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
public void onRequestChatMemberByPageFail(String errorStr, int page) {
Logger.i("获取到数据失败,page=" + page);
mPage = page;
if (mPage == Constants.PAGE_START) {
if (mPage == CoreConstants.PAGE_START) {
mRefreshLayout.finishRefresh();
} else {
mRefreshLayout.finishLoadmore(0);

View File

@@ -21,7 +21,7 @@ import com.nnbc123.app.databinding.FragmentPrivilegeCardBinding
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog
import com.nnbc123.core.privilege.bean.PrivilegeCardInfo
import com.nnbc123.core.utils.TextUtils
import com.nnbc123.core.utils.CTextUtils
import com.zhihu.matisse.internal.entity.CustomItem
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
@@ -173,7 +173,7 @@ class PrivilegeCardFragment : BaseViewBindingFragment<FragmentPrivilegeCardBindi
override fun onResume() {
super.onResume()
if (isNeedLoad && (TextUtils.isEmptyText(type) || type == "0")) {
if (isNeedLoad && (CTextUtils.isEmptyText(type) || type == "0")) {
loadData(true)
isNeedLoad = false
}
@@ -182,7 +182,7 @@ class PrivilegeCardFragment : BaseViewBindingFragment<FragmentPrivilegeCardBindi
@Subscribe(threadMode = ThreadMode.MAIN)
fun privilegeCardEvent(event: PrivilegeCardEvent?) {
isNeedLoad = true
if (isResumed && isNeedLoad && (TextUtils.isEmptyText(type) || type == "0")) {
if (isResumed && isNeedLoad && (CTextUtils.isEmptyText(type) || type == "0")) {
loadData(true)
isNeedLoad = false
}

View File

@@ -20,7 +20,7 @@ import com.nnbc123.app.avroom.view.IRoomCharmRankingListView;
import com.nnbc123.app.base.BaseMvpFragment;
import com.nnbc123.app.ui.widget.GiftDialog;
import com.nnbc123.app.ui.widget.UserInfoDialog;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.manager.AvRoomDataManager;
import com.nnbc123.core.room.bean.RoomContributeUserInfo;
import com.nnbc123.core.room.bean.RoomInfo;
@@ -91,7 +91,7 @@ public class RoomCharmRankingListFragment extends BaseMvpFragment<IRoomCharmRank
public void firstLoad() {
isLoadMore = false;
page = Constants.PAGE_START;
page = CoreConstants.PAGE_START;
loadData();
}

View File

@@ -20,7 +20,7 @@ import com.nnbc123.core.room.bean.RoomRankMultiItem;
import com.nnbc123.library.base.factory.CreatePresenter;
import com.nnbc123.library.utils.ListUtils;
import com.nnbc123.app.ui.widget.UserInfoDialog;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.room.bean.RoomContributeDataInfo;
import com.nnbc123.core.room.bean.RoomContributeUserInfo;
@@ -113,7 +113,7 @@ public class RoomContributeFragment extends BaseMvpFragment<IRoomContributeListV
}
public void firstLoad() {
page = Constants.PAGE_START;
page = CoreConstants.PAGE_START;
loadData();
}
@@ -145,7 +145,7 @@ public class RoomContributeFragment extends BaseMvpFragment<IRoomContributeListV
public void getSingleRankingSuccess(RoomContributeDataInfo roomContributeDataInfo) {
List<RoomContributeUserInfo> list = roomContributeDataInfo.getRankings();
if (!ListUtils.isListEmpty(list)) {
if (page == Constants.PAGE_START) {
if (page == CoreConstants.PAGE_START) {
dataInfoList = roomContributeDataInfo.getRankings();
setContributeDataView(roomContributeDataInfo);
mRefreshLayout.finishRefresh();
@@ -156,7 +156,7 @@ public class RoomContributeFragment extends BaseMvpFragment<IRoomContributeListV
}
page++;
} else {
if (page == Constants.PAGE_START) {
if (page == CoreConstants.PAGE_START) {
dataInfoList = null;
mRefreshLayout.finishRefresh();
setContributeDataView(roomContributeDataInfo);
@@ -188,7 +188,7 @@ public class RoomContributeFragment extends BaseMvpFragment<IRoomContributeListV
@Override
public void getSingleRakingFail(int errorCode, String errorMsg) {
if (page == Constants.PAGE_START) {
if (page == CoreConstants.PAGE_START) {
mRefreshLayout.finishRefresh();
} else {
mRefreshLayout.finishLoadmore(0);

View File

@@ -9,6 +9,7 @@ import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.viewModels
import com.gyf.immersionbar.ImmersionBar
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.nnbc123.app.R
import com.nnbc123.app.avroom.adapter.OnMicroItemClickListener
@@ -42,7 +43,7 @@ import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.core.user.UserModel
import com.nnbc123.core.user.bean.UserInfo
import com.nnbc123.core.utils.CurrentTimeUtils
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.toast
import com.nnbc123.library.base.factory.CreatePresenter
import com.nnbc123.library.utils.TimeUtils
import com.trello.rxlifecycle3.android.FragmentEvent
@@ -86,6 +87,7 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
override fun onFindViews() {
super.onFindViews()
gameBinding = DataBindingUtil.bind(mView)!!
ImmersionBar.with(this).titleBarMarginTop(gameBinding.spaceTitleBar).init()
gameBinding.lifecycleOwner = this
gameBinding.click = this
}
@@ -265,13 +267,13 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
gameBinding.microView.bindAdapter(SingleRoomPKMicroViewAdapter(context))
gameBinding.viewPkBoard.isVisible = true
gameBinding.microView.updateLayoutParams<ConstraintLayout.LayoutParams> {
topMargin = ScreenUtil.dip2px(140f)
topMargin = ScreenUtil.dip2px(50f)
}
} else if (!AvRoomDataManager.get().isOpenAnotherPKMode && gameBinding.microView.adapter !is SingleAnchorMicroViewAdapter) {
gameBinding.microView.bindAdapter(SingleAnchorMicroViewAdapter(context))
gameBinding.viewPkBoard.isVisible = false
gameBinding.microView.updateLayoutParams<ConstraintLayout.LayoutParams> {
topMargin = ScreenUtil.dip2px(110f)
topMargin = ScreenUtil.dip2px(10f)
}
} else {
gameBinding.microView.adapter?.notifyDataSetChanged()

View File

@@ -8,8 +8,8 @@ import com.nnbc123.app.BuildConfig;
public class AppConfig {
protected static final String APP_ID = "1467745235064848385";
protected static final String APP_KEY = "BvjLDpWol7OihaYeFebuepx1bZu6cxU5";
protected static final String APP_ID = "1746741906623631362";
protected static final String APP_KEY = "L5WQjy0Xg2fcN0DhIig78qt0cPCMnS9W";
protected static boolean isTestEnv = BuildConfig.DEBUG;
}

View File

@@ -34,7 +34,7 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
private val TAG = "GameDelegate"
private var APP_CODE = ""
private val mRoomID = AvRoomDataManager.get().roomUid.toString()
private val mRoomID :String get() = AvRoomDataManager.get().roomUid.toString()
private val mLanguage = "zh-CN" //语言
//调用游戏SDK的接口,成功加载游戏后可用:
@@ -84,7 +84,10 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
}
fun updateGame(mgId: Long?) {
if (mgId == null || mgId == 0L || mgId == mMGID || iSudFSTAPP == null) return
if (mgId == null || mgId == 0L) return
if (mgId == mMGID && iSudFSTAPP != null) {
return
}
mMGID = mgId
updateMyMicQueue(GameStatus.STATUS_NOT_JOIN)
loadMG(activity, mUid, mRoomID, APP_CODE, mMGID, mLanguage)
@@ -164,8 +167,11 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
language: String
) {
iSudFSTAPP?.destroyMG()
SudMGP.getCfg().showLoadingGameBg = !isHideLoadingBg()
iSudFSTAPP = SudMGP.loadMG(activity, userID, roomID, code, mgID, language, mISudFSMMG)
addGameView(iSudFSTAPP!!.gameView)
iSudFSTAPP?.apply {
addGameView(gameView)
}
}
/**
@@ -226,6 +232,9 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
LogUtils.d(p0)
}
override fun onGameLoadingProgress(p0: Int, p1: Int, p2: Int) {
}
override fun onGameStarted() {
}
@@ -285,7 +294,11 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
}
override fun onGetGameCfg(handle: ISudFSMStateHandle?, p1: String?) {
handle?.success(gson.toJson(GameCfg()))
val config = GameCfg()
if (isHideGameBg()) {
config.ui.game_bg.hide = true
}
handle?.success(gson.toJson(config))
}
/**
@@ -313,9 +326,9 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
//游戏安全操作区域
val viewGameRect = JSONObject()
viewGameRect.put("left", 0)
viewGameRect.put("top", ScreenUtil.dip2px(200f))
viewGameRect.put("top", ScreenUtil.dip2px(180f))
viewGameRect.put("right", 0)
viewGameRect.put("bottom", ScreenUtil.dip2px(200f))
viewGameRect.put("bottom", ScreenUtil.dip2px(150f))
jsonObject.put("view_game_rect", viewGameRect)
//通知游戏
@@ -655,6 +668,12 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
iSudFSTAPP?.destroyMG()
}
private fun isHideLoadingBg(): Boolean {
return mMGID == 1704460412809043970
}
private fun isHideGameBg(): Boolean {
return mMGID == 1704460412809043970
}
}
internal interface AppLoginListener {

View File

@@ -28,7 +28,7 @@ import com.opensource.svgaplayer.SVGADynamicEntity;
import com.nnbc123.app.R;
import com.nnbc123.app.application.XChatApplication;
import static com.nnbc123.xchat_android_constants.XChatConstants.SELECT_ANIM_DURATION;
import static com.nnbc123.core.XChatConstants.SELECT_ANIM_DURATION;
public class AnimHelper {

View File

@@ -6,10 +6,10 @@ import android.view.LayoutInflater
import android.view.animation.Animation
import android.widget.FrameLayout
import androidx.databinding.DataBindingUtil
import com.chuhai.utils.ktx.getColorById
import com.chuhai.utils.ktx.singleClick
import com.chuhai.utils.log.ILog
import com.chuhai.utils.spannable.SpannableTextBuilder
import com.chu.utils.ktx.getColorById
import com.chu.utils.ktx.singleClick
import com.chu.utils.log.ILog
import com.chu.utils.spannable.SpannableTextBuilder
import com.nnbc123.app.R
import com.nnbc123.app.databinding.RoomHourRankingWidgetBinding
import com.nnbc123.app.ui.webview.DialogWebViewActivity

View File

@@ -3,40 +3,40 @@ package com.nnbc123.app.avroom.newuserchargegift
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.util.Log
import android.view.Gravity
import android.view.View
import android.view.WindowManager
import androidx.core.view.isVisible
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.android.billingclient.api.BillingClient
import com.android.billingclient.api.BillingResult
import com.android.billingclient.api.ProductDetails
import com.android.billingclient.api.Purchase
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.netease.nim.uikit.common.util.sys.TimeUtil
import com.trello.rxlifecycle3.android.ActivityEvent
import com.nnbc123.app.R
import com.nnbc123.app.avroom.firstcharge.SelectPayTypeDialog
import com.nnbc123.app.bank_card.activity.AddBankCardAgreementActivity
import com.nnbc123.app.base.BaseViewBindingActivity
import com.nnbc123.app.common.widget.dialog.DialogManager.AbsOkDialogListener
import com.nnbc123.app.databinding.DialogNewUserChargeGiftBinding
import com.nnbc123.app.ui.pay.BillingManager
import com.nnbc123.app.ui.setting.ModifyPwdActivity
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.app.ui.webview.CommonWebViewActivity
import com.nnbc123.core.UriProvider
import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.pay.PayModel
import com.nnbc123.core.pay.PaymentActivity
import com.nnbc123.core.pay.bean.FirstChargeGoods
import com.nnbc123.core.pay.bean.FirstChargeReward
import com.nnbc123.core.pay.bean.PaymentResult
import com.nnbc123.core.pay.bean.PayRecordId
import com.nnbc123.core.pay.event.NewUserChargeEvent
import com.nnbc123.core.pay.model.unionpay.UnionPayModel
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.core.user.UserModel
import com.nnbc123.core.utils.CurrentTimeUtils
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.net.IgnoreException
import com.nnbc123.core.utils.ktx.toast
import com.nnbc123.library.annatation.ActLayoutRes
import com.nnbc123.library.utils.JavaUtil
import com.nnbc123.library.common.Constants
import com.nnbc123.library.utils.AppMetaDataUtil
import com.nnbc123.library.utils.SingleToastUtil
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
@@ -46,13 +46,15 @@ import org.greenrobot.eventbus.ThreadMode
import java.util.concurrent.TimeUnit
@ActLayoutRes(R.layout.dialog_new_user_charge_gift)
class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftBinding>() {
class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftBinding>(),
BillingManager.BillingUpdatesListener {
private var goodsList: List<FirstChargeGoods>? = null
private var currGoods: FirstChargeGoods? = null
private lateinit var rewardAdapter: RewardAdapter
private lateinit var rvDelegate: RVDelegate<FirstChargeReward>
private val TAG = "NewUserChargeGiftDialog"
private var billingManager: BillingManager? = null
companion object {
@JvmStatic
fun start(context: Context) {
@@ -76,8 +78,7 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
binding.tvCharge.setOnClickListener {
currGoods?.let {
SelectPayTypeDialog.newInstance(it.chargeProdId, "¥${it.chargeMoney}")
.show(this)
buyProduct(it.productDetails)
StatisticManager.Instance()
.onEvent(
StatisticsProtocol.EVENT_NUGIFT_POP_CLICK,
@@ -139,11 +140,14 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
button.isChecked = true
}
button.isVisible = true
button.text = "${it.chargeMoney}"
button.text = "$${it.chargeMoney}"
} ?: run {
button.isVisible = false
}
}
if (AppMetaDataUtil.getChannelID().equals(Constants.CHANNEL_GOOGLE)) {
initBilling()
}
}
@SuppressLint("CheckResult", "SetTextI18n")
@@ -186,43 +190,6 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
if (resultCode != RESULT_OK) {
return
}
//支付页面返回处理
if (requestCode == PaymentActivity.REQUEST_CODE_PAY) {
if (data != null && data.extras != null) {
val paymentResult: PaymentResult? =
data.getParcelableExtra(PaymentActivity.KEY_PAY_RESULT)
if (paymentResult != null) {
// 充值金额超过限定时,就必须先实名认证
when (JavaUtil.str2int(paymentResult.code)) {
PayModel.NOT_REAL_NAME_BEFORE_CHARGING -> dialogManager.showTipsDialog(
getString(R.string.tips_need_to_certification),
getString(R.string.go_to_certification),
object : AbsOkDialogListener() {
override fun onOk() {
// 跳去实名认证页面
CommonWebViewActivity.start(
this@NewUserChargeGiftDialog,
UriProvider.getTutuRealNamePage()
)
}
})
UnionPayModel.CODE_NEED_BIND_BANK_CARD_FIRST -> dialogManager.showTipsDialog(
getString(R.string.tips_need_bind_bank_card_first),
object : AbsOkDialogListener() {
override fun onOk() {
// 跳去添加银行卡页面
AddBankCardAgreementActivity.start(this@NewUserChargeGiftDialog)
}
})
else -> {
toast(paymentResult.msg)
//重新获取钱包信息
PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe()
}
}
}
}
}
if (requestCode == BIND_CODE_GOLD) {
ModifyPwdActivity.start(this, ModifyPwdActivity.FOGERT_PAY_PWD)
}
@@ -233,9 +200,113 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
finish()
}
override fun onResume() {
super.onResume()
if (billingManager?.isServiceConnected == true) {
billingManager?.onQueryPurchases()
}
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
billingManager?.destroy()
}
private fun initBilling() {
billingManager = BillingManager(this, this)
}
@SuppressLint("CheckResult")
override fun onBillingClientSetupFinished() {
Log.i(TAG, "onBillingClientSetupFinished")
goodsList?.let { initProduceList(it) }
}
private fun initProduceList(goodsList: List<FirstChargeGoods>) {
val productKeys: MutableList<String> = ArrayList()
for (bean in goodsList) {
productKeys.add(bean.chargeProdId)
}
billingManager?.querySkuDetailsAsync(productKeys) { billingResult: BillingResult, productDetails: MutableList<ProductDetails> ->
if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) {
Log.w(
TAG,
"Unsuccessful query for type: " + BillingClient.ProductType.INAPP + ". Error code: " + billingResult.responseCode
)
return@querySkuDetailsAsync
}
if (productDetails.isNotEmpty()) {
for (chargeBean in goodsList) {
for (skuDetails in productDetails) {
if (skuDetails.productId == chargeBean.chargeProdId) {
chargeBean.productDetails = skuDetails
break
}
}
}
}
}
}
/*商品更新回调*/
@SuppressLint("CheckResult")
override fun onPurchasesUpdated(purchases: List<Purchase>) {
for (purchase in purchases) {
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED &&
purchase.accountIdentifiers != null
) {
PayModel.get().verifyOrder(
purchase.accountIdentifiers!!.obfuscatedAccountId,
purchase.products[0],
purchase.packageName,
purchase.purchaseToken
)
.compose(bindToLifecycle())
.subscribe(
{ token: String? ->
//L.i("token=" + token);
billingManager?.consumeAsync(token)
}
) { throwable: Throwable ->
if (throwable !is IgnoreException) {
SingleToastUtil.showToast(throwable.message)
}
}
}
}
Log.i(TAG, "onPurchasesUpdated")
}
override fun onConsumeFinished(token: String?, result: Int) {
}
override fun onFailedHandle(result: Int) {
}
/*购买商品*/
@SuppressLint("CheckResult")
fun buyProduct(skuDetails: ProductDetails?) {
if (skuDetails != null) {
Log.d(TAG, "BuyProduct:" + skuDetails.productId)
PayModel.get().placeOrder(skuDetails.productId)
.compose(bindToLifecycle())
.subscribe(
{ recordId: PayRecordId ->
billingManager?.initiatePurchaseFlow(
skuDetails,
recordId.recordId
)
}
) { throwable: Throwable ->
SingleToastUtil.showToast(
throwable.message
)
}
} else {
Log.w(TAG, "skuDetails ==null")
}
}
}

View File

@@ -6,7 +6,7 @@ import com.chad.library.adapter.base.BaseViewHolder
import com.nnbc123.app.R
import com.nnbc123.app.ui.utils.load
import com.nnbc123.core.pay.bean.FirstChargeReward
import com.nnbc123.core.utils.TextUtils
import com.nnbc123.core.utils.CTextUtils
class RewardAdapter :
BaseQuickAdapter<FirstChargeReward, BaseViewHolder>(R.layout.item_new_user_charge_reward) {
@@ -16,6 +16,6 @@ class RewardAdapter :
helper.setText(R.id.tv_name, item.showText)
.setText(R.id.tv_time, "(${item.showTime})")
.setGone(R.id.tv_time, !TextUtils.isEmptyText(item.showTime))
.setGone(R.id.tv_time, !CTextUtils.isEmptyText(item.showTime))
}
}

View File

@@ -21,7 +21,7 @@ import com.netease.nimlib.sdk.util.Entry;
import com.nnbc123.app.avroom.activity.AVRoomActivity;
import com.nnbc123.app.avroom.view.IAvRoomView;
import com.nnbc123.app.base.BaseMvpPresenter;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.DemoCache;
import com.nnbc123.core.auth.AuthModel;
import com.nnbc123.core.bean.RoomMicInfo;
@@ -292,7 +292,7 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
AvRoomDataManager.get().mCurrentRoomInfo.onlineNum = roomInfo.getOnlineUserCount();
Map<String, Object> extension = roomInfo.getExtension();
if (extension != null) {
String roomInfoStr = (String) extension.get(Constants.KEY_CHAT_ROOM_INFO_ROOM);
String roomInfoStr = (String) extension.get(CoreConstants.KEY_CHAT_ROOM_INFO_ROOM);
if (!TextUtils.isEmpty(roomInfoStr)) {
RoomInfo extRoomInfo = mGson.fromJson(roomInfoStr, RoomInfo.class);
extRoomInfo.setRoomId(Long.parseLong(roomInfo.getRoomId()));
@@ -302,7 +302,7 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
AvRoomDataManager.get().mCurrentRoomInfo = extRoomInfo;
}
//获取云信麦序相关信息
String roomMicStr = (String) extension.get(Constants.KEY_CHAT_ROOM_INFO_MIC);
String roomMicStr = (String) extension.get(CoreConstants.KEY_CHAT_ROOM_INFO_MIC);
LogUtils.d(roomMicStr);
if (!TextUtils.isEmpty(roomMicStr)) {
//清除魅力值(重新进房会触发退房,已经清除过了)
@@ -368,7 +368,7 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
if (AvRoomDataManager.get().isRoomInQueuingMicMode(data)) {
//noinspection ResultOfMethodCallIgnored
MicQueueModel.get()
.loadMicQueueList(data.getUid(), 1, Constants.PAGE_SIZE)
.loadMicQueueList(data.getUid(), 1, CoreConstants.PAGE_SIZE)
.subscribe((respQueuingMicListInfo, throwable) -> {
if (throwable == null) {
List<QueuingMicMemeberInfo> queue = respQueuingMicListInfo.getQueue();

View File

@@ -12,7 +12,7 @@ import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.nnbc123.app.avroom.view.IHomePartyView;
import com.nnbc123.app.utils.UserUtils;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.auth.AuthModel;
import com.nnbc123.core.bean.RoomQueueInfo;
import com.nnbc123.core.im.custom.bean.CustomAttachment;
@@ -143,7 +143,7 @@ public class HomePartyPresenter extends BaseRoomPresenter<IHomePartyView> {
List<FaceReceiveInfo> faceReceiveInfos = new ArrayList<>();
FaceReceiveInfo faceReceiveInfo = new FaceReceiveInfo();
faceReceiveInfo.setNick(userInfo.getNick());
faceReceiveInfo.setFaceId(Constants.DRAGON_BAR_ID);
faceReceiveInfo.setFaceId(CoreConstants.DRAGON_BAR_ID);
faceReceiveInfo.setUid(userInfo.getUid());
faceReceiveInfo.setResultIndexes(integers);

View File

@@ -3,7 +3,7 @@ package com.nnbc123.app.avroom.presenter;
import com.nnbc123.app.avroom.view.IRecordForPKView;
import com.nnbc123.app.base.BaseMvpPresenter;
import com.nnbc123.app.home.helper.LoadPageDataHelper;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.manager.AvRoomDataManager;
import com.nnbc123.core.room.bean.RoomInfo;
import com.nnbc123.core.room.pk.bean.PKRecordInfo;
@@ -39,7 +39,7 @@ public class RecordForPKPresenter extends BaseMvpPresenter<IRecordForPKView>
return PkModel.get().loadPKRecordList(
currentRoomInfo.getUid(),
curPage,
Constants.PAGE_SIZE
CoreConstants.PAGE_SIZE
)
.flatMap(new Function<PKRecordListInfo, SingleSource<? extends List<PKRecordInfo>>>() {
@Override

View File

@@ -4,7 +4,7 @@ import com.nnbc123.core.bean.RoomNewbieInfo;
import com.nnbc123.app.base.BaseMvpPresenter;
import com.nnbc123.app.module.IRoomNewbieView;
import com.nnbc123.app.module.RoomNewbieModel;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import java.util.List;
@@ -22,7 +22,7 @@ public class RoomNewbiePresenter extends BaseMvpPresenter<IRoomNewbieView> {
page++;
}
RoomNewbieModel.get().getRoomNewbieList(page, Constants.PAGE_SIZE)
RoomNewbieModel.get().getRoomNewbieList(page, CoreConstants.PAGE_SIZE)
.compose(bindToLifecycle()).subscribe(new SingleObserver<List<RoomNewbieInfo>>() {
@Override
public void onSubscribe(Disposable d) {

View File

@@ -7,7 +7,7 @@ import android.view.View;
import com.coorchice.library.SuperTextView;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.nnbc123.app.R;
import com.nnbc123.app.UIHelper;
import com.nnbc123.app.utils.UIHelper;
import com.nnbc123.app.avroom.widget.MessageView;
import com.nnbc123.app.base.list.BaseViewHolder;
import com.nnbc123.app.base.list.CommonAdapter;

View File

@@ -11,7 +11,7 @@ import com.nnbc123.app.databinding.DialogRedPackageGoRoomBinding
import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.redpackage.RedPackageNotifyInfo
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.ktx.subAndReplaceDot
import org.greenrobot.eventbus.EventBus
class RedPackageGoRoomDialog : BaseDialog<DialogRedPackageGoRoomBinding>() {

View File

@@ -11,7 +11,7 @@ import com.nnbc123.core.redpackage.RedEnvelopeItemVO
import com.nnbc123.app.R
import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.app.utils.UserUtils
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.ktx.subAndReplaceDot
import java.text.SimpleDateFormat
import java.util.*

View File

@@ -100,11 +100,11 @@ class RedPackageOpenDialog : BaseDialog<DialogRedPackageOpenBinding>() {
it.addListener(object : AnimatorListenerAdapter() {
var isCanceled = false
override fun onAnimationCancel(animation: Animator?) {
override fun onAnimationCancel(animation: Animator) {
isCanceled = true
}
override fun onAnimationEnd(animation: Animator?) {
override fun onAnimationEnd(animation: Animator) {
if (!isCanceled) {
openRedPackage()
}

View File

@@ -29,7 +29,7 @@ import com.nnbc123.core.redpackage.*
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.core.user.UserModel
import com.nnbc123.core.utils.toIntOrDef
import com.nnbc123.core.utils.ktx.toIntOrDef
import com.nnbc123.library.annatation.ActLayoutRes
import com.nnbc123.library.utils.CommonUtils
import com.nnbc123.library.utils.SingleToastUtil

View File

@@ -19,8 +19,8 @@ import com.nnbc123.core.im.custom.bean.RoomPkBean
import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.room.anotherroompk.SingleRoomPKModel
import com.nnbc123.core.utils.CurrentTimeUtils
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.subAndReplaceDot
import com.nnbc123.core.utils.ktx.toast
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable

View File

@@ -15,10 +15,10 @@ import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.room.anotherroompk.SingleRoomPKModel
import com.nnbc123.core.room.anotherroompk.SimpleRoomInfo
import com.nnbc123.core.utils.ifNotNullOrEmpty
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.toIntOrDef
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.ifNotNullOrEmpty
import com.nnbc123.core.utils.ktx.subAndReplaceDot
import com.nnbc123.core.utils.ktx.toIntOrDef
import com.nnbc123.core.utils.ktx.toast
class SingleRoomPKCreateActivity : BaseViewBindingActivity<ActivitySingleRoomPkCreateBinding>() {

View File

@@ -8,7 +8,7 @@ import com.chad.library.adapter.base.BaseViewHolder
import com.nnbc123.app.R
import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.core.room.anotherroompk.SimpleRoomInfo
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.ktx.subAndReplaceDot
class SingleRoomPKSearchAdapter :
BaseQuickAdapter<SimpleRoomInfo, BaseViewHolder>(R.layout.item_single_room_pk_search) {

View File

@@ -9,7 +9,7 @@ import com.nnbc123.app.base.BaseDialog
import com.nnbc123.app.databinding.DialogSingleRoomPkFinishBinding
import com.nnbc123.app.ui.utils.load
import com.nnbc123.core.im.custom.bean.RoomPkBean
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.ktx.subAndReplaceDot
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import java.util.concurrent.TimeUnit

View File

@@ -8,7 +8,7 @@ import com.nnbc123.app.base.BaseDialog
import com.nnbc123.app.databinding.DialogSingleRoomPkForceFinishBinding
import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.core.im.custom.bean.RoomPkBean
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.ktx.subAndReplaceDot
class SingleRoomPkForceFinishDialog : BaseDialog<DialogSingleRoomPkForceFinishBinding>() {

View File

@@ -8,9 +8,9 @@ import com.nnbc123.app.databinding.DialogSingleRoomPkReceivedBinding
import com.nnbc123.core.im.custom.bean.RoomPkBean
import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.room.anotherroompk.SingleRoomPKModel
import com.nnbc123.core.utils.ifNotNullOrEmpty
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.ifNotNullOrEmpty
import com.nnbc123.core.utils.ktx.subAndReplaceDot
import com.nnbc123.core.utils.ktx.toast
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable

View File

@@ -1,7 +1,7 @@
package com.nnbc123.app.avroom.singleroompk
import com.nnbc123.core.room.anotherroompk.SingleRoomPKModel
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.toast
import com.nnbc123.app.base.BaseDialog
import com.nnbc123.app.databinding.DialogSingleRoomPkRuleBinding

View File

@@ -6,7 +6,7 @@ import android.view.WindowManager
import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.room.anotherroompk.ShowPkMatchEvent
import com.nnbc123.core.room.anotherroompk.SingleRoomPKModel
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.toast
import com.nnbc123.app.base.BaseDialog
import com.nnbc123.app.databinding.DialogSingleRoomSelectTypeBinding
import org.greenrobot.eventbus.EventBus

View File

@@ -33,7 +33,6 @@ import com.nnbc123.app.treasure_box.widget.GoldBoxHelper;
import com.nnbc123.app.ui.utils.ImageLoadUtils;
import com.nnbc123.app.vip.VipMainActivity;
import com.nnbc123.core.DemoCache;
import com.nnbc123.core.helper.ImHelperUtils;
import com.nnbc123.core.manager.AvRoomDataManager;
import com.nnbc123.core.manager.IMMessageManager;
import com.nnbc123.core.pay.event.FirstChargeEvent;
@@ -44,7 +43,7 @@ import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
import com.nnbc123.core.super_admin.util.SuperAdminUtil;
import com.nnbc123.core.user.UserModel;
import com.nnbc123.core.utils.SharedPreferenceUtils;
import com.nnbc123.core.utils.StringExtensionKt;
import com.nnbc123.core.utils.ktx.StringExtensionKt;
import com.nnbc123.core.utils.net.RxHelper;
import com.nnbc123.library.utils.ListUtils;

View File

@@ -19,7 +19,7 @@ import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.netease.nim.uikit.common.util.string.StringUtil;
import com.netease.nim.uikit.common.util.string.NimStringUtil;
import com.opensource.svgaplayer.SVGACallback;
import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGAImageView;
@@ -47,7 +47,7 @@ import java.lang.ref.WeakReference;
import java.net.MalformedURLException;
import java.net.URL;
import javax.annotation.Nullable;
import androidx.annotation.Nullable;
/**
* @author chenran
@@ -181,7 +181,7 @@ public class GiftEffectView extends RelativeLayout implements SVGACallback {
effectHandler.sendEmptyMessageDelayed(0, 6000);
if (giftInfo.getOtherViewType() == 1 && !TextUtils.isEmpty(giftInfo.getViewUrl())) {
drawVAPEffect(giftInfo.getViewUrl());
} else if (giftInfo.isHasVggPic() && !StringUtil.isEmpty(giftInfo.getVggUrl())) {
} else if (giftInfo.isHasVggPic() && !NimStringUtil.isEmpty(giftInfo.getVggUrl())) {
try {
drawSvgaEffect(giftInfo.getVggUrl());
} catch (MalformedURLException e) {

View File

@@ -70,7 +70,7 @@ import java.util.List;
import java.util.Objects;
import java.util.Random;
import javax.annotation.Nullable;
import androidx.annotation.Nullable;
/**

View File

@@ -55,7 +55,7 @@ import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.netease.nimlib.sdk.msg.constant.NotificationType;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.nnbc123.app.R;
import com.nnbc123.app.UIHelper;
import com.nnbc123.app.utils.UIHelper;
import com.nnbc123.app.avroom.activity.AVRoomActivity;
import com.nnbc123.app.avroom.dialog.PKResultDialog;
import com.nnbc123.app.common.widget.CustomAutoWidthImageSpan;
@@ -135,7 +135,7 @@ import com.nnbc123.core.manager.AvRoomDataManager;
import com.nnbc123.core.manager.IMNetEaseManager;
import com.nnbc123.core.miniworld.bean.MiniWorldInWorldInfo;
import com.nnbc123.core.monsterhunting.bean.MonsterHuntingResult;
import com.nnbc123.core.monsterhunting.bean.MonsterProtocol;
import com.nnbc123.core.monsterhunting.bean.MonsterProtocolDataBean;
import com.nnbc123.core.noble.NobleInfo;
import com.nnbc123.core.noble.NobleUtil;
import com.nnbc123.core.praise.PraiseModel;
@@ -169,7 +169,7 @@ import com.nnbc123.library.utils.JavaUtil;
import com.nnbc123.library.utils.ListUtils;
import com.nnbc123.library.utils.SingleToastUtil;
import com.nnbc123.library.utils.SizeUtils;
import com.nnbc123.xchat_android_constants.XChatConstants;
import com.nnbc123.core.XChatConstants;
import com.tongdaxing.erban.sadmin.utils.SaAttachmentToMsgUtil;
import org.greenrobot.eventbus.EventBus;
@@ -870,7 +870,7 @@ public class MessageView extends FrameLayout {
} else if (first == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_MONSTER_HUNTING) {
switch (second) {
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_MONSTER_HUNTING:
MonsterProtocol.DataBean dataBean = ((MonsterStatusAttachment) attachment).getDataBean();
MonsterProtocolDataBean dataBean = ((MonsterStatusAttachment) attachment).getDataBean();
setMonsterNotifyMessage(tvContent, dataBean.getNotifyMessage());
break;
case CustomAttachment.CUSTOM_NOTI_SUB_GAME_RESULT:
@@ -2968,7 +2968,7 @@ public class MessageView extends FrameLayout {
} else if (attachment.getFirst() == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_MONSTER_HUNTING) {
switch (attachment.getSecond()) {
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_MONSTER_HUNTING:
MonsterProtocol.DataBean dataBean = ((MonsterStatusAttachment) attachment).getDataBean();
MonsterProtocolDataBean dataBean = ((MonsterStatusAttachment) attachment).getDataBean();
RoomInfo mCurrentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (!Objects.equals(mCurrentRoomInfo.getUid(), dataBean.getAppearRoomUid())) {
AVRoomActivity.start(getContext(), dataBean.getAppearRoomUid());

View File

@@ -12,6 +12,7 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
@@ -53,6 +54,7 @@ import io.reactivex.disposables.Disposable;
* @author xiaoyu
* @date 2017/12/20
*/
@Keep
public class MicroView extends LinearLayout implements View.OnLayoutChangeListener {
private static final String TAG = "MicroView";
public RecyclerView recyclerView;

View File

@@ -10,14 +10,14 @@ import android.net.Uri
import android.view.ViewGroup
import android.widget.FrameLayout
import androidx.core.view.isVisible
import com.chuhai.core.player.PlaybackState
import com.chuhai.core.player.PlayerListener
import com.chuhai.core.player.exo.ExoMediaItem
import com.chuhai.core.player.exo.ExoPlayer
import com.chuhai.utils.ICleared
import com.chuhai.utils.ktx.dp
import com.chuhai.utils.ktx.roundCorner
import com.chuhai.utils.log.ILog
import com.chu.core.player.PlaybackState
import com.chu.core.player.PlayerListener
import com.chu.core.player.exo.ExoMediaItem
import com.chu.core.player.exo.ExoPlayer
import com.chu.utils.ICleared
import com.chu.utils.ktx.dp
import com.chu.utils.ktx.roundCorner
import com.chu.utils.log.ILog
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout
import com.nnbc123.app.ui.widget.magicindicator.buildins.UIUtil
import com.nnbc123.core.im.custom.bean.RoomPrivilegeAttachment
@@ -122,6 +122,9 @@ class PrivilegeCardEngine(
loopQueue()
}
}
else ->{
}
}
}

View File

@@ -39,7 +39,7 @@ import com.nnbc123.app.ui.widget.SimpleAnimListener
import com.nnbc123.app.ui.widget.drawgift.DrawGiftPlayHelper
import com.nnbc123.app.utils.MsgBuilder
import com.nnbc123.app.utils.SpannableBuilder
import com.nnbc123.xchat_android_constants.XChatConstants
import com.nnbc123.core.XChatConstants
import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.decoration.car.bean.CarInfo
import com.nnbc123.core.im.custom.bean.*
@@ -50,8 +50,8 @@ import com.nnbc123.core.room.bean.DatingNotifyInfo
import com.nnbc123.core.super_admin.util.SuperAdminUtil
import com.nnbc123.core.user.UserModel
import com.nnbc123.core.user.bean.UserInfo
import com.nnbc123.core.utils.sub
import com.nnbc123.core.utils.subAndReplaceDot
import com.nnbc123.core.utils.ktx.sub
import com.nnbc123.core.utils.ktx.subAndReplaceDot
import com.nnbc123.library.utils.ListUtils
import com.opensource.svgaplayer.*
import io.reactivex.Observable

View File

@@ -11,7 +11,7 @@ import com.nnbc123.core.room.wishlist.WishCreateItemInfo
import com.nnbc123.app.R
import com.nnbc123.app.base.BaseDialog
import com.nnbc123.app.databinding.DialogWishListCreateBinding
import com.nnbc123.core.utils.toIntOrDef
import com.nnbc123.core.utils.ktx.toIntOrDef
import com.nnbc123.library.utils.SingleToastUtil
import kotlin.math.max
import kotlin.math.min

View File

@@ -10,7 +10,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.room.wishlist.WishCreateItemInfo
import com.nnbc123.core.room.wishlist.WishItemInfo
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.toast
import com.nnbc123.app.R
import com.nnbc123.app.avroom.wishlist.history.WishListHistoryActivity
import com.nnbc123.app.base.BaseViewBindingActivity

View File

@@ -8,7 +8,7 @@ import com.nnbc123.core.gift.bean.SimpleUserInfo
import com.nnbc123.core.room.wishlist.WishCreateItemInfo
import com.nnbc123.core.room.wishlist.WishItemInfo
import com.nnbc123.core.room.wishlist.WishListModel
import com.nnbc123.core.utils.toast
import com.nnbc123.core.utils.ktx.toast
import com.nnbc123.app.base.Event
class WishListViewModel : BaseViewModel() {

View File

@@ -1,6 +1,6 @@
package com.nnbc123.app.base;
import static com.nnbc123.core.Constants.DEBUG_MAX_UID;
import static com.nnbc123.core.CoreConstants.DEBUG_MAX_UID;
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MESS_HEAD_NOBLE;
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_OPENNOBLE;
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_RENEWNOBLE;
@@ -34,6 +34,7 @@ import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
import androidx.annotation.ColorInt;
import androidx.core.util.Consumer;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
@@ -44,8 +45,8 @@ import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nimlib.sdk.NIMSDK;
import com.netease.nimlib.sdk.Observer;
import com.netease.nimlib.sdk.msg.model.BroadcastMessage;
import com.nnbc123.app.MiddleActivity;
import com.nnbc123.app.NimMiddleActivity;
import com.nnbc123.app.ui.agent.AgentActivity;
import com.nnbc123.app.ui.im.NimMiddleActivity;
import com.nnbc123.app.R;
import com.nnbc123.app.application.XChatApplication;
import com.nnbc123.app.avroom.activity.AVRoomActivity;
@@ -81,7 +82,7 @@ import com.nnbc123.core.manager.RoomEvent;
import com.nnbc123.core.mentoring_relationship.event.GrabApprenticesEvent;
import com.nnbc123.core.newbie.NewbieHelloInfo;
import com.nnbc123.core.newbie.event.NewbieHelloDialogEvent;
import com.nnbc123.core.noble.AllServiceGiftProtocol;
import com.nnbc123.core.noble.AllServiceGiftProtocolDataBean;
import com.nnbc123.core.noble.NobleInfo;
import com.nnbc123.core.noble.NobleProtocol;
import com.nnbc123.core.redpackage.RedPackageNotifyInfo;
@@ -99,7 +100,7 @@ import com.nnbc123.library.utils.UIUtils;
import com.nnbc123.library.utils.codec.DESUtils;
import com.nnbc123.library.utils.config.BasicConfig;
import com.nnbc123.library.utils.log.MLog;
import com.nnbc123.xchat_android_constants.XChatConstants;
import com.nnbc123.core.XChatConstants;
import com.orhanobut.logger.Logger;
import com.readystatesoftware.systembartint.SystemBarTintManager;
import com.tbruyelle.rxpermissions2.RxPermissions;
@@ -133,7 +134,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
*/
protected static final String STATUS_TAG = "STATUS_TAG";
private final RxPermissions rxPermissions = new RxPermissions(this);
protected final RxPermissions rxPermissions = new RxPermissions(this);
protected TitleBar mTitleBar;
protected DefaultToolBar mToolBar;
protected CompositeDisposable mCompositeDisposable;
@@ -821,6 +822,17 @@ public abstract class BaseActivity extends RxAppCompatActivity
}, Throwable::printStackTrace);
}
@SuppressLint("CheckResult")
public void checkPermission(Consumer<Boolean> consumer, String... mPerms) {
rxPermissions.request(mPerms)
.subscribe(aBoolean -> {
if (consumer != null) {
consumer.accept(aBoolean);
}
}, Throwable::printStackTrace);
}
@SuppressLint("CheckResult")
public Observable<Boolean> checkPermission(String... mPerms) {
return rxPermissions.request(mPerms);
@@ -917,7 +929,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
if (this instanceof AddUserInfoActivity ||
UserUtils.getUserInfo() == null)
return;
AllServiceGiftProtocol.DataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocol.DataBean.class);
AllServiceGiftProtocolDataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocolDataBean.class);
if (data == null || data.getGiftUrl() == null || !data.isCeremonyGift())
return;
new AllServiceGiftLevelCeremonyDialog(context, data).show();
@@ -975,7 +987,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
acts.add(LoginCodeActivity.class);
acts.add(ResetPasswordActivity.class);
acts.add(AddUserInfoActivity.class);
acts.add(MiddleActivity.class);
acts.add(AgentActivity.class);
acts.add(NimMiddleActivity.class);
for (Class act : acts) {

View File

@@ -6,7 +6,7 @@ import androidx.databinding.ObservableField;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.nnbc123.core.Constants;
import com.nnbc123.core.CoreConstants;
import com.nnbc123.core.bean.response.ServiceResult;
import com.nnbc123.core.utils.net.RxHelper;
import com.nnbc123.library.utils.SingleToastUtil;
@@ -23,7 +23,7 @@ import io.reactivex.functions.Consumer;
public abstract class BaseListViewModel<D> {
public int page = 1;
public int pageSize = Constants.PAGE_SIZE;
public int pageSize = CoreConstants.PAGE_SIZE;
public ObservableBoolean loading = new ObservableBoolean(false);
public ObservableBoolean isLode = new ObservableBoolean(false);

Some files were not shown because too many files have changed in this diff Show More