Compare commits

..

176 Commits

Author SHA1 Message Date
fcd13751c9 Merge remote-tracking branch 'origin/dev_6.6.8' into dev_6.6.8 2024-05-08 11:35:30 +08:00
e24805cf9b 移除友盟SDK 2024-05-08 11:34:56 +08:00
489a99e522 移除友盟SDK 2024-05-08 11:34:41 +08:00
6a51b39134 移除友盟SDK 2024-05-08 11:34:07 +08:00
86bbf6a7f3 更新小游戏混淆列表 2024-05-08 10:49:07 +08:00
599e88acc6 替换友盟为本地aar
调整小游戏为繁体中文
2024-05-08 09:52:35 +08:00
2093306d36 修复测试反馈问题
调整小助手、机器人图标
调整PD一号的IM消息
调整PD一号的红包UI
调整翻译
2024-05-05 16:13:28 +08:00
8e2acc3417 Merge branch 'master' into dev_6.6.8 2024-04-29 11:30:25 +08:00
d28d0dd3d7 修复测试反馈问题 2024-04-29 11:02:23 +08:00
150bdba795 完成小游戏直播间半屏内容 2024-04-26 18:04:16 +08:00
651fe12edd 新增小助手中英文图标判定
新增消息页图标中英文判定
2024-04-26 14:47:58 +08:00
d0c0f8f82e 新增戰令一鍵領取按鈕 2024-04-26 11:11:48 +08:00
1f12187766 根据测试反馈修改帮助反馈问题
新增小游戏跳一跳回血和必中的回调
新增关闭发红包页面后自动打开礼物栏的功能
调整小游戏跳一跳回调防抖
2024-04-26 10:08:19 +08:00
18401019693
754f2a9294 修改问题全服跳转直播间问题 2024-04-25 15:32:38 +08:00
1c9493d7c8 修改帮助反馈的UI 2024-04-24 18:00:46 +08:00
34e4765e13 修改帮助反馈的UI 2024-04-24 17:48:21 +08:00
d4d191fad6 新增帮助与反馈功能 2024-04-24 16:26:47 +08:00
18401019693
11ba2c45f8 修改问题 2024-04-12 14:14:16 +08:00
18401019693
320584769d 修改问题 2024-04-11 16:32:21 +08:00
18401019693
b29b0a1688 修改问题 2024-04-10 13:31:40 +08:00
18401019693
f88356cea2 修改问题 2024-04-10 10:31:21 +08:00
18401019693
2a67cf7228 修改问题 2024-04-10 09:51:28 +08:00
18401019693
a100ab1a4a 修改问题 2024-04-09 13:04:42 +08:00
18401019693
69b45f1d21 修改问题 2024-04-08 14:43:27 +08:00
18401019693
479a743d29 替换声网的RTC库 2024-04-08 14:04:15 +08:00
18401019693
382c53ab1f Merge remote-tracking branch 'origin/master' 2024-04-08 13:12:33 +08:00
18401019693
1c22f5fd48 修改守护购买页过期用户购买逻辑 2024-04-08 13:12:23 +08:00
hch
09bef7afa6 add [新增短剧埋点] 2024-04-08 13:08:56 +08:00
18401019693
88b96267ef 修改守护购买页过期用户购买逻辑 2024-04-08 10:01:42 +08:00
18401019693
7c006e8e03 修改守护榜位置信息 2024-04-07 17:21:17 +08:00
18401019693
f35b547c0d 自测修复,全服添加主播端 2024-04-07 15:32:42 +08:00
18401019693
490c558e03 自测修复,全服添加主播端 2024-04-07 14:39:48 +08:00
18401019693
bbf5d159b4 自测修复,全服添加主播端 2024-04-07 14:15:41 +08:00
hch
e982994ecd add [首页新增短剧入口] 2024-04-07 10:54:24 +08:00
hch
a0294a8405 Merge remote-tracking branch 'origin/master' 2024-04-07 10:05:51 +08:00
hch
756cbb1ce1 add [首页新增短剧入口] 2024-04-07 10:05:40 +08:00
9e5427bd35 update 登录接口加中英文标识 2024-04-07 09:54:45 +08:00
18401019693
f626ab03d4 添加短剧签到 2024-04-07 09:40:32 +08:00
18401019693
0d7bdce4f0 修改守护问题,添加全服通知功能 2024-04-03 16:05:53 +08:00
18401019693
cd3feebb94 修改问题 2024-04-01 14:32:46 +08:00
18401019693
3cca1a9e54 Merge remote-tracking branch 'origin/master' 2024-04-01 11:11:06 +08:00
18401019693
0b7b959151 修改问题 2024-04-01 11:10:54 +08:00
1f1ac71bb0 update 客服webview新增isZh判断 2024-04-01 10:56:44 +08:00
18401019693
ce7b6decc1 心愿单 2024-03-29 18:05:01 +08:00
18401019693
4a4a52aa61 修改守护列表页标签展示 2024-03-29 15:16:27 +08:00
18401019693
123b9dd74a Merge branch 'dev_6.6.6_开通守护' 2024-03-28 16:51:13 +08:00
18401019693
28dba93f17 修改守护列表页标签展示 2024-03-28 16:29:02 +08:00
18401019693
285515345b 修改守护列表页标签展示 2024-03-28 10:00:20 +08:00
18401019693
f24744afe8 修改测试问题 2024-03-28 09:50:29 +08:00
18401019693
1e466ac13d Merge branch 'dev_6.6.6_开通守护' 2024-03-27 16:19:31 +08:00
18401019693
d37b490088 修改测试问题,添加代理和vpn检测的开播检测 2024-03-27 16:19:08 +08:00
18401019693
a61bc8fbb8 Merge branch 'dev_6.6.6_开通守护' 2024-03-27 09:44:56 +08:00
9db23a32d1 fix [修复直播数量不足且战令关闭情况下,显示角标Banner白屏问题]
update [替换战令角标]
add [从首页Banner进入战令入口]
add [从弹窗进入战令入口]
2024-03-26 17:37:26 +08:00
18401019693
5f1eadc47b ui修改 2024-03-26 17:27:42 +08:00
18401019693
de11b5123d ui修改 2024-03-26 15:03:08 +08:00
18401019693
5b0f5f03ab 新增主播端 获取活动悬浮窗状态的接口:Live.getAnchorActiveImgStatus,替换原有的接口:Rank.isActivity, 2024-03-25 11:10:46 +08:00
18401019693
6095d2d04a 修改等级领取 2024-03-25 10:34:10 +08:00
18401019693
3953e146a5 修改问题 2024-03-23 17:33:09 +08:00
18401019693
f04a2865af 修改问题 2024-03-23 16:47:28 +08:00
18401019693
f94b3f27e3 守护团新增红点 2024-03-22 14:53:33 +08:00
18401019693
61a966ea41 修改直播间内红包和神龙送财的位置首页的位置 2024-03-22 11:23:30 +08:00
18401019693
d0f2ac2c60 修改测试问题, 2024-03-21 18:37:35 +08:00
18401019693
5dff64ec99 修改测试问题,对接H5页面 2024-03-21 18:13:24 +08:00
18401019693
cad8236e5c 修改测试问题 2024-03-21 17:36:07 +08:00
18401019693
faa401245f 修改测试问题 2024-03-21 15:48:50 +08:00
18401019693
4fc021e866 修改测试问题 2024-03-21 15:28:36 +08:00
18401019693
f9a21d0357 修改测试问题 2024-03-21 15:08:42 +08:00
18401019693
d72a9a39c6 修改测试问题 2024-03-20 16:29:37 +08:00
18401019693
0317b339f8 修改测试问题,新增直播列表页面的神龙送财的图标 2024-03-20 15:19:53 +08:00
18401019693
4fabf3aba3 修改测试问题 2024-03-20 13:40:30 +08:00
18401019693
4693954a72 神龙送财,逻辑修改,由开通接口触发 2024-03-20 10:02:14 +08:00
18401019693
859810f1f6 守护的全服通知,修改测试问题 2024-03-19 15:32:04 +08:00
18401019693
53f389ddc8 守護等級的檢查接口,領取接口。相關頁面的請求添加。h5方法新鄭 2024-03-18 14:52:24 +08:00
18401019693
ddc9bc344e 神龙送财结束Im结束调用接口,神龙列表倒计时修改 2024-03-18 10:24:05 +08:00
18401019693
cf34e73d32 神龙列表接口对接,神龙送财活动参加接口对接,ui更新 2024-03-14 18:21:55 +08:00
18401019693
1981fb553a 神龙列表接口对接,神龙送财活动参加接口对接,ui更新 2024-03-14 16:39:04 +08:00
18401019693
3b6d586b58 神龙送财开启接口。展示直播间神龙送财点击参与的图标 2024-03-14 10:44:40 +08:00
18401019693
50b6deaf01 對接開通接口神龍送財的im消息 2024-03-13 11:18:26 +08:00
18401019693
bc8d916445 神龍送財彈窗頁面。神龍送財規則頁面 2024-03-06 17:18:54 +08:00
18401019693
6870037683 新版守护,空页面,列表页面。守护类型开通页面。开通时间页面 2024-03-06 14:24:04 +08:00
hch
8af7f907eb 守护弹窗 2024-03-04 14:51:07 +08:00
4d96bcc667 Merge remote-tracking branch 'origin/dev_6.6.6_开通守护' into dev_6.6.6_开通守护 2024-02-27 17:38:30 +08:00
f7845dde6f 修复找回密码后无法登陆的问题 2024-02-26 16:04:47 +08:00
ae9ef1f8a1 新增守护测试页面 2024-02-26 14:41:01 +08:00
18401019693
1023c0ab4d 修改直播间发言报错提示 2024-02-23 09:47:49 +08:00
hch
8184cf6c7f 文字漸變色庫 2024-02-22 15:26:21 +08:00
df735af252 新增短剧页面的开播提醒浮窗 2024-02-17 13:43:30 +08:00
hch
6f71a825b5 Merge remote-tracking branch 'origin/master' 2024-02-16 10:34:23 +08:00
hch
08e009e5f9 修复bug上报问题 2024-02-16 10:34:10 +08:00
18401019693
1a4a0632ee Merge remote-tracking branch 'origin/master'
# Conflicts:
#	config.gradle
2024-02-16 10:31:56 +08:00
18401019693
b3a02f8c2c 短剧页面关闭直播小窗 2024-02-16 10:30:35 +08:00
aa9bc7326c 更新版本号 2024-01-31 16:08:30 +08:00
22769b981d 移除埋点空格 2024-01-31 10:25:54 +08:00
hch
85b4facfe8 调整UI 2024-01-26 17:04:11 +08:00
aef0435b93 战令相关UI调整 2024-01-26 16:18:23 +08:00
9cc30186cd 战令相关UI调整 2024-01-26 14:10:54 +08:00
f99641ed35 战令相关UI调整 2024-01-26 13:42:38 +08:00
hch
0552f56eb4 调整UI 2024-01-26 13:06:03 +08:00
18401019693
7ab4081f0b 優化頁面 2024-01-26 10:45:15 +08:00
hch
e7ef492015 调整UI 2024-01-26 10:18:58 +08:00
1aa6cb8f55 修复测试反馈问题 2024-01-25 16:38:44 +08:00
dc87fc7048 修复测试反馈问题 2024-01-25 14:15:46 +08:00
18401019693
04b70d910a 修复游戏房和ios不一样的数据 2024-01-25 13:07:17 +08:00
a4ce44d9ba 提交战令英文版入口图标
修复测试反馈问题
移除测试点
2024-01-25 11:40:13 +08:00
469e3e30ad 调整战令首页入口图片 2024-01-24 18:27:15 +08:00
18401019693
7e7616ef29 Merge remote-tracking branch 'origin/master' 2024-01-24 15:47:31 +08:00
18401019693
dd64568fdf 修复:连送重新选择礼物或者包裹按钮不消失问题 2024-01-24 15:47:19 +08:00
50fb801cf7 新增一个测试点 2024-01-24 14:52:44 +08:00
e0200a9c7f Merge remote-tracking branch 'origin/master' 2024-01-24 14:43:43 +08:00
5a32047c6d 调整客服WebView
新增客服url判断链接
2024-01-24 14:43:31 +08:00
18401019693
45fd56ba66 修复:手机开播邀请多人PK,多人PK一轮结束后,再次多人PK,在直播间的观众无法看到第二轮的PK倒计时 2024-01-24 14:39:00 +08:00
hch
30b2884c46 去掉短剧页面的顶部状态栏,修复闪退bug 2024-01-24 11:41:18 +08:00
0c07e8c2be Merge remote-tracking branch 'origin/master' 2024-01-24 11:30:26 +08:00
18401019693
508e9f1931 修复:手机开播邀请多人PK,多人PK一轮结束后,再次多人PK,在直播间的观众无法看到第二轮的PK倒计时 2024-01-24 11:29:00 +08:00
78d870ed89 update 2024-01-24 10:45:07 +08:00
18401019693
c00afb1db0 优化 2024-01-24 09:53:13 +08:00
18401019693
dfca615735 优化 2024-01-23 17:50:31 +08:00
hch
a920b61bc4 Merge remote-tracking branch 'origin/master' 2024-01-23 17:49:44 +08:00
hch
3effb630c5 去掉短剧页面的顶部状态栏,修复闪退bug 2024-01-23 17:49:37 +08:00
0e596e9be9 修复测试反馈BUG 2024-01-23 17:33:55 +08:00
hch
0a70cc027f 埋点-短剧 2024-01-23 16:09:51 +08:00
47077a465a 修复PK显示问题:【是用户先进 主播后挂断会显示对方信息角标】
调整直播间游戏半屏UI
调整战令UI
2024-01-23 15:28:13 +08:00
hch
aa62dda844 短剧优化 2024-01-23 14:05:33 +08:00
18401019693
004a5b2a53 优化 2024-01-23 11:14:58 +08:00
18401019693
64f9cee3af 优化 2024-01-23 09:50:34 +08:00
1eb43fb8cf 修复PK排位赛信息问题 2024-01-20 15:15:30 +08:00
18401019693
f770370be0 多人pk邀请人数限制 2024-01-20 13:59:27 +08:00
e185eb8612 调整webView
调整客服页面
2024-01-19 11:10:06 +08:00
299add0575 调整webView
调整客服页面
2024-01-19 11:06:35 +08:00
feb08e1759 调整webView
调整客服页面
2024-01-19 10:51:44 +08:00
16755a9c8c 调整webView
调整客服页面
2024-01-19 10:43:40 +08:00
hch
d6e6164549 新增谷歌服务判断 2024-01-19 10:28:46 +08:00
52c561fa08 修改战令入口颜色 2024-01-18 18:22:41 +08:00
c2979b4cf7 修改战令入口颜色 2024-01-18 18:04:07 +08:00
18401019693
0f70f10aed 多人PK结束以后横竖屏修改 2024-01-18 16:50:39 +08:00
45f471055e 調整戰令相關UI 2024-01-18 16:20:55 +08:00
18401019693
c49c9c2f81 Merge remote-tracking branch 'origin/master' 2024-01-18 16:09:45 +08:00
18401019693
74b19de11c 多人PK倒计时bug修改 2024-01-18 16:09:34 +08:00
hch
00b89aab69 合并 2024-01-18 15:15:04 +08:00
hch
6ff6cbbe6b Merge branch 'master' into pdlive_samsung
# Conflicts:
#	config.gradle
#	live/src/main/java/com/yunbao/live/views/SystemMessageViewHolder.java
2024-01-18 14:56:27 +08:00
hch
65d38de73c 修复 点击去支付无反应 问题 2024-01-18 14:48:49 +08:00
18401019693
ae6fdab7e8 多人PK倒计时bug修改 2024-01-18 14:48:29 +08:00
18401019693
3d1c4466e0 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	config.gradle
2024-01-18 13:38:34 +08:00
18401019693
9963b37b6f 多人PK倒计时bug修改 2024-01-18 13:37:49 +08:00
a8a1aa2e71 调整战令奖励列表的渲染
更改战令获取金币接口
2024-01-18 10:57:21 +08:00
2857127285 调整战令页面间距
修复【战令余额不足未跳转充值页面】问题
修复【战令开通等级时弹框金额偶尔不显示问题】
调整战令获取金额接口
调整战令item名字显示模式
调整战令购买经验弹框显示
2024-01-17 16:21:25 +08:00
hch
3a1268aac7 修改UI 2024-01-17 11:26:15 +08:00
hch
5b813aff88 修改UI 2024-01-17 11:12:53 +08:00
18401019693
d9951b5a35 添加了接口控制文字消息和语音的展示 2024-01-15 17:59:18 +08:00
18401019693
f928fce069 Merge remote-tracking branch 'origin/master' 2024-01-15 17:58:53 +08:00
18401019693
d365389ff8 添加了接口控制文字消息和语音的展示 2024-01-15 17:58:47 +08:00
a4e98f3703 调整弹幕统计接口字段 2024-01-15 17:52:53 +08:00
hch
a307e6f864 修复 点击去支付无反应 问题 2024-01-15 17:24:07 +08:00
hch
b5c8f14994 Merge remote-tracking branch 'origin/master' 2024-01-15 17:11:40 +08:00
hch
34323fd983 修复首页直播通行证展示问题 2024-01-15 17:11:24 +08:00
18401019693
1f7c6c8adc 添加了接口控制文字消息和语音的展示 2024-01-15 17:04:36 +08:00
18401019693
29c2334ee0 添加了接口控制文字消息和语音的展示 2024-01-15 16:22:29 +08:00
18401019693
2aa50ecfc7 添加了接口控制文字消息和语音的展示 2024-01-15 16:15:00 +08:00
18401019693
58b2d69601 添加了接口控制文字消息和语音的展示 2024-01-15 14:31:59 +08:00
18401019693
e061e61088 Merge remote-tracking branch 'origin/master' 2024-01-15 13:59:52 +08:00
18401019693
24788d7e21 添加了接口控制文字消息和语音的展示 2024-01-15 13:59:46 +08:00
54693c0d37 修复【升级战令未刷新钻石余额】的问题 2024-01-15 13:33:53 +08:00
hch
27f136d6ca 修复首页直播通行证展示问题 2024-01-15 10:49:23 +08:00
hch
92d271ff93 TopGradual 更改引用 2024-01-15 10:22:08 +08:00
18401019693
0b15df41b8 Merge remote-tracking branch 'origin/语音房_6.6.4_'
# Conflicts:
#	common/src/main/res/values-en-rUS/string.xml
#	common/src/main/res/values-zh-rHK/strings.xml
#	common/src/main/res/values-zh-rTW/strings.xml
#	common/src/main/res/values-zh/strings.xml
#	common/src/main/res/values/strings.xml
2024-01-15 10:03:00 +08:00
hch
7627219e77 新增首页战令入口 2024-01-12 15:33:16 +08:00
hch
ac6eb21e06 Merge remote-tracking branch 'origin/master' into 6.6.4_推送管理
# Conflicts:
#	common/src/main/java/com/yunbao/common/utils/RouteUtil.java
#	common/src/main/res/values-en-rUS/string.xml
#	common/src/main/res/values-zh-rHK/strings.xml
#	common/src/main/res/values-zh-rTW/strings.xml
#	common/src/main/res/values-zh/strings.xml
#	common/src/main/res/values/strings.xml
#	config.gradle
2024-01-12 13:52:03 +08:00
7795317c14 修复【直播间信件往下滑,信件界面会显示为空】 2024-01-11 16:10:17 +08:00
c6fb323c68 update 2024-01-11 13:23:20 +08:00
d629ee3f9f 修复切到其他页面后短剧不会暂停播放的问题
修复短剧购买卷重复弹出对话框问题
2024-01-09 17:31:13 +08:00
df0d9795ed 调整客服页面返回键交给h5处理(含系统按键/手势)
统一客服页面为同一个WebView
调整短剧与社区使用原生分开加载
调整送礼-包裹接口为新接口
调整粉丝团礼物送礼为新接口
修复战令-兑换-列表页面在名字过长晴空下高度不统一
2024-01-09 16:42:09 +08:00
1759757176 调整客服页面返回键交给h5处理(含系统按键/手势)
统一客服页面为同一个WebView
调整短剧与社区使用原生分开加载
调整送礼-包裹接口为新接口
调整粉丝团礼物送礼为新接口
修复战令-兑换-列表页面在名字过长晴空下高度不统一
2024-01-09 16:37:43 +08:00
hch
661c2fd334 推送管理 2024-01-09 14:52:27 +08:00
b175e42ee1 新增戰令入口
調整戰令UI顯示不全問題
2024-01-05 17:30:11 +08:00
6cdc648ea9 修复战令购买后未刷新UI问题 2024-01-05 16:37:04 +08:00
hch
dcf3f5c308 推送管理 2024-01-03 18:28:49 +08:00
422 changed files with 16959 additions and 1797 deletions

View File

@@ -2,7 +2,7 @@ package com.yunbao.faceunity;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.platform.app.Instrimport com.yunbao.common.utils.MobclickAgent;ntationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;

View File

@@ -1,17 +0,0 @@
package com.yunbao.share;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
assertEquals(4, 2 + 2);
}
}

View File

@@ -10,6 +10,26 @@ android {
project.tasks.getByName("tasks").doFirst {
}
/* flavorDimensions "packageApk"
productFlavors {
LinkTest {
dimension "packageApk"
manifestPlaceholders = [serverHost: "https://ceshi.yaoulive.com",isGooglePlay:0,isPluginModel:true]
}
LinkOfficial {
dimension "packageApk"
manifestPlaceholders = [serverHost: "https://napi.yaoulive.com",isGooglePlay:0,isPluginModel:true]
}
GoogleTest {
dimension "packageApk"
manifestPlaceholders = [serverHost: "https://ceshi.yaoulive.com",isGooglePlay:1,isPluginModel:false]
}
GoogleOfficial{
dimension "packageApk"
manifestPlaceholders = [serverHost: "https://napi.yaoulive.com",isGooglePlay:1,isPluginModel:false]
}
}*/
/* applicationVariants.all { variant ->
variant.mergeAssetsProvider.configure {
doLast {
@@ -119,14 +139,27 @@ android {
processManifestTask.doLast { pm ->
String manifestPath = "build/intermediates/bundle_manifest/release/bundle-manifest/AndroidManifest.xml"
def isGooglePlay = rootProject.ext.manifestPlaceholders.isGooglePlay
if (file(manifestPath).exists() && isGooglePlay) {
println "谷歌版本:" + isGooglePlay
println "文件存在" + file(manifestPath).exists()
println "" + (isGooglePlay != 0)
println "" + (file(manifestPath).exists() && isGooglePlay != 0)
if (file(manifestPath).exists() && isGooglePlay != 0) {
def manifestContent = file(manifestPath).getText()
println "移除权限"
manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />', '')
manifestContent = manifestContent.replace('android.permission.REQUEST_INSTALL_PACKAGES', '')
file(manifestPath).write(manifestContent)
} else {
print "not Exists = " + manifestPath
}
manifestPath = "build/intermediates/merged_manifests/release/processReleaseManifest/AndroidManifest.xml"
if (file(manifestPath).exists() && isGooglePlay != 0) {
def manifestContent = file(manifestPath).getText()
println "移除权限2"
manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />', '')
manifestContent = manifestContent.replace('android.permission.REQUEST_INSTALL_PACKAGES', '')
file(manifestPath).write(manifestContent)
}
}
variant.mergeAssetsProvider.configure {
doLast {
@@ -171,7 +204,7 @@ android {
isGoogle = "谷歌"
} else if (rootProject.ext.manifestPlaceholders.isGooglePlay == 2) {
isGoogle = "Huawei"
}else if (rootProject.ext.manifestPlaceholders.isGooglePlay == 3) {
} else if (rootProject.ext.manifestPlaceholders.isGooglePlay == 3) {
isGoogle = "Samsung"
}
def isPlugin = "完整"
@@ -183,7 +216,6 @@ android {
isTest = "正式服"
}
outputFileName = "[${new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("GMT+8"))}]PDLive-${defaultConfig.versionName}-${isGoogle}-${isPlugin}-${variant.buildType.name}-${isTest}.apk"
}
}
signingConfigs {

View File

@@ -275,6 +275,18 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
-keep class tech.sud.mgp.hello.ui.main.settings.model.** {*;}
-keep class tech.sud.mgp.hello.ui.main.nft.model.** {*;}
-keep class tech.sud.mgp.hello.common.event.model.** {*;}
-keep class tech.sud.mgp.**{*;}
-keep class bitter.jnibridge.** { *; }
-keep class com.google.androidgamesdk.** { *; }
-keep class com.unity3d.** { *; }
-keep class do.do.do.** { *; }
-keep class do.if.do.** { *; }
-keep class for.do.** { *; }
-keep class if.do.do.do.** { *; }
-keep class org.fmod.** { *; }
-keep class tech.sud.** { *; }
-keep class tech.unity3d.** { *; }
-keep class com.yunbao.common.sud.** {*;}

View File

@@ -83,6 +83,7 @@
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="com.samsung.android.iap.permission.BILLING"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- Android11新增 -->
<!-- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />-->

View File

@@ -6,6 +6,7 @@ import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.net.http.HttpResponseCache;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -29,14 +30,14 @@ import com.tencent.imsdk.v2.V2TIMGroupMemberInfo;
import com.tencent.imsdk.v2.V2TIMManager;
import com.tencent.imsdk.v2.V2TIMSimpleMsgListener;
import com.tencent.imsdk.v2.V2TIMUserInfo;
import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.BuildConfig;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.AnchorStartLiveBean;
import com.yunbao.common.bean.CrashSaveBean;
import com.yunbao.common.dialog.DebugDialog;
import com.yunbao.common.event.SudGameSocketImEvent;
import com.yunbao.common.manager.imrongcloud.InstructorSendReward;
import com.yunbao.common.manager.imrongcloud.InstructorSendRewardProvider;
@@ -61,6 +62,7 @@ import java.io.File;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import io.rong.imkit.config.RongConfigCenter;
@@ -140,6 +142,7 @@ public class AppContext extends CommonAppContext {
registerError();
registerFirebaseCrash();
LogUtils.start(this);
//DebugDialog.getInstance().setParams("初始化","启动");
sInstance = this;
L.setDeBug(BuildConfig.DEBUG);
AppEventsLogger.activateApp(this);
@@ -162,20 +165,20 @@ public class AppContext extends CommonAppContext {
OpenInstall.init(this);
}
//设置LOG开关默认为false
UMConfigure.setLogEnabled(true);
//UMConfigure.setLogEnabled(true);
//友盟正式初始化
UMConfigure.init(getApplicationContext(), "64e40ee55488fe7b3afa2c96", "PDLive", UMConfigure.DEVICE_TYPE_PHONE, "64e40ee55488fe7b3afa2c96");
//UMConfigure.init(getApplicationContext(), "64e40ee55488fe7b3afa2c96", "PDLive", UMConfigure.DEVICE_TYPE_PHONE, "64e40ee55488fe7b3afa2c96");
//集成umeng-crash-vx.x.x.aar则需要关闭原有统计SDK异常捕获功能
MobclickAgent.setCatchUncaughtExceptions(false);
//PushSDK初始化(如使用推送SDK必须调用此方法)
//统计SDK是否支持采集在子进程中打点的自定义事件默认不支持
UMConfigure.setProcessEvent(true);//支持多进程打点
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
UMConfigure.submitPolicyGrantResult(getApplicationContext(), true);
//UMConfigure.setProcessEvent(true);//支持多进程打点
//MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
//UMConfigure.submitPolicyGrantResult(getApplicationContext(), true);
registerActivityLifecycleCallbacks(new AdjustLifecycleCallbacks());
//初始化 AndroidUtilCode
@@ -274,7 +277,6 @@ public class AppContext extends CommonAppContext {
configSPApp();
//初始化美颜SDK
// FaceManager.initFaceUnity(this);
}
/**
@@ -339,7 +341,7 @@ public class AppContext extends CommonAppContext {
if (!CommonAppConfig.IS_UPLOAD_ERROR_LOG) {
return;
}
if (CommonAppConfig.IS_GOOGLE_PLAY == 1) {
if (CommonAppConfig.IS_GOOGLE_PLAY != 2) {
GoogleUtils.newInstance(this).initializeApp(this);
}
}
@@ -350,5 +352,17 @@ public class AppContext extends CommonAppContext {
return;
}
String uid = CommonAppConfig.getInstance().getUid();
if (CommonAppConfig.IS_GOOGLE_PLAY != 2) {
GoogleUtils.newInstance(sInstance).setFirebaseCrashData(
uid,
SpUtil.getInstance().getStringValue(SpUtil.USER_INFO),
String.valueOf(CommonAppConfig.IS_GOOGLE_PLAY),
Arrays.toString(Build.SUPPORTED_ABIS),
String.valueOf(CrashSaveBean.getInstance().getStartTime()),
String.valueOf(CrashSaveBean.getInstance().getEnterRoom()),
String.valueOf(CrashSaveBean.getInstance().getSlidingRoom()),
String.valueOf(CrashSaveBean.getInstance().getPlaySvga()), CrashSaveBean.getInstance().getActivitySize());
}
}
}

View File

@@ -200,24 +200,29 @@ dependencies {
//自定义圆角图片
api 'com.makeramen:roundedimageview:2.3.0'
// 友盟统计SDK
api 'com.umeng.umsdk:common:9.6.3'// 必选
api 'com.umeng.umsdk:asms:1.8.0'// 必选
api 'com.umeng.umsdk:uyumao:1.1.2'
// api(name: 'umeng-common-9.6.8+000', ext: 'aar')
//高级运营分析功能依赖库使用卸载分析、开启反作弊能力请务必集成以免影响高级功能使用。common需搭配v9.6.3及以上版本asms需搭配v1.7.0及以上版本。需更新隐私声明。
// 标准版本SudMGP SDK
api 'tech.sud.mgp:SudMGP:1.3.3.1158'
// 多语言语音识别扩展库(可选)
api 'tech.sud.mgp:SudASR:1.3.3.1158'
//侧滑删除
api 'com.yanzhenjie.recyclerview:x:1.3.2'
//华为支付插件包
//api project(':lib_huawei')
// api project(':lib_huawei')
//google插件包
//api project(':lib_google')
api project(':lib_google')
//samsung插件包
api project(':IAP6Helper')
//文字渐变色
api 'com.github.FlyJingFish:GradientTextView:1.2.4'
//轮播 一屏显示多个
api 'com.github.xiaohaibin:XBanner:androidx_v1.2.6'
}

View File

@@ -55,7 +55,7 @@ public class CommonAppContext extends MultiDexApplication {
// RongPushClient.setPushConfig(config); //将推送相关配置设置到 SDK
//设置新加坡融云服务器 有时候国内收不到推送是因为这个
RongIMClient.setServerInfo("navsg01.cn.ronghub.com", null);
if (CommonAppConfig.IS_GOOGLE_PLAY == 1) {
if (CommonAppConfig.IS_GOOGLE_PLAY != 2) {
//谷歌推送
PushConfig gconfig = new PushConfig.Builder().enableFCM(true).build();
RongPushClient.setPushConfig(gconfig);

View File

@@ -272,6 +272,8 @@ public class Constants {
public static final int LINK_MIC_TYPE_NORMAL = 0;//观众与主播连麦
public static final int LINK_MIC_TYPE_ANCHOR = 1;//主播与主播连麦
public static final String SOCKET_LIVE_ANCHOR_PK_DIALOG="GuildCompetitionNotice";//公会赛弹窗
//视频举报获取位置
public static int xIndex = 0;
public static int yindex = 0;

View File

@@ -39,7 +39,7 @@ public class HtmlConfig {
public static final String TURNTABLE_URL = CommonAppConfig.HOST + "/Appapi/Turntable/index";
//在线商城
public static final String SHOP = CommonAppConfig.HOST + "/h5/shoppingMall.html";
public static final String SHOP = CommonAppConfig.HOST + "/h5/shop/index.html";
//社区
public static final String ENCOURAGE = CommonAppConfig.HOST + "/h5/shequ/index.html#/h5/shequ";

View File

@@ -6,6 +6,7 @@ import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
@@ -24,7 +25,7 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.R;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.interfaces.LifeCycleListener;
@@ -91,7 +92,8 @@ public abstract class AbsActivity extends AppCompatActivity {
protected void main() {
}
protected void create(){
protected void create() {
}
@@ -106,6 +108,17 @@ public abstract class AbsActivity extends AppCompatActivity {
}
}
protected void setTitleBold(boolean bold) {
TextView titleView = (TextView) findViewById(R.id.titleView);
if (titleView != null) {
if (bold) {
titleView.setTypeface(Typeface.DEFAULT_BOLD);
} else {
titleView.setTypeface(Typeface.DEFAULT);
}
}
}
public void backClick(View v) {
if (v.getId() == R.id.btn_back) {
onBackPressed();
@@ -180,14 +193,14 @@ public abstract class AbsActivity extends AppCompatActivity {
//友盟统计
// MobclickAgent.onResume(this);
MobclickAgent.onPageStart(this.mTag);
Log.e("MobclickAgent","MobclickAgent:_onResume_"+this.mTag);
Log.e("MobclickAgent", "MobclickAgent:_onResume_" + this.mTag);
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPageEnd(this.mTag);
Log.e("MobclickAgent","MobclickAgent:_onPause_"+this.mTag);
Log.e("MobclickAgent", "MobclickAgent:_onPause_" + this.mTag);
if (mLifeCycleListeners != null) {
for (LifeCycleListener listener : mLifeCycleListeners) {
listener.onPause();
@@ -382,4 +395,13 @@ public abstract class AbsActivity extends AppCompatActivity {
}
}
public boolean isKefu(String url) {
if (url.contains("kefu")) {
return true;
}
if (url.contains("https://newkf.yaoulive.com/")) {
return true;
}
return url.startsWith("https://kefu.yaoulive.com");
}
}

View File

@@ -29,6 +29,7 @@ import com.lxj.xpopup.XPopup;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.Constants;
import com.yunbao.common.HtmlConfig;
import com.yunbao.common.R;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.common.event.JavascriptInterfaceEvent;
@@ -47,6 +48,7 @@ import com.yunbao.common.utils.L;
import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
import com.yunbao.common.utils.MicStatusManager;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.HintCustomPopup;
@@ -83,7 +85,15 @@ public class WebViewActivity extends AbsActivity {
@Override
protected void main() {
String url = getIntent().getStringExtra(Constants.URL);
if(StringUtil.isEmpty(url)){
url="";
}
L.e("H5--->" + url);
if(isKefu(url)){
RouteUtil.forwardCustomerService(url);
finish();
return;
}
Bus.getOn(this);
LinearLayout rootView = (LinearLayout) findViewById(R.id.rootView);
mProgressBar = (ProgressBar) findViewById(R.id.progressbar);
@@ -91,7 +101,6 @@ public class WebViewActivity extends AbsActivity {
ft_title = (FrameLayout) findViewById(R.id.ft_title);
v_spacing = (View) findViewById(R.id.v_spacing);
mWebView = findViewById(R.id.webView);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
params.topMargin = DpUtil.dp2px(1);
// mWebView.setLayoutParams(params);
@@ -100,6 +109,10 @@ public class WebViewActivity extends AbsActivity {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
L.e("H5-------->" + url);
if(isKefu(url)){
RouteUtil.forwardCustomerService(url);
return true;
}
if (url.startsWith(Constants.COPY_PREFIX)) {
String content = url.substring(Constants.COPY_PREFIX.length());
if (!TextUtils.isEmpty(content)) {
@@ -123,11 +136,17 @@ public class WebViewActivity extends AbsActivity {
if (url.contains("for")) {
mWebView.loadUrl("javascript:goAnchorTab()");
}
if(url.startsWith(HtmlConfig.SHOP)){
//商店页不做动态变换
return;
}
//真实屏幕高度-(ft_title的高度+导航栏高度)
//屏蔽掉是因为在线客服页面 AndroidBug5497Workaround会失效
int height = DeviceUtils.getScreenRealHeight(mContext) - DpUtil.dp2px(72) - getCurrentNavigationBarHeight(mContext);
if (!navigationGestureEnabled(mContext)) {
view.loadUrl("javascript:window.androidObject.setHeight(" + height + ",0,false)");
// view.loadUrl("javascript:window.androidObject.setHeight(" + height + ",0,false)");
}
}
@@ -181,12 +200,14 @@ public class WebViewActivity extends AbsActivity {
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setUseWideViewPort(true); // 关键点
mWebView.getSettings().setAllowFileAccess(true); // 允许访问文件
mWebView.setHorizontalScrollBarEnabled(false);
mWebView.setVerticalScrollBarEnabled(false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
mWebView.loadUrl(url);
AndroidBug5497Workaround.assistActivity(this);
AndroidBug5497Workaround.assistActivity(mWebView);
if (Constants.myIntoIndex == 2) {
ft_title.setVisibility(View.GONE);
@@ -200,6 +221,9 @@ public class WebViewActivity extends AbsActivity {
ft_title.setVisibility(View.VISIBLE);
v_spacing.setVisibility(View.GONE);
}
if(!StringUtil.isEmpty(url)&&url.startsWith(HtmlConfig.SHOP)){
ft_title.setVisibility(View.GONE);
}
}
@@ -397,6 +421,8 @@ public class WebViewActivity extends AbsActivity {
} else if (TextUtils.equals(event.getMethod(), "androidMethodLookToLive")) {
//看直播
gotoLive(event.getLiveId());
}else if (TextUtils.equals(event.getMethod(), "androidtoCommunityVideo")) {
RouteUtil.forwardCommunityActivity();
}
}

View File

@@ -0,0 +1,62 @@
package com.yunbao.common.adapter;
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
import java.util.TreeMap;
public class DebugDialogAdapter extends RecyclerView.Adapter<DebugDialogAdapter.DebugViewHolder> {
TreeMap<String, String> paramMap = new TreeMap<>();
private Context mContext;
public DebugDialogAdapter(Context mContext) {
this.mContext = mContext;
}
public void setParamMap(TreeMap<String, String> paramMap) {
Log.i("debug弹窗", "setParamMap: 添加值到view " + paramMap.size());
this.paramMap = paramMap;
notifyDataSetChanged();
}
@NonNull
@Override
public DebugViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new DebugViewHolder(new TextView(mContext));
}
@Override
public void onBindViewHolder(@NonNull DebugViewHolder holder, int position) {
List<String> list = new ArrayList<>(paramMap.keySet());
Log.i("debug弹窗", "onBindViewHolder: 添加值到view " + list.size() + "|" + paramMap.size());
holder.setData(list.get(position), paramMap.get(list.get(position)));
}
@Override
public int getItemCount() {
Log.i("debug弹窗", "getItemCount: " + paramMap.size());
return paramMap.size();
}
public class DebugViewHolder extends RecyclerView.ViewHolder {
public DebugViewHolder(@NonNull View itemView) {
super(itemView);
}
public void setData(String tag, String msg) {
Log.i("debug弹窗", "setData: 添加值到view " + tag + "|" + msg);
((TextView) itemView).setText(tag + ":" + msg);
((TextView) itemView).setTextColor(Color.BLACK);
}
}
}

View File

@@ -0,0 +1,93 @@
package com.yunbao.common.adapter;
import android.os.CountDownTimer;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.bean.sendMoneyLongListModel;
import com.yunbao.common.views.DragonSendMoneyListViewHolder;
import java.util.ArrayList;
import java.util.List;
public class DragonSendMoneyListAdapter extends RecyclerView.Adapter {
RecyclerView send_money_list;
boolean isAnchor;
SparseArray<CountDownTimer> countDownMap;
boolean isAttention;
public DragonSendMoneyListAdapter setAnchor(boolean anchor) {
isAnchor = anchor;
return this;
}
public DragonSendMoneyListAdapter setAttention(boolean attention) {
isAttention = attention;
return this;
}
public List<sendMoneyLongListModel> getMoneyLongListModels() {
return moneyLongListModels;
}
public DragonSendMoneyListAdapter(RecyclerView send_money_list) {
this.send_money_list = send_money_list;
countDownMap = new SparseArray<>();
}
List<sendMoneyLongListModel> moneyLongListModels = new ArrayList<>();
DragonSendMoneyListViewHolder.DragonSendMoneyListClicksCallBack callBack;
public void setCallBack(DragonSendMoneyListViewHolder.DragonSendMoneyListClicksCallBack callBack) {
this.callBack = callBack;
}
public void setMoneyLongListModels(List<sendMoneyLongListModel> models) {
moneyLongListModels.clear();
moneyLongListModels.addAll(models);
notifyDataSetChanged();
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View goodGiftsView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_dragon_send_money_list, parent, false);
return new DragonSendMoneyListViewHolder(goodGiftsView);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
DragonSendMoneyListViewHolder sendMoneyListViewHolder = (DragonSendMoneyListViewHolder) holder;
// sendMoneyLongListModel model = moneyLongListModels.get(position);
// long mPkTimeCount2 = Long.parseLong(model.getCountdown());
// long time = mPkTimeCount2 * 1000;
// if (sendMoneyListViewHolder.countDownTimer != null) {
// sendMoneyListViewHolder.countDownTimer.cancel();
// }
// if (time > 0) {
//
// }
sendMoneyListViewHolder.setData(moneyLongListModels.get(position), callBack, isAnchor,isAttention);
}
@Override
public int getItemCount() {
return moneyLongListModels.size();
}
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
}

View File

@@ -0,0 +1,112 @@
package com.yunbao.common.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.PagerSnapHelper;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
/**
* Created by cxf on 2018/11/28.
*/
public class ImagePreviewAdapter extends RecyclerView.Adapter<ImagePreviewAdapter.Vh> {
private LayoutInflater mInflater;
private ActionListener mActionListener;
private int mPageCount;
private LinearLayoutManager mLayoutManager;
private int mCurPosition;
public ImagePreviewAdapter(Context context, int pageCount) {
mPageCount = pageCount;
mInflater = LayoutInflater.from(context);
}
@NonNull
@Override
public Vh onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new Vh(mInflater.inflate(R.layout.item_preview_img, parent, false));
}
@Override
public void onBindViewHolder(@NonNull Vh vh, int position) {
vh.setData(position);
}
@Override
public int getItemCount() {
return mPageCount;
}
class Vh extends RecyclerView.ViewHolder {
ImageView mImg;
public Vh(View itemView) {
super(itemView);
mImg = (ImageView) itemView;
}
void setData(int position) {
if (mActionListener != null) {
mActionListener.loadImage(mImg, position);
}
}
}
public void setActionListener(ActionListener actionListener) {
mActionListener = actionListener;
}
public void setCurPosition(int curPosition) {
mCurPosition = curPosition;
if (mActionListener != null) {
mActionListener.onPageChanged(curPosition);
}
}
public int getCurPosition(){
return mCurPosition;
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
mLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
PagerSnapHelper pagerSnapHelper = new PagerSnapHelper();
pagerSnapHelper.attachToRecyclerView(recyclerView);
recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
int position = mLayoutManager.findFirstCompletelyVisibleItemPosition();
if (position >= 0 && mCurPosition != position) {
mCurPosition = position;
if (mActionListener != null) {
mActionListener.onPageChanged(position);
}
}
}
});
}
public interface ActionListener {
void onPageChanged(int position);
void loadImage(ImageView imageView, int position);
}
}

View File

@@ -18,10 +18,14 @@ import com.yunbao.common.views.InteractionGamesChildViewHolder;
import java.util.ArrayList;
import java.util.List;
/**
* 侧边栏游戏列表适配器,改游戏列表数量在这里改
*/
public class InteractionGamesAdapter extends RecyclerView.Adapter {
private Context mContext;
private boolean rigts;
private List<CustomSidebarChildModel> child = new ArrayList<>();
private List<CustomSidebarChildModel> srcChild = new ArrayList<>();
public InteractionGamesAdapter(Context mContext, boolean rigts) {
this.mContext = mContext;
@@ -46,7 +50,7 @@ public class InteractionGamesAdapter extends RecyclerView.Adapter {
long activityID = TextUtils.isEmpty(model.getSrc()) ? 0 : Long.parseLong(model.getSrc());
if (activityID != 0) {
Bus.get().post(new CustomDrawerPopupEvent()
.setDisMiss(true).setInteractionID(activityID).setInteraction(true).setChild(child));
.setDisMiss(true).setInteractionID(activityID).setInteraction(true).setChild(srcChild));
}
@@ -61,6 +65,7 @@ public class InteractionGamesAdapter extends RecyclerView.Adapter {
public void updateData(List<CustomSidebarChildModel> mChild) {
child.clear();
srcChild.clear();
if (mChild.size() > 8) {
for (int i = 0; i < 8; i++) {
child.add(mChild.get(i));
@@ -68,6 +73,7 @@ public class InteractionGamesAdapter extends RecyclerView.Adapter {
} else {
child.addAll(mChild);
}
srcChild.addAll(mChild);
notifyDataSetChanged();
}

View File

@@ -0,0 +1,46 @@
package com.yunbao.common.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.views.LiveBuyGuardPrivilegeViewHolder;
import java.util.ArrayList;
import java.util.List;
public class LiveBuyGuardPrivilegeAdapter extends RecyclerView.Adapter {
List<String> guardPrivilege = new ArrayList<>();
public void setGuardPrivilege(List<String> privilege) {
guardPrivilege.clear();
guardPrivilege.addAll(privilege);
notifyDataSetChanged();
}
public LiveBuyGuardPrivilegeAdapter(List<String> guardPrivilege) {
this.guardPrivilege = guardPrivilege;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View herdView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_buy_guard_privilege_item, parent, false);
return new LiveBuyGuardPrivilegeViewHolder(herdView);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
LiveBuyGuardPrivilegeViewHolder buyGuardSelectViewHolder = (LiveBuyGuardPrivilegeViewHolder) holder;
buyGuardSelectViewHolder.setData(guardPrivilege.get(position));
}
@Override
public int getItemCount() {
return guardPrivilege.size();
}
}

View File

@@ -0,0 +1,50 @@
package com.yunbao.common.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.bean.GuardPriceModel;
import com.yunbao.common.views.LiveBuyGuardSelectViewHolder;
import java.util.ArrayList;
import java.util.List;
public class LiveBuyGuardSelectAdapter extends RecyclerView.Adapter {
List<GuardPriceModel> price = new ArrayList<>();
GuardPriceModel model;
public LiveBuyGuardSelectAdapter(List<GuardPriceModel> price, GuardPriceModel mModel) {
this.price = price;
model = mModel;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View herdView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_buy_guard_slelect_item, parent, false);
return new LiveBuyGuardSelectViewHolder(herdView);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
LiveBuyGuardSelectViewHolder buyGuardSelectViewHolder = (LiveBuyGuardSelectViewHolder) holder;
buyGuardSelectViewHolder.setData(price.get(position), liveBuyGuardSelectClickListener,model);
}
@Override
public int getItemCount() {
return price.size();
}
private LiveBuyGuardSelectViewHolder.LiveBuyGuardSelectClickListener liveBuyGuardSelectClickListener;
public LiveBuyGuardSelectAdapter setLiveBuyGuardSelectClickListener(LiveBuyGuardSelectViewHolder.LiveBuyGuardSelectClickListener liveBuyGuardSelectClickListener) {
this.liveBuyGuardSelectClickListener = liveBuyGuardSelectClickListener;
return this;
}
}

View File

@@ -67,13 +67,14 @@ public class LiveNewRoleInteractionGamesAdapter extends RecyclerView.Adapter {
public void updateData(List<CustomSidebarChildModel> mChild) {
child.clear();
if (mChild.size() > 8) {
/* if (mChild.size() > 8) {
for (int i = 0; i < 8; i++) {
child.add(mChild.get(i));
}
} else {
child.addAll(mChild);
}
}*/
child.addAll(mChild);
notifyDataSetChanged();
}

View File

@@ -67,6 +67,13 @@ public abstract class RefreshAdapter<T> extends RecyclerView.Adapter {
}
}
public void refreshDel(){
if (mRecyclerView != null) {
notifyDataSetChanged();
}
}
public void refreshData(List<T> list) {
if (mRecyclerView != null && list != null) {
mList.clear();

View File

@@ -45,7 +45,6 @@ public class SudTitleSelectAdapter extends RecyclerView.Adapter {
}
}
});
}
@Override

View File

@@ -1,6 +1,9 @@
package com.yunbao.common.bean;
import com.alibaba.fastjson.annotation.JSONField;
import com.google.gson.annotations.SerializedName;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.WordUtil;
/**
* 机器人助手IM消息
@@ -21,6 +24,9 @@ public class AiAutomaticSpeechModel extends BaseModel {
//标签图片
@SerializedName("icon")
private String icon;
@SerializedName("icon_en")
@JSONField(name = "icon_en")
private String iconEn;
//气泡背景
@SerializedName("system_bubble")
private String systemBubble;
@@ -35,7 +41,7 @@ public class AiAutomaticSpeechModel extends BaseModel {
}
public String getAiName() {
return aiName+":";
return aiName + ":";
}
public AiAutomaticSpeechModel setAiName(String aiName) {
@@ -43,6 +49,15 @@ public class AiAutomaticSpeechModel extends BaseModel {
return this;
}
public String getIconEn() {
return iconEn;
}
public AiAutomaticSpeechModel setIconEn(String iconEn) {
this.iconEn = iconEn;
return this;
}
public String getContent() {
return content;
}
@@ -62,6 +77,9 @@ public class AiAutomaticSpeechModel extends BaseModel {
}
public String getIcon() {
if (!WordUtil.isNewZh() && !StringUtil.isEmpty(iconEn)) {
return iconEn;
}
return icon;
}

View File

@@ -20,6 +20,12 @@ public class AnchorRecommendModel extends BaseModel {
@SerializedName("red_packet_show")
private int showRedPacket = 0;//是否显示首页红包浮窗
//是否支持换一批0=不支持 1=支持
@SerializedName("live_battle_pass_show_status")
private int showWarOrder = 0;//是否显示首页戰令
//是否支持换一批0=不支持 1=支持
@SerializedName("up_show")
private int upShow = 0;
@SerializedName("list")
@@ -40,6 +46,14 @@ public class AnchorRecommendModel extends BaseModel {
return this;
}
public int getShowWarOrder() {
return showWarOrder;
}
public void setShowWarOrder(int showWarOrder) {
this.showWarOrder = showWarOrder;
}
public int getListShow() {
return listShow;
}

View File

@@ -0,0 +1,25 @@
package com.yunbao.common.bean;
public class AvatarBean extends BaseModel {
private String avatar;
private String avatarThumb;
public AvatarBean() {
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getAvatarThumb() {
return avatarThumb;
}
public void setAvatarThumb(String avatarThumb) {
this.avatarThumb = avatarThumb;
}
}

View File

@@ -34,6 +34,13 @@ public class BattlePassPoints extends BaseModel{
@SerializedName("exchange_status_remark")
private String exchangeMark;
@SerializedName("send_reward_type")
private int sendRewardType;
@SerializedName("send_gift_type")
private int sendGiftType;
@SerializedName("send_gift_needcoin")
private String sendGiftNeedcoin;
public BattlePassPoints() {
}
@@ -172,4 +179,54 @@ public class BattlePassPoints extends BaseModel{
public void setPointsThresholdText(String pointsThresholdText) {
this.pointsThresholdText = pointsThresholdText;
}
public int getSendRewardType() {
return sendRewardType;
}
public void setSendRewardType(int sendRewardType) {
this.sendRewardType = sendRewardType;
}
public int getSendGiftType() {
return sendGiftType;
}
public void setSendGiftType(int sendGiftType) {
this.sendGiftType = sendGiftType;
}
public String getSendGiftNeedcoin() {
return sendGiftNeedcoin;
}
public void setSendGiftNeedcoin(String sendGiftNeedcoin) {
this.sendGiftNeedcoin = sendGiftNeedcoin;
}
@Override
public String toString() {
return "BattlePassPoints{" +
"id=" + id +
", type=" + type +
", rewardsName='" + rewardsName + '\'' +
", rewardsId=" + rewardsId +
", imageUrl='" + imageUrl + '\'' +
", pointsThreshold='" + pointsThreshold + '\'' +
", pointsThresholdText='" + pointsThresholdText + '\'' +
", rewardsValue='" + rewardsValue + '\'' +
", battlePassLevel=" + battlePassLevel +
", exchangeQuantity=" + exchangeQuantity +
", liveBattlePassTypeId=" + liveBattlePassTypeId +
", description='" + description + '\'' +
", restrictTime=" + restrictTime +
", sort=" + sort +
", exchangeStatus=" + exchangeStatus +
", userQuintyCount=" + userQuintyCount +
", exchangeMark='" + exchangeMark + '\'' +
", sendRewardType=" + sendRewardType +
", sendGiftType=" + sendGiftType +
", sendRewardNeedcoin='" + sendGiftNeedcoin + '\'' +
'}';
}
}

View File

@@ -173,4 +173,27 @@ public class BattlePassUserInfoBean extends BaseModel{
public void setMaxLevel(int maxLevel) {
this.maxLevel = maxLevel;
}
@Override
public String toString() {
return "BattlePassUserInfoBean{" +
"uid='" + uid + '\'' +
", points=" + points +
", battlePassExp=" + battlePassExp +
", battlePassUserRecords1=" + battlePassUserRecords1 +
", battlePassUserRecords2=" + battlePassUserRecords2 +
", battlePassUserRecords3=" + battlePassUserRecords3 +
", level=" + level +
", lastLevelExp=" + lastLevelExp +
", nextLevelExp=" + nextLevelExp +
", id='" + id + '\'' +
", battlePassName='" + battlePassName + '\'' +
", startTime='" + startTime + '\'' +
", endTime='" + endTime + '\'' +
", battlePassStatus=" + battlePassStatus +
", maxLevelExp=" + maxLevelExp +
", maxLevel=" + maxLevel +
", live_battle_pass_type=" + live_battle_pass_type +
'}';
}
}

View File

@@ -0,0 +1,48 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class CheckUpgradesModel extends BaseModel {
/**
* {
* "level": 33, // 等级
* "rewards": [ // 奖励信息
* {
* "id": 1,
* "reward_name": "星之守護等級牌", // 奖励名称
* "image_path": "https://ceshi.yaoulive.com/data/upload/20240304/tequan_1.png" // 图片链接
* },
* {
* "id": 2,
* "reward_name": "人氣票",
* "image_path": "https://ceshi.yaoulive.com/data/upload/20240304/tequan_1.png"
* }
* ]
* }
* }
*/
@SerializedName("level")
private String level;
@SerializedName("rewards")
private List<RewardsModel> rewards;
public String getLevel() {
return level;
}
public CheckUpgradesModel setLevel(String level) {
this.level = level;
return this;
}
public List<RewardsModel> getRewards() {
return rewards;
}
public CheckUpgradesModel setRewards(List<RewardsModel> rewards) {
this.rewards = rewards;
return this;
}
}

View File

@@ -43,6 +43,17 @@ public class EnterRoomNewModel extends BaseModel {
private int quickGiftRemainingQuantity;//剩余的小PD礼物数量
@SerializedName("if_viewing_duration_complete")
private int ifViewingDurationComplete;//通过观看时间获取小PD礼物的次数
@SerializedName("sendMoneyLongStatus")
private SendMoneyLongStatusModel model;
public SendMoneyLongStatusModel getModel() {
return model;
}
public EnterRoomNewModel setModel(SendMoneyLongStatusModel model) {
this.model = model;
return this;
}
public int getQuickGiftRemainingQuantity() {
return quickGiftRemainingQuantity;

View File

@@ -0,0 +1,142 @@
package com.yunbao.common.bean;
import android.text.TextUtils;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class GuardDataTipModel extends BaseModel {
/**
* {
* "guard_name": "星之守護", // 守护名称
* "guard_type": 1, // 守护类型
* "close_img": "https://ceshi.yaoulive.com/data/upload/20240304/guard_xing_close.png", // 未开通图标
* "open_img": "https://ceshi.yaoulive.com/data/upload/20240304/guard_xing_open.png", // 已开通图标
* "is_open": true, // 是否开通 是.true 否.false
* "price": { // 价格
* {
* "opening_time": "1個月", // 开通时长
* "original_price": "188000", // 原价
* "discount_price": "", // 折扣价
* "discount": "", // 折扣
* "price_key": 1
* },
* {
* "opening_time": "3個月",
* "original_price": "564000",
* "discount_price": "398000",
* "discount": "7.1折",
* "price_key": 3
* },
* {
* "opening_time": "6個月",
* "original_price": "1128000",
* "discount_price": "738000",
* "discount": "6.5折",
* "price_key": 6
* },
* {
* "opening_time": "12個月",
* "original_price": "2256000",
* "discount_price": "1314000",
* "discount": "5.8折",
* "price_key": 12
* }
* ],
* "guard_privilege": [
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_1.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_2.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_3.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_1.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_2.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_3.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_1.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_1.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_2.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_3.png"
* ]
* }
*/
@SerializedName("guard_name")
private String guardName;
@SerializedName("guard_type")
private int guardType;
@SerializedName("close_img")
private String closeImg;
@SerializedName("open_img")
private String openImg;
@SerializedName("is_open")
private String isOpen;
@SerializedName("price")
private List<GuardPriceModel> price;
@SerializedName("guard_privilege")
private List<String> guardPrivilege;
public String getGuardName() {
return guardName;
}
public GuardDataTipModel setGuardName(String guardName) {
this.guardName = guardName;
return this;
}
public int getGuardType() {
return guardType;
}
public GuardDataTipModel setGuardType(int guardType) {
this.guardType = guardType;
return this;
}
public String getCloseImg() {
return closeImg;
}
public GuardDataTipModel setCloseImg(String closeImg) {
this.closeImg = closeImg;
return this;
}
public String getOpenImg() {
return openImg;
}
public GuardDataTipModel setOpenImg(String openImg) {
this.openImg = openImg;
return this;
}
public boolean isOpen() {
return TextUtils.equals(isOpen, "1");
}
public String getIsOpen() {
return isOpen;
}
public GuardDataTipModel setIsOpen(String isOpen) {
this.isOpen = isOpen;
return this;
}
public List<GuardPriceModel> getPrice() {
return price;
}
public GuardDataTipModel setPrice(List<GuardPriceModel> price) {
this.price = price;
return this;
}
public List<String> getGuardPrivilege() {
return guardPrivilege;
}
public GuardDataTipModel setGuardPrivilege(List<String> guardPrivilege) {
this.guardPrivilege = guardPrivilege;
return this;
}
}

View File

@@ -0,0 +1,31 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class GuardGetGuardOpenInfoModel extends BaseModel {
@SerializedName("user_info")
private GuardUserInfoModel userInfo;
@SerializedName("guard_data")
private List<GuardDataTipModel> guardData;
public GuardUserInfoModel getUserInfo() {
return userInfo;
}
public GuardGetGuardOpenInfoModel setUserInfo(GuardUserInfoModel userInfo) {
this.userInfo = userInfo;
return this;
}
public List<GuardDataTipModel> getGuardData() {
return guardData;
}
public GuardGetGuardOpenInfoModel setGuardData(List<GuardDataTipModel> guardData) {
this.guardData = guardData;
return this;
}
}

View File

@@ -0,0 +1,142 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class GuardGetGuardUserInfoModel extends BaseModel {
/**
* "info": {
* "uid": "98923", // 用户ID
* "user_avatar": "https://downs.yaoulive.com/20230706/0572c0f694601f4d2695cd210effbe93.jpeg?imageView2/2/w/600/h/600", // 用户头像链接
* "liveuid": "98889", // 主播ID
* "live_avatar": "https://ceshi.yaoulive.com/data/upload/20230522/20230526102906.png", // 主播头像链接
* "guard_type": 0, // 守护类型 0.未开通 1.星之守护 2.王之守护 3.神之守护
* "exp": 0, // 守护经验值
* "level": 0, // 守护等级
* "endtime": 0, // 到期时间
* "user_language": "chinese",
* "live_language": "chinese"
* }
* }
*/
@SerializedName("uid")
private String uid;
@SerializedName("user_avatar")
private String userAvatar;
@SerializedName("liveuid")
private String liveuid;
@SerializedName("live_avatar")
private String liveAvatar;
@SerializedName("guard_type")
private int guardType;
@SerializedName("exp")
private String exp;
@SerializedName("level")
private int level;
@SerializedName("endtime")
private long endtime;
@SerializedName("user_language")
private String userLanguage;
@SerializedName("live_language")
private String liveLanguage;
@SerializedName("is_open")
private String isOpen;
public String getIsOpen() {
return isOpen;
}
public GuardGetGuardUserInfoModel setIsOpen(String isOpen) {
this.isOpen = isOpen;
return this;
}
public String getUid() {
return uid;
}
public GuardGetGuardUserInfoModel setUid(String uid) {
this.uid = uid;
return this;
}
public String getUserAvatar() {
return userAvatar;
}
public GuardGetGuardUserInfoModel setUserAvatar(String userAvatar) {
this.userAvatar = userAvatar;
return this;
}
public String getLiveuid() {
return liveuid;
}
public GuardGetGuardUserInfoModel setLiveuid(String liveuid) {
this.liveuid = liveuid;
return this;
}
public String getLiveAvatar() {
return liveAvatar;
}
public GuardGetGuardUserInfoModel setLiveAvatar(String liveAvatar) {
this.liveAvatar = liveAvatar;
return this;
}
public int getGuardType() {
return guardType;
}
public GuardGetGuardUserInfoModel setGuardType(int guardType) {
this.guardType = guardType;
return this;
}
public String getExp() {
return exp;
}
public GuardGetGuardUserInfoModel setExp(String exp) {
this.exp = exp;
return this;
}
public int getLevel() {
return level;
}
public GuardGetGuardUserInfoModel setLevel(int level) {
this.level = level;
return this;
}
public long getEndtime() {
return endtime;
}
public GuardGetGuardUserInfoModel setEndtime(long endtime) {
this.endtime = endtime;
return this;
}
public String getUserLanguage() {
return userLanguage;
}
public GuardGetGuardUserInfoModel setUserLanguage(String userLanguage) {
this.userLanguage = userLanguage;
return this;
}
public String getLiveLanguage() {
return liveLanguage;
}
public GuardGetGuardUserInfoModel setLiveLanguage(String liveLanguage) {
this.liveLanguage = liveLanguage;
return this;
}
}

View File

@@ -0,0 +1,145 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class GuardMaturityDateRemindModel extends BaseModel{
@SerializedName("_method_")
private String method;
@SerializedName("action")
private String action;
@SerializedName("is_overdue")
private int isOverdue;
@SerializedName("days")
private int days;
@SerializedName("uid")
private String uid;
@SerializedName("liveuid")
private String liveuid;
@SerializedName("user_avatar")
private String userAvatar;
@SerializedName("user_nicename")
private String userNicename;
@SerializedName("live_avatar")
private String liveAvatar;
@SerializedName("live_nicename")
private String liveNicename;
@SerializedName("ct")
private String ct;
@SerializedName("guard_type")
private String guardType;
public String getGuardType() {
return guardType;
}
public GuardMaturityDateRemindModel setGuardType(String guardType) {
this.guardType = guardType;
return this;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public int getIsOverdue() {
return isOverdue;
}
public void setIsOverdue(int isOverdue) {
this.isOverdue = isOverdue;
}
public int getDays() {
return days;
}
public void setDays(int days) {
this.days = days;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getLiveuid() {
return liveuid;
}
public void setLiveuid(String liveuid) {
this.liveuid = liveuid;
}
public String getUserAvatar() {
return userAvatar;
}
public void setUserAvatar(String userAvatar) {
this.userAvatar = userAvatar;
}
public String getUserNicename() {
return userNicename;
}
public void setUserNicename(String userNicename) {
this.userNicename = userNicename;
}
public String getLiveAvatar() {
return liveAvatar;
}
public void setLiveAvatar(String liveAvatar) {
this.liveAvatar = liveAvatar;
}
public String getLiveNicename() {
return liveNicename;
}
public void setLiveNicename(String liveNicename) {
this.liveNicename = liveNicename;
}
public String getCt() {
return ct;
}
public void setCt(String ct) {
this.ct = ct;
}
@Override
public String toString() {
return "GuardMaturityDateRemindModel{" +
"method='" + method + '\'' +
", action='" + action + '\'' +
", isOverdue=" + isOverdue +
", days=" + days +
", uid='" + uid + '\'' +
", liveuid='" + liveuid + '\'' +
", userAvatar='" + userAvatar + '\'' +
", userNicename='" + userNicename + '\'' +
", liveAvatar='" + liveAvatar + '\'' +
", liveNicename='" + liveNicename + '\'' +
", ct='" + ct + '\'' +
'}';
}
}

View File

@@ -8,6 +8,17 @@ public class GuardModel extends BaseModel {
private String type;
@SerializedName("endtime")
private String endtime;
@SerializedName("guard_type")
private String guardType;
public String getGuardType() {
return guardType;
}
public GuardModel setGuardType(String guardType) {
this.guardType = guardType;
return this;
}
public String getType() {
return type;

View File

@@ -0,0 +1,70 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class GuardPriceModel extends BaseModel {
/**
* {
* "opening_time": "1個月", // 开通时长
* "original_price": "188000", // 原价
* "discount_price": "", // 折扣价
* "discount": "", // 折扣
* "price_key": 1
* }
*/
@SerializedName("opening_time")
private String openingTime;
@SerializedName("original_price")
private String originalPrice;
@SerializedName("discount_price")
private String discountPrice;
@SerializedName("discount")
private String discount;
@SerializedName("price_key")
private int priceKey;
public String getOpeningTime() {
return openingTime;
}
public GuardPriceModel setOpeningTime(String openingTime) {
this.openingTime = openingTime;
return this;
}
public String getOriginalPrice() {
return originalPrice;
}
public GuardPriceModel setOriginalPrice(String originalPrice) {
this.originalPrice = originalPrice;
return this;
}
public String getDiscountPrice() {
return discountPrice;
}
public GuardPriceModel setDiscountPrice(String discountPrice) {
this.discountPrice = discountPrice;
return this;
}
public String getDiscount() {
return discount;
}
public GuardPriceModel setDiscount(String discount) {
this.discount = discount;
return this;
}
public int getPriceKey() {
return priceKey;
}
public GuardPriceModel setPriceKey(int priceKey) {
this.priceKey = priceKey;
return this;
}
}

View File

@@ -0,0 +1,142 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class GuardUserInfoModel extends BaseModel {
/**
* {
* "user_info": { // 用户开通信息
* "uid": "98888", // 用户ID
* "user_avatar": "https://downs.yaoulive.com/mannine.png", // 用户头像链接
* "liveuid": "98889", // 主播ID
* "live_avatar": "https://ceshi.yaoulive.com/data/upload/20230522/20230526102906.png", // 主播头像链接
* "guard_type": 1, // 守护类型
* "exp": 0, // 经验值
* "level": 1, // 等级
* "endtime": 1710145929, // 到期时间
* "user_language": "chinese", // 用户语言
* "live_language": "chinese" // 主播语言
* }
*/
@SerializedName("uid")
private String uid;
@SerializedName("user_avatar")
private String userAvatar;
@SerializedName("liveuid")
private String liveuid;
@SerializedName("live_avatar")
private String liveAvatar;
@SerializedName("guard_type")
private int guardType;
@SerializedName("exp")
private String exp;
@SerializedName("level")
private String level;
@SerializedName("endtime")
private String endtime;
@SerializedName("user_language")
private String userLanguage;
@SerializedName("live_language")
private String liveLanguage;
@SerializedName("is_open")
private String isOpen;
public String getIsOpen() {
return isOpen;
}
public GuardUserInfoModel setIsOpen(String isOpen) {
this.isOpen = isOpen;
return this;
}
public String getUid() {
return uid;
}
public GuardUserInfoModel setUid(String uid) {
this.uid = uid;
return this;
}
public String getUserAvatar() {
return userAvatar;
}
public GuardUserInfoModel setUserAvatar(String userAvatar) {
this.userAvatar = userAvatar;
return this;
}
public String getLiveuid() {
return liveuid;
}
public GuardUserInfoModel setLiveuid(String liveuid) {
this.liveuid = liveuid;
return this;
}
public String getLiveAvatar() {
return liveAvatar;
}
public GuardUserInfoModel setLiveAvatar(String liveAvatar) {
this.liveAvatar = liveAvatar;
return this;
}
public int getGuardType() {
return guardType;
}
public GuardUserInfoModel setGuardType(int guardType) {
this.guardType = guardType;
return this;
}
public String getExp() {
return exp;
}
public GuardUserInfoModel setExp(String exp) {
this.exp = exp;
return this;
}
public String getLevel() {
return level;
}
public GuardUserInfoModel setLevel(String level) {
this.level = level;
return this;
}
public String getEndtime() {
return endtime;
}
public GuardUserInfoModel setEndtime(String endtime) {
this.endtime = endtime;
return this;
}
public String getUserLanguage() {
return userLanguage;
}
public GuardUserInfoModel setUserLanguage(String userLanguage) {
this.userLanguage = userLanguage;
return this;
}
public String getLiveLanguage() {
return liveLanguage;
}
public GuardUserInfoModel setLiveLanguage(String liveLanguage) {
this.liveLanguage = liveLanguage;
return this;
}
}

View File

@@ -7,12 +7,21 @@ import java.util.Map;
public class LiveBattlePassRewardsBean extends BaseModel{
private int level;
private int is_received;
private List<BattlePassType> live_battle_pass_type;
private Map<Integer,Map<Integer,LiveBattlePassReward>> live_battle_pass_rewards;
public LiveBattlePassRewardsBean() {
}
public int getIs_received() {
return is_received;
}
public void setIs_received(int is_received) {
this.is_received = is_received;
}
public int getLevel() {
return level;
}
@@ -97,6 +106,15 @@ public class LiveBattlePassRewardsBean extends BaseModel{
private String rewardName;
@SerializedName("image_url")
private String imageUrl;
@SerializedName("send_reward_type")
private int sendRewardType;
@SerializedName("send_gift_type")
private int sendGiftType;
@SerializedName("send_reward_needcoin")
private String sendRewardNeedcoin;
@SerializedName("send_reward_restrict_time")
private String sendRewardRestrictTime;
private int lock;
private int received;
@@ -158,5 +176,54 @@ public class LiveBattlePassRewardsBean extends BaseModel{
public void setReceived(int received) {
this.received = received;
}
public int getSendRewardType() {
return sendRewardType;
}
public void setSendRewardType(int sendRewardType) {
this.sendRewardType = sendRewardType;
}
public int getSendGiftType() {
return sendGiftType;
}
public void setSendGiftType(int sendGiftType) {
this.sendGiftType = sendGiftType;
}
public String getSendRewardNeedcoin() {
return sendRewardNeedcoin;
}
public void setSendRewardNeedcoin(String sendRewardNeedcoin) {
this.sendRewardNeedcoin = sendRewardNeedcoin;
}
public String getSendRewardRestrictTime() {
return sendRewardRestrictTime;
}
public void setSendRewardRestrictTime(String sendRewardRestrictTime) {
this.sendRewardRestrictTime = sendRewardRestrictTime;
}
@Override
public String toString() {
return "LiveBattlePassReward{" +
"id=" + id +
", liveBattlePassLevel=" + liveBattlePassLevel +
", liveBattlePassTypeId=" + liveBattlePassTypeId +
", rewardName='" + rewardName + '\'' +
", imageUrl='" + imageUrl + '\'' +
", sendRewardType=" + sendRewardType +
", sendGiftType=" + sendGiftType +
", sendRewardNeedcoin='" + sendRewardNeedcoin + '\'' +
", sendRewardRestrictTime='" + sendRewardRestrictTime + '\'' +
", lock=" + lock +
", received=" + received +
'}';
}
}
}

View File

@@ -56,6 +56,18 @@ public class LiveBean implements Parcelable {
private int redPacketStatus;
@SerializedName("giftId")
private String giftId;
@SerializedName("sendMoneyLongStatus ")
private int sendMoneyLongStatus ;
public int getSendMoneyLongStatus() {
return sendMoneyLongStatus;
}
public LiveBean setSendMoneyLongStatus(int sendMoneyLongStatus) {
this.sendMoneyLongStatus = sendMoneyLongStatus;
return this;
}
private Map<String,String> params;//用于跳转Activity时扩展参数从首页Banner跳转到直播间时需要根据携带参数判断是否弹出新人特惠对话框
public String getRecommendCardIconSizeTwo() {

View File

@@ -20,6 +20,14 @@ public class LiveClassBean {
@SerializedName("channel_show")
private int channel_show;
public LiveClassBean() {
}
public LiveClassBean(String chinese, String english) {
this.chinese = chinese;
this.english = english;
}
public String getChinese() {
return chinese;
}

View File

@@ -3,6 +3,7 @@ package com.yunbao.common.bean;
import android.view.View;
import com.alibaba.fastjson.annotation.JSONField;
import com.google.gson.annotations.SerializedName;
/**
* Created by cxf on 2018/10/12.
@@ -18,6 +19,8 @@ public class LiveGiftBean {
// public static final int MARK_LUCK = 3;
private int id;
@SerializedName("gift_id")
private int gift_id;//包裹礼物id
private int type;//0 普通礼物 1是贵族 2守护 3粉丝团 5盲盒礼物
private int mark;// 0 普通 1热门 2守护 3幸运
private String name;
@@ -34,6 +37,7 @@ public class LiveGiftBean {
private String isweek;
private String end_time;
private String tag;
private boolean isPageGift;
@JSONField(name = "blind_box_type")
private int blind_box_type = 0;
//礼物角标
@@ -71,6 +75,14 @@ public class LiveGiftBean {
@JSONField(name = "blind_box_ticket_id")
private int blindBoxTicketId;
public boolean isPageGift() {
return isPageGift;
}
public void setPageGift(boolean pageGift) {
isPageGift = pageGift;
}
public int getBlindBoxTicketId() {
return blindBoxTicketId;
}
@@ -80,6 +92,14 @@ public class LiveGiftBean {
return this;
}
public int getGift_id() {
return gift_id;
}
public void setGift_id(int gift_id) {
this.gift_id = gift_id;
}
public int getBlindBoxTicket() {
return blindBoxTicket;
}

View File

@@ -0,0 +1,37 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class NewGuardLevelModel extends BaseModel{
@SerializedName("guard_type")
private int guardType;
@SerializedName("cn")
private String cn;
@SerializedName("en")
private String en;
public int getGuardType() {
return guardType;
}
public void setGuardType(int guardType) {
this.guardType = guardType;
}
public String getCn() {
return cn;
}
public void setCn(String cn) {
this.cn = cn;
}
public String getEn() {
return en;
}
public void setEn(String en) {
this.en = en;
}
}

View File

@@ -96,6 +96,9 @@ public class OpenAdModel extends BaseModel {
}
return url + "?t=" + System.currentTimeMillis() / 1000;
}
public String getOriginalUrl(){
return url;
}
public void setUrl(String url) {
this.url = url;

View File

@@ -49,6 +49,16 @@ public class RedPacketInfoModel extends BaseModel {
//超级红包ID
@SerializedName("super_jackpot_id")
private String superJackpotId;
@SerializedName("red_packet_type")
private int redPacketType;// 1.普通红包 2.特殊红包
public int getRedPacketType() {
return redPacketType;
}
public void setRedPacketType(int redPacketType) {
this.redPacketType = redPacketType;
}
public String getSuperJackpotId() {
return superJackpotId;

View File

@@ -0,0 +1,39 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class RewardsModel extends BaseModel {
@SerializedName("id")
private int id;
@SerializedName("reward_name")
private String rewardName;
@SerializedName("image_path")
private String imagePath;
public int getId() {
return id;
}
public RewardsModel setId(int id) {
this.id = id;
return this;
}
public String getRewardName() {
return rewardName;
}
public RewardsModel setRewardName(String rewardName) {
this.rewardName = rewardName;
return this;
}
public String getImagePath() {
return imagePath;
}
public RewardsModel setImagePath(String imagePath) {
this.imagePath = imagePath;
return this;
}
}

View File

@@ -0,0 +1,27 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class RoomMicStatusModel extends BaseModel{
@SerializedName("mic_status")
private String micStatus;
@SerializedName("im_status")
private String imStatus;
public String getMicStatus() {
return micStatus;
}
public void setMicStatus(String micStatus) {
this.micStatus = micStatus;
}
public String getImStatus() {
return imStatus;
}
public void setImStatus(String imStatus) {
this.imStatus = imStatus;
}
}

View File

@@ -0,0 +1,137 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class SendMoneyLongModel extends BaseModel {
/**
* {
* "_method_": "SendMoneyLong",
* "action": "0",
* "uid": "98888",
* "user_nicename": "周末暴打小朋友",
* "user_avatar": "https://downs.yaoulive.com/mannine.png",
* "liveuid": "98889",
* "add_time": 1710318757,
* "gold_num": "5000"
* "countdown": 300 // 倒计时
* "send_money_long_key": "1710384258446",
* }
*/
@SerializedName("_method_")
private String method;
@SerializedName("action")
private String action;
@SerializedName("uid")
private String uid;
@SerializedName("user_nicename")
private String userNicename;
@SerializedName("user_avatar")
private String userAvatar;
@SerializedName("liveuid")
private String liveuid;
@SerializedName("add_time")
private String addTime;
@SerializedName("gold_num")
private String goldNum;
@SerializedName("countdown")
private String countdown;
@SerializedName("send_money_long_key")
private String sendMoneyLongKey;
public String getSendMoneyLongKey() {
return sendMoneyLongKey;
}
public SendMoneyLongModel setSendMoneyLongKey(String sendMoneyLongKey) {
this.sendMoneyLongKey = sendMoneyLongKey;
return this;
}
public String getCountdown() {
return countdown;
}
public SendMoneyLongModel setCountdown(String countdown) {
this.countdown = countdown;
return this;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getUserNicename() {
return userNicename;
}
public void setUserNicename(String userNicename) {
this.userNicename = userNicename;
}
public String getUserAvatar() {
return userAvatar;
}
public void setUserAvatar(String userAvatar) {
this.userAvatar = userAvatar;
}
public String getLiveuid() {
return liveuid;
}
public void setLiveuid(String liveuid) {
this.liveuid = liveuid;
}
public String getAddTime() {
return addTime;
}
public void setAddTime(String addTime) {
this.addTime = addTime;
}
public String getGoldNum() {
return goldNum;
}
public void setGoldNum(String goldNum) {
this.goldNum = goldNum;
}
@Override
public String toString() {
return "SendMoneyLongModel{" +
"method='" + method + '\'' +
", action='" + action + '\'' +
", uid='" + uid + '\'' +
", userNicename='" + userNicename + '\'' +
", userAvatar='" + userAvatar + '\'' +
", liveuid='" + liveuid + '\'' +
", addTime=" + addTime +
", goldNum='" + goldNum + '\'' +
'}';
}
}

View File

@@ -0,0 +1,154 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class SendMoneyLongStatusModel extends BaseModel {
/**
* "sendMoneyLongStatus": { // 未查询到数据时为空数组
* "liveuid": "98889", // 主播ID
* "uid": "98888", // 发起用户ID
* "addtime": "1710384258446", // 开始时间 毫秒时间戳
* "gold_num": "5000", // 金豆数量
* "user_nicename": "周末暴打小朋友", // 用户昵称
* "user_avatar": "https://downs.yaoulive.com/mannine.png", // 用户头像链接
* "countdown": 300 // 倒计时
* "start_status": false,
* "start_time": "",
* "send_money_long_key": "1710397575473",
* "participate": 0,
* "add_time": "1710397575473"
* }
*/
@SerializedName("liveuid")
private String liveuid;
@SerializedName("uid")
private String uid;
@SerializedName("addtime")
private String addtime;
@SerializedName("gold_num")
private String goldNum;
@SerializedName("user_nicename")
private String userNicename;
@SerializedName("user_avatar")
private String userAvatar;
@SerializedName("countdown")
private String countdown;
@SerializedName("start_status")
private String startStatus;
@SerializedName("start_time")
private String startTime;
@SerializedName("send_money_long_key")
private String sendMoneyLongKey;
@SerializedName("participate")
private String participate;
@SerializedName("add_time")
private String addTime;
public String getLiveuid() {
return liveuid;
}
public SendMoneyLongStatusModel setLiveuid(String liveuid) {
this.liveuid = liveuid;
return this;
}
public String getUid() {
return uid;
}
public SendMoneyLongStatusModel setUid(String uid) {
this.uid = uid;
return this;
}
public String getAddtime() {
return addtime;
}
public SendMoneyLongStatusModel setAddtime(String addtime) {
this.addtime = addtime;
return this;
}
public String getGoldNum() {
return goldNum;
}
public SendMoneyLongStatusModel setGoldNum(String goldNum) {
this.goldNum = goldNum;
return this;
}
public String getUserNicename() {
return userNicename;
}
public SendMoneyLongStatusModel setUserNicename(String userNicename) {
this.userNicename = userNicename;
return this;
}
public String getUserAvatar() {
return userAvatar;
}
public SendMoneyLongStatusModel setUserAvatar(String userAvatar) {
this.userAvatar = userAvatar;
return this;
}
public String getCountdown() {
return countdown;
}
public SendMoneyLongStatusModel setCountdown(String countdown) {
this.countdown = countdown;
return this;
}
public String getStartStatus() {
return startStatus;
}
public SendMoneyLongStatusModel setStartStatus(String startStatus) {
this.startStatus = startStatus;
return this;
}
public String getStartTime() {
return startTime;
}
public SendMoneyLongStatusModel setStartTime(String startTime) {
this.startTime = startTime;
return this;
}
public String getSendMoneyLongKey() {
return sendMoneyLongKey;
}
public SendMoneyLongStatusModel setSendMoneyLongKey(String sendMoneyLongKey) {
this.sendMoneyLongKey = sendMoneyLongKey;
return this;
}
public String getParticipate() {
return participate;
}
public SendMoneyLongStatusModel setParticipate(String participate) {
this.participate = participate;
return this;
}
public String getAddTime() {
return addTime;
}
public SendMoneyLongStatusModel setAddTime(String addTime) {
this.addTime = addTime;
return this;
}
}

View File

@@ -6,6 +6,17 @@ public class SudGameChatImModel extends BaseModel {
//文字消息
private String textMessage;
private boolean welcomMessage;
public boolean isWelcomMessage() {
return welcomMessage;
}
public SudGameChatImModel setWelcomMessage(boolean welcomMessage) {
this.welcomMessage = welcomMessage;
return this;
}
public String getNickname() {
return nickname;
}

View File

@@ -1,5 +1,7 @@
package com.yunbao.common.bean;
import android.text.TextUtils;
import com.google.gson.annotations.SerializedName;
public class SudGameUserModel extends BaseModel {
@@ -14,6 +16,21 @@ public class SudGameUserModel extends BaseModel {
private int id;
@SerializedName("mic_status")
private int micStatus; //麦克风状态 2.打开麦克风 3.关闭麦克风
@SerializedName("game_status")
private String gameStatus;// 游戏状态 1.未在游戏状态 2.游戏中;
public String getGameStatus() {
return gameStatus;
}
public boolean isGameIng() {
return TextUtils.equals(getGameStatus(), "2") ;
}
public SudGameUserModel setGameStatus(String gameStatus) {
this.gameStatus = gameStatus;
return this;
}
private boolean mute = false;

View File

@@ -865,11 +865,20 @@ public class UserBean implements Parcelable {
private String medal;
private String bubble;
private String medal_new;
private String medal_new_en;
public String getMedal_new() {
return medal_new;
}
public String getMedal_new_en() {
return medal_new_en;
}
public void setMedal_new_en(String medal_new_en) {
this.medal_new_en = medal_new_en;
}
public void setMedal_new(String medal_new) {
this.medal_new = medal_new;
}

View File

@@ -0,0 +1,154 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class sendMoneyLongListModel extends BaseModel {
/**
* {
* "liveuid": "98889", // 主播ID
* "uid": "98888", // 用户ID
* "addtime": "1710397350011", // 创建时间 毫秒时间戳
* "gold_num": "5000", // 金豆数量
* "user_nicename": "周末暴打小朋友", // 用户昵称
* "user_avatar": "https://downs.yaoulive.com/mannine.png", // 用户头像
* "countdown": 300, // 倒计时
* "start_status": false,
* "start_time": "",
* "send_money_long_key": "1710397485729",
* "participate": 0, // 是否参与活动 0.未参与 1.已参与
* "add_time": "1710397485729"
* }
*/
@SerializedName("liveuid")
private String liveuid;
@SerializedName("uid")
private String uid;
@SerializedName("addtime")
private String addtime;
@SerializedName("gold_num")
private String goldNum;
@SerializedName("user_nicename")
private String userNicename;
@SerializedName("user_avatar")
private String userAvatar;
@SerializedName("countdown")
private String countdown;
@SerializedName("start_status")
private boolean startStatus;
@SerializedName("start_time")
private String startTime;
@SerializedName("send_money_long_key")
private String sendMoneyLongKey;
@SerializedName("participate")
private String participate;
@SerializedName("add_time")
private String addTime;
public String getLiveuid() {
return liveuid;
}
public sendMoneyLongListModel setLiveuid(String liveuid) {
this.liveuid = liveuid;
return this;
}
public String getUid() {
return uid;
}
public sendMoneyLongListModel setUid(String uid) {
this.uid = uid;
return this;
}
public String getAddtime() {
return addtime;
}
public sendMoneyLongListModel setAddtime(String addtime) {
this.addtime = addtime;
return this;
}
public String getGoldNum() {
return goldNum;
}
public sendMoneyLongListModel setGoldNum(String goldNum) {
this.goldNum = goldNum;
return this;
}
public String getUserNicename() {
return userNicename;
}
public sendMoneyLongListModel setUserNicename(String userNicename) {
this.userNicename = userNicename;
return this;
}
public String getUserAvatar() {
return userAvatar;
}
public sendMoneyLongListModel setUserAvatar(String userAvatar) {
this.userAvatar = userAvatar;
return this;
}
public String getCountdown() {
return countdown;
}
public sendMoneyLongListModel setCountdown(String countdown) {
this.countdown = countdown;
return this;
}
public boolean isStartStatus() {
return startStatus;
}
public sendMoneyLongListModel setStartStatus(boolean startStatus) {
this.startStatus = startStatus;
return this;
}
public String getStartTime() {
return startTime;
}
public sendMoneyLongListModel setStartTime(String startTime) {
this.startTime = startTime;
return this;
}
public String getSendMoneyLongKey() {
return sendMoneyLongKey;
}
public sendMoneyLongListModel setSendMoneyLongKey(String sendMoneyLongKey) {
this.sendMoneyLongKey = sendMoneyLongKey;
return this;
}
public String getParticipate() {
return participate;
}
public sendMoneyLongListModel setParticipate(String participate) {
this.participate = participate;
return this;
}
public String getAddTime() {
return addTime;
}
public sendMoneyLongListModel setAddTime(String addTime) {
this.addTime = addTime;
return this;
}
}

View File

@@ -14,7 +14,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import com.lxj.xpopup.core.CenterPopupView;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.R;
import com.yunbao.common.bean.CoolConfig;
import com.yunbao.common.http.base.HttpCallback;

View File

@@ -45,6 +45,9 @@ import java.util.List;
import java.util.Locale;
import java.util.Random;
/**
* 半屏创建游戏房间
*/
public class CreateSudGamePopup extends BottomPopupView {
private List<CustomSidebarChildModel> customSidebarChildModels = new ArrayList<>();
private TextView createGameType, selectCurrencyType;
@@ -312,20 +315,50 @@ public class CreateSudGamePopup extends BottomPopupView {
animator.setDuration(animDuration);
animator.setInterpolator(new LinearInterpolator());
animator.start();
XPopup.Builder builder = new XPopup.Builder(getContext()).atView(findViewById(R.id.currency_type));
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(getContext(), 5, currencyTypeName,isYuanbao)
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
closeAnimSudGameListEvent();
}
})
)
.show();
if (hasMoveUp) {
InputMethodManager imm = getSystemService(getContext(), InputMethodManager.class);
if (imm != null) {
imm.hideSoftInputFromWindow(roomName.getWindowToken(), 0);
imm.hideSoftInputFromWindow(gameSill.getWindowToken(), 0);
}
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
XPopup.Builder builder = new XPopup.Builder(getContext()).atView(findViewById(R.id.currency_type));
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(getContext(), 5, currencyTypeName,isYuanbao)
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
closeAnimSudGameListEvent();
}
})
)
.show();
}
}, 500);
}else {
XPopup.Builder builder = new XPopup.Builder(getContext()).atView(findViewById(R.id.currency_type));
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(getContext(), 5, currencyTypeName,isYuanbao)
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
closeAnimSudGameListEvent();
}
})
)
.show();
}
}
});
}

View File

@@ -0,0 +1,119 @@
package com.yunbao.common.dialog;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.ViewGroup;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.lzf.easyfloat.EasyFloat;
import com.lzf.easyfloat.enums.ShowPattern;
import com.lzf.easyfloat.interfaces.OnPermissionResult;
import com.lzf.easyfloat.permission.PermissionUtils;
import com.yunbao.common.adapter.DebugDialogAdapter;
import com.yunbao.common.utils.AppManager;
import com.yunbao.common.utils.ToastUtil;
import java.util.Timer;
import java.util.TimerTask;
import java.util.TreeMap;
public class DebugDialog {
RecyclerView recyclerView;
TreeMap<String, String> params;
DebugDialogAdapter adapter;
private static DebugDialog debugDialog;
Context mContext;
public static DebugDialog getInstance() {
if (debugDialog == null) {
debugDialog = new DebugDialog();
}
return debugDialog;
}
public DebugDialog clear() {
params.clear();
return this;
}
public void setParams(String tag, String msg) {
Log.i("debug弹窗", "setParams: "+tag+"|"+msg);
params.put(tag, msg);
if (adapter != null)
adapter.setParamMap(params);
}
private DebugDialog() {
if(params==null) {
Log.i("debug弹窗", "DebugDialog: 初始化参数");
params = new TreeMap<>();
}
init();
}
private void init(){
this.mContext = AppManager.getInstance().getMainActivity();
if (mContext == null) {
startWaitMainActivity();
return;
}
if (PermissionUtils.checkPermission(mContext)) {
createView();
} else {
PermissionUtils.requestPermission((Activity) mContext, new OnPermissionResult() {
@Override
public void permissionResult(boolean b) {
ToastUtil.show("悬浮权限" + b);
if (b) {
createView();
}
}
});
}
// createView();
}
private void startWaitMainActivity() {
new Timer().schedule(new TimerTask() {
@Override
public void run() {
Log.i("debug弹窗", "run: "+AppManager.getInstance().getMainActivity());
if (AppManager.getInstance().getMainActivity() != null) {
init();
cancel();
}
}
}, 0,1000);
}
protected void createView() {
recyclerView = new RecyclerView(mContext);
adapter = new DebugDialogAdapter(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
recyclerView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
recyclerView.setAdapter(adapter);
recyclerView.setBackgroundColor(Color.WHITE);
EasyFloat.with(mContext)
.setTag("debug")
.setShowPattern(ShowPattern.FOREGROUND)
.setLayout(recyclerView)
.show();
if(!params.isEmpty()){
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
adapter.setParamMap(params);
}
},1000);
Log.i("debug弹窗", "createView: 有值");
}
Log.i("debug弹窗", "createView: 创建");
}
}

View File

@@ -0,0 +1,49 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.R;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
public class DragonRulePopup extends CenterPopupView {
LinearLayout list_no;
LinearLayout list;
boolean isList;
public DragonRulePopup(@NonNull Context context, boolean isList) {
super(context);
this.isList = isList;
}
// 返回自定义弹窗的布局
@Override
protected int getImplLayoutId() {
return R.layout.dragon_rule_popup;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
list_no = findViewById(R.id.list_no);
list = findViewById(R.id.list);
if (!isList){
list_no.setVisibility(VISIBLE);
list.setVisibility(GONE);
}else {
list_no.setVisibility(GONE);
list.setVisibility(VISIBLE);
}
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.dragon_close), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dismiss();
}
});
}
}

View File

@@ -0,0 +1,112 @@
package com.yunbao.common.dialog;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import com.yunbao.common.R;
import com.yunbao.common.bean.GuardGetGuardUserInfoModel;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.WordUtil;
public class GuardBuyTipsDialog {
/**
* @param context
* @param coin 钻石
* @param content 购买类型名称
* @param simpleCallback
*/
public static void showBuyOrRenewDialog(Context context, String coin, String content,
boolean isOpen, GuardGetGuardUserInfoModel mGuardUserInfoModel, int guardType,
DialogUitl.SimpleCallback simpleCallback) {
if (context instanceof Activity) {
if (((Activity) context).isDestroyed() || ((Activity) context).isFinishing()) {
return;
}
}
final Dialog dialog = new Dialog(context, R.style.dialog2);
dialog.setContentView(R.layout.dialog_guard_buy_tips);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
TextView btn_confirm = dialog.findViewById(R.id.btn_confirm);
TextView content1 = dialog.findViewById(R.id.content1);
TextView content2 = dialog.findViewById(R.id.content2);
TextView contentTextView = dialog.findViewById(R.id.content);
TextView buyTypeTextView = dialog.findViewById(R.id.buyType);
content1.setVisibility(View.VISIBLE);
contentTextView.setVisibility(View.VISIBLE);
buyTypeTextView.setVisibility(View.VISIBLE);
content2.setVisibility(View.GONE);
if (TextUtils.isEmpty(coin) && mGuardUserInfoModel == null && !isOpen && guardType == -200) {
content1.setVisibility(View.GONE);
contentTextView.setVisibility(View.VISIBLE);
buyTypeTextView.setVisibility(View.GONE);
content2.setVisibility(View.GONE);
contentTextView.setText(content);
} else {
if (!isOpen) {
if (!TextUtils.isEmpty(coin)) {
contentTextView.setText(context.getString(R.string.guard_buy_tips_1, coin));
}
if (!TextUtils.isEmpty(content)) {
buyTypeTextView.setText("" + content + "");
}
} else {
if (!TextUtils.isEmpty(coin)) {
contentTextView.setText(context.getString(R.string.guard_buy_tips_2, coin));
}
if (!TextUtils.isEmpty(content)) {
buyTypeTextView.setText("" + content + "");
}
}
if (mGuardUserInfoModel != null) {
if (mGuardUserInfoModel.getGuardType() != 0) {
if (TextUtils.equals(mGuardUserInfoModel.getIsOpen(), "1") &&
guardType < mGuardUserInfoModel.getGuardType()) {
content1.setVisibility(View.GONE);
contentTextView.setVisibility(View.GONE);
buyTypeTextView.setVisibility(View.GONE);
content2.setVisibility(View.VISIBLE);
} else if (TextUtils.equals(mGuardUserInfoModel.getIsOpen(), "1") && guardType > mGuardUserInfoModel.getGuardType()) {
content1.setVisibility(View.VISIBLE);
} else {
content1.setVisibility(View.GONE);
}
} else {
content1.setVisibility(View.GONE);
}
} else {
content1.setVisibility(View.GONE);
}
}
dialog.findViewById(R.id.btn_cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
btn_confirm.setText(WordUtil.isNewZh() ? "確認" : "Confirm");
btn_confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (content2.getVisibility() == View.VISIBLE) {
dialog.dismiss();
} else {
simpleCallback.onConfirmClick(dialog, "");
dialog.dismiss();
}
}
});
dialog.show();
}
}

View File

@@ -0,0 +1,171 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentActivity;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.R;
import com.yunbao.common.bean.CheckUpgradesModel;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.RewardsModel;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
public class GuardUpgradePopup extends CenterPopupView {
FragmentActivity activity;
String mLiveUid;
CheckUpgradesModel mUpgradesModel;
TextView leave_hint;
LinearLayout rewards_line1, rewards_line2, rewards_line3;
ImageView rewards_img1, rewards_img2, rewards_img3;
TextView rewards_text1, rewards_text2, rewards_text3;
public GuardUpgradePopup(@NonNull Context context, String liveUid, CheckUpgradesModel upgradesModel, GuardUpgradeCallBack guardUpgradeCallBack) {
super(context);
activity = (FragmentActivity) context;
mLiveUid = liveUid;
mUpgradesModel = upgradesModel;
mGuardUpgradeCallBack = guardUpgradeCallBack;
}
@Override
protected int getImplLayoutId() {
return R.layout.guard_upgrade_popup;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
leave_hint = findViewById(R.id.leave_hint);
rewards_line1 = findViewById(R.id.rewards_line1);
rewards_line2 = findViewById(R.id.rewards_line2);
rewards_line3 = findViewById(R.id.rewards_line3);
rewards_img1 = findViewById(R.id.rewards_img1);
rewards_img2 = findViewById(R.id.rewards_img2);
rewards_img3 = findViewById(R.id.rewards_img3);
rewards_text1 = findViewById(R.id.rewards_text1);
rewards_text2 = findViewById(R.id.rewards_text2);
rewards_text3 = findViewById(R.id.rewards_text3);
StringBuffer hintStringBuffer = new StringBuffer();
if (WordUtil.isNewZh()) {
hintStringBuffer.append("您的守護等級已達到")
.append(mUpgradesModel.getLevel())
.append("級 可以領取以下獎勵");
} else {
hintStringBuffer.append("Your guardian level has reached level ")
.append(mUpgradesModel.getLevel())
.append(" You can receive the following rewards")
;
}
leave_hint.setText(hintStringBuffer.toString());
if (mUpgradesModel.getRewards().size() > 0) {
if (mUpgradesModel.getRewards().size() == 1) {
rewards_line1.setVisibility(INVISIBLE);
rewards_line2.setVisibility(VISIBLE);
rewards_line3.setVisibility(INVISIBLE);
RewardsModel rewardsModel = mUpgradesModel.getRewards().get(0);
ImgLoader.display(getContext(), rewardsModel.getImagePath(), rewards_img2);
rewards_text2.setText(rewardsModel.getRewardName());
} else if (mUpgradesModel.getRewards().size() == 2) {
rewards_line1.setVisibility(VISIBLE);
rewards_line2.setVisibility(INVISIBLE);
rewards_line3.setVisibility(VISIBLE);
RewardsModel rewardsModel1 = mUpgradesModel.getRewards().get(0);
RewardsModel rewardsModel3 = mUpgradesModel.getRewards().get(1);
ImgLoader.display(getContext(), rewardsModel1.getImagePath(), rewards_img1);
rewards_text1.setText(rewardsModel1.getRewardName());
ImgLoader.display(getContext(), rewardsModel3.getImagePath(), rewards_img3);
rewards_text3.setText(rewardsModel3.getRewardName());
} else if (mUpgradesModel.getRewards().size() == 3) {
rewards_line1.setVisibility(VISIBLE);
rewards_line2.setVisibility(VISIBLE);
rewards_line3.setVisibility(VISIBLE);
RewardsModel rewardsModel1 = mUpgradesModel.getRewards().get(0);
RewardsModel rewardsModel2 = mUpgradesModel.getRewards().get(1);
RewardsModel rewardsModel3 = mUpgradesModel.getRewards().get(2);
ImgLoader.display(getContext(), rewardsModel1.getImagePath(), rewards_img1);
rewards_text1.setText(rewardsModel1.getRewardName());
ImgLoader.display(getContext(), rewardsModel2.getImagePath(), rewards_img2);
rewards_text2.setText(rewardsModel2.getRewardName());
ImgLoader.display(getContext(), rewardsModel3.getImagePath(), rewards_img3);
rewards_text3.setText(rewardsModel3.getRewardName());
} else {
rewards_line1.setVisibility(INVISIBLE);
rewards_line2.setVisibility(INVISIBLE);
rewards_line3.setVisibility(INVISIBLE);
}
} else {
rewards_line1.setVisibility(INVISIBLE);
rewards_line2.setVisibility(INVISIBLE);
rewards_line3.setVisibility(INVISIBLE);
}
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.confirm), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
LiveNetManager.get(getContext())
.guardGetRewards(mUpgradesModel.getLevel(), mLiveUid, new HttpCallback<Object>() {
@Override
public void onSuccess(Object data) {
ToastUtil.show(WordUtil.isNewZh() ? "領取成功" : "Receive successfully");
dismiss();
}
@Override
public void onError(String error) {
ToastUtil.show(error);
}
});
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.view_grade), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
if (mGuardUpgradeCallBack != null) {
mGuardUpgradeCallBack.onGuardLevel();
}
dismiss();
StringBuffer htmlUrl = new StringBuffer();
IMLoginModel userInfo = IMLoginManager.get(getContext()).getUserInfo();
htmlUrl.append(CommonAppConfig.HOST)
.append("/h5/Guard/level.html?")
.append("token=")
.append(userInfo.getToken())
.append("&uid=")
.append(userInfo.getId())
.append("&anchorUid=")
.append(mLiveUid)
.append("&isZh=")
.append(((WordUtil.isNewZh()) ? "1" : "0"));
RouteUtil.forwardZhuangBanActivity(htmlUrl.toString());
}
});
}
private GuardUpgradeCallBack mGuardUpgradeCallBack;
public interface GuardUpgradeCallBack {
void onGuardLevel();
}
}

View File

@@ -0,0 +1,160 @@
package com.yunbao.common.dialog;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.adapter.ImagePreviewAdapter;
import com.yunbao.common.utils.StringUtil;
/**
* Created by Martin on 2024/3/15.
* 图片预览弹窗
*/
public class ImagePreviewDialog extends AbsDialogFragment implements View.OnClickListener {
private View mBg;
private RecyclerView mRecyclerView;
private ValueAnimator mAnimator;
private int mPosition;
private int mPageCount;
private ActionListener mActionListener;
private TextView mCount;
private ImagePreviewAdapter mAdapter;
private boolean mNeedDelete;
@Override
protected int getLayoutId() {
return R.layout.view_preview_image;
}
@Override
protected int getDialogStyle() {
return R.style.dialog2;
}
@Override
protected boolean canCancel() {
return true;
}
@Override
protected void setWindowAttributes(Window window) {
WindowManager.LayoutParams params = window.getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(params);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mBg = mRootView.findViewById(R.id.bg);
mCount = (TextView) findViewById(R.id.count);
findViewById(R.id.btn_close).setOnClickListener(this);
if (mNeedDelete) {
View btnDelete = findViewById(R.id.btn_delete);
btnDelete.setVisibility(View.VISIBLE);
btnDelete.setOnClickListener(this);
}
mRecyclerView = mRootView.findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
mAnimator = ValueAnimator.ofFloat(0, 1);
mAnimator.setDuration(150);
mAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float v = (float) animation.getAnimatedValue();
mBg.setAlpha(v);
}
});
mAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
if (mRecyclerView != null && mPageCount > 0) {
ImagePreviewAdapter adapter = new ImagePreviewAdapter(mContext, mPageCount);
mAdapter = adapter;
adapter.setActionListener(new ImagePreviewAdapter.ActionListener() {
@Override
public void onPageChanged(int position) {
if (mCount != null) {
mCount.setText(StringUtil.contact(String.valueOf(position + 1), "/", String.valueOf(mPageCount)));
}
}
@Override
public void loadImage(ImageView imageView, int position) {
if (mActionListener != null) {
mActionListener.loadImage(imageView, position);
}
}
});
mRecyclerView.setAdapter(adapter);
if (mPosition >= 0 && mPosition < mPageCount) {
adapter.setCurPosition(mPosition);
mRecyclerView.scrollToPosition(mPosition);
}
}
}
});
mAnimator.start();
}
public void setImageInfo(int pageCount, int position, boolean needDelete, ActionListener actionListener) {
mActionListener = actionListener;
mPageCount = pageCount;
mPosition = position;
mNeedDelete = needDelete;
}
@Override
public void onDestroy() {
if (mAnimator != null) {
mAnimator.cancel();
}
mContext = null;
mActionListener = null;
super.onDestroy();
}
@Override
public void onClick(View v) {
int i = v.getId();
if (i == R.id.btn_close) {
dismiss();
} else if (i == R.id.btn_delete) {
delete();
}
}
private void delete() {
if (mAdapter != null && mActionListener != null) {
mActionListener.onDeleteClick(mAdapter.getCurPosition());
}
dismiss();
}
public interface ActionListener {
void loadImage(ImageView imageView, int position);
void onDeleteClick(int position);
}
}

View File

@@ -14,6 +14,7 @@ import com.yunbao.common.R;
import com.yunbao.common.http.ResponseModel;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
@@ -75,6 +76,8 @@ public class LiberalBattlePassPopupWindow extends CenterPopupView {
if (mPassCallback != null) {
mPassCallback.onCallback(data.getData().getCode(), data.getData().getMsg());
}
IMLoginManager.get(getContext()).upDataUserInfo();
IMLoginManager.get(getContext()).updateUserCoin();
}
@Override

View File

@@ -0,0 +1,134 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.content.DialogInterface;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.lxj.xpopup.core.AttachPopupView;
import com.yunbao.common.R;
import com.yunbao.common.adapter.LiveBuyGuardSelectAdapter;
import com.yunbao.common.bean.GuardPriceModel;
import com.yunbao.common.views.LiveBuyGuardSelectViewHolder;
import java.util.ArrayList;
import java.util.List;
public class LiveBuyGuardSelectPopup extends AttachPopupView {
private int mType;
private DialogInterface.OnDismissListener onDismissListener;
private LiveBuyGuardSelectListener buyGuardSelectListener;
List<GuardPriceModel> price = new ArrayList<>();
LiveBuyGuardSelectAdapter liveBuyGuardSelectAdapter;
RecyclerView live_buy_guard_list;
GuardPriceModel model;
public LiveBuyGuardSelectPopup(@NonNull Context context, List<GuardPriceModel> mPrice, GuardPriceModel mModel) {
super(context);
price = mPrice;
model = mModel;
}
protected int getImplLayoutId() {
return R.layout.view_live_buy_guard_slelect;
}
@Override
protected void onCreate() {
live_buy_guard_list = findViewById(R.id.live_buy_guard_list);
liveBuyGuardSelectAdapter = new LiveBuyGuardSelectAdapter(price,model);
live_buy_guard_list.setAdapter(liveBuyGuardSelectAdapter);
live_buy_guard_list.setLayoutManager(new LinearLayoutManager(getContext()));
liveBuyGuardSelectAdapter.setLiveBuyGuardSelectClickListener(new LiveBuyGuardSelectViewHolder.LiveBuyGuardSelectClickListener() {
@Override
public void onClickListener(GuardPriceModel guardPriceModel) {
dialog.dismiss();
if (onDismissListener != null) {
onDismissListener.onDismiss(null);
}
if (buyGuardSelectListener != null) {
buyGuardSelectListener.onLiveBuyGuardSelectListener(guardPriceModel);
}
}
});
// ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.one_month), new ViewClicksAntiShake.ViewClicksCallBack() {
// @Override
// public void onViewClicks() {
// dialog.dismiss();
// if (onDismissListener != null) {
// onDismissListener.onDismiss(null);
// }
// if (buyGuardSelectListener != null) {
// buyGuardSelectListener.onLiveBuyGuardSelectListener(0);
// }
// }
// });
// ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.tree_month), new ViewClicksAntiShake.ViewClicksCallBack() {
// @Override
// public void onViewClicks() {
// dialog.dismiss();
// if (onDismissListener != null) {
// onDismissListener.onDismiss(null);
// }
// if (buyGuardSelectListener != null) {
// buyGuardSelectListener.onLiveBuyGuardSelectListener(1);
// }
// }
// });
// ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.six_month), new ViewClicksAntiShake.ViewClicksCallBack() {
// @Override
// public void onViewClicks() {
// dialog.dismiss();
// if (onDismissListener != null) {
// onDismissListener.onDismiss(null);
// }
// if (buyGuardSelectListener != null) {
// buyGuardSelectListener.onLiveBuyGuardSelectListener(2);
// }
// }
// });
// ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.one_two_month), new ViewClicksAntiShake.ViewClicksCallBack() {
// @Override
// public void onViewClicks() {
// dialog.dismiss();
// if (onDismissListener != null) {
// onDismissListener.onDismiss(null);
// }
// if (buyGuardSelectListener != null) {
// buyGuardSelectListener.onLiveBuyGuardSelectListener(3);
// }
// }
// });
if (model == null) {
} else {
}
}
public LiveBuyGuardSelectPopup setOnDismissListener(DialogInterface.OnDismissListener onDismissListener) {
this.onDismissListener = onDismissListener;
return this;
}
public LiveBuyGuardSelectPopup setBuyGuardSelectListener(LiveBuyGuardSelectListener buyGuardSelectListener) {
this.buyGuardSelectListener = buyGuardSelectListener;
return this;
}
@Override
protected void onDismiss() {
super.onDismiss();
if (onDismissListener != null) {
onDismissListener.onDismiss(null);
}
}
public interface LiveBuyGuardSelectListener {
void onLiveBuyGuardSelectListener(GuardPriceModel guardPriceModel);
}
}

View File

@@ -21,6 +21,7 @@ import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
//游戏弹窗
public class LiveNewRolePopup extends BottomPopupView {
private boolean showRed = false;

View File

@@ -14,6 +14,7 @@ import com.yunbao.common.bean.OpenAdModel;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.ScreenDimenUtil;
public class OpenAdCenterDialogPopup extends AbsDialogFullScreenPopupWindow {
@@ -65,6 +66,11 @@ public class OpenAdCenterDialogPopup extends AbsDialogFullScreenPopupWindow {
mClose = findViewById(R.id.close);
findViewById(R.id.layout).setOnClickListener(v -> dismiss());
mImageView.setOnClickListener(v -> {
if("home_page_banner_battle".equals(model.getOriginalUrl())){
RouteUtil.forwardBattlePass();
dismiss();
return;
}
WebViewActivity.forward(mContext, model.getUrl(), model.getType() != OpenAdModel.TYPE_HOME);
if (mListener != null) {
mListener.onItemClick(model, 1);

View File

@@ -7,11 +7,15 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import com.alibaba.fastjson.JSONObject;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.R;
import com.yunbao.common.bean.BattlePassUserInfoBean;
import com.yunbao.common.http.ResponseModel;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
@@ -22,22 +26,24 @@ import java.math.BigDecimal;
* 战令等级 经验
*/
public class OrderLevelPopupWindow extends CenterPopupView {
private TextView orderLevel, orderLevelDiamond, balanceDiamond, current,expText;
private TextView orderLevel, orderLevelDiamond, balanceDiamond, current, expText;
private int currentExperience, totalExperience;//当前经验,全部经验
private String buyExp = "100", currentLevel, balance;
private ProgressBar progressBar;
private OrderLevelCallback orderLevelCallback;
private long maxExp;
private BattlePassUserInfoBean userInfoBean;
public OrderLevelPopupWindow(@NonNull Context context,
public OrderLevelPopupWindow(@NonNull Context context, BattlePassUserInfoBean userInfoBean,
int mCurrentExperience, int mTotalExperience,
String mCurrentLevel, String mBalance,long maxExp, OrderLevelCallback mOrderLevelCallback) {
String mCurrentLevel, String mBalance, long maxExp, OrderLevelCallback mOrderLevelCallback) {
super(context);
this.userInfoBean = userInfoBean;
currentExperience = mCurrentExperience;
totalExperience = mTotalExperience;
currentLevel = mCurrentLevel;
balance = mBalance;
this.maxExp=maxExp;
this.maxExp = maxExp;
orderLevelCallback = mOrderLevelCallback;
}
@@ -59,7 +65,7 @@ public class OrderLevelPopupWindow extends CenterPopupView {
orderLevel.setText(buyExp);
progressBar.setMax(totalExperience);
progressBar.setProgress(currentExperience);
expText.setText(String.format("%s/%s", currentExperience, totalExperience));
expText.setText(String.format("%s/%s", userInfoBean.getBattlePassExp(), userInfoBean.getNextLevelExp()));
current.setText(String.format("Lv%s", currentLevel));
balanceDiamond.setText(balance);
findViewById(R.id.sub).setOnClickListener(new OnClickListener() {
@@ -83,8 +89,8 @@ public class OrderLevelPopupWindow extends CenterPopupView {
buyExp = String.valueOf(buyExpBigDecimal.intValue());
orderLevelDiamond.setText(String.valueOf(buyExpBigDecimal.floatValue()));
orderLevel.setText(buyExp);
}else if(exp>=maxExp){
ToastUtil.show(WordUtil.isNewZh()?"经验已滿":"Experience full");
} else if (exp >= maxExp) {
ToastUtil.show(WordUtil.isNewZh() ? "经验已滿" : "Experience full");
}
}
@@ -102,20 +108,33 @@ public class OrderLevelPopupWindow extends CenterPopupView {
.buyingExperiencePoint(buyExp, new HttpCallback<ResponseModel<Object>>() {
@Override
public void onSuccess(ResponseModel<Object> data) {
if (orderLevelCallback != null) {
orderLevelCallback.onCallback(data.getData().getCode(), data.getMsg());
}dialog.dismiss();
}
dialog.dismiss();
}
@Override
public void onError(String error) {
if (orderLevelCallback != null) {
orderLevelCallback.onCallback(102, error);
} dialog.dismiss();
}
dialog.dismiss();
}
});
}
});
IMLoginManager.get(getContext())
.updateUserCoin(new OnItemClickListener<JSONObject>() {
@Override
public void onItemClick(JSONObject bean, int position) {
if (bean != null) {
balance = bean.getString("coin");
balanceDiamond.setText(balance);
}
}
});
}
public interface OrderLevelCallback {

View File

@@ -0,0 +1,32 @@
package com.yunbao.common.dialog;
import android.content.Context;
import androidx.annotation.NonNull;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.R;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
public class SkitCheckInWasSuccessfulPopup extends CenterPopupView {
public SkitCheckInWasSuccessfulPopup(@NonNull Context context) {
super(context);
}
@Override
protected int getImplLayoutId() {
return R.layout.skit_check_in_was_successful_popup;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.icon_slice_368), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dismiss();
}
});
}
}

View File

@@ -48,15 +48,16 @@ public class SudGameInputPopupWindow extends BottomPopupView {
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.send), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dialog.dismiss();
if (sudGameInputCallBack != null) {
String textMessageStr = textMessage.getText().toString();
String textMessageStr = textMessage.getText().toString().trim();
if (!TextUtils.isEmpty(textMessageStr)) {
if (textMessageStr.length() > 100) {
ToastUtil.show(WordUtil.isNewZh() ? "超出字數限制" : "Exceed word limit");
} else {
sudGameInputCallBack.sendMessage(textMessageStr);
}
dialog.dismiss();
} else {
ToastUtil.show(WordUtil.getNewString(R.string.cannot_be_empty));
}

View File

@@ -2,6 +2,7 @@ package com.yunbao.common.dialog;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Color;
import android.text.TextUtils;
import android.util.Log;
import android.view.animation.LinearInterpolator;
@@ -275,6 +276,29 @@ public class SudGameListPopup extends BottomPopupView {
.asCustom(new LiveSudGameHistoryPopup(getContext(), customSidebarChildModels)).show();
}
});
if (interactionID == 0) {
gameTitle.setTextColor(getDefColor());
} else {
gameTitle.setTextColor(getYellowColor());
}
if (mSill.equals("0,0,0")) {
sillTitle.setTextColor(getDefColor());
} else {
sillTitle.setTextColor(getYellowColor());
}
if ("0".equals(roomHolderType)) {
houseOwnerTitle.setTextColor(getDefColor());
} else {
houseOwnerTitle.setTextColor(getYellowColor());
}
}
private int getYellowColor() {
return Color.parseColor("#FF8D41");
}
private int getDefColor() {
return Color.WHITE;
}
@Override
@@ -293,6 +317,11 @@ public class SudGameListPopup extends BottomPopupView {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSudGameListEvent(SudGameListEvent event) {
interactionID = event.getInteractionID();
if (interactionID == 0) {
gameTitle.setTextColor(getDefColor());
} else {
gameTitle.setTextColor(getYellowColor());
}
if (IMLoginManager.get(getContext()).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
gameTitle.setText(event.getTitle());
} else {
@@ -325,7 +354,11 @@ public class SudGameListPopup extends BottomPopupView {
} else {
sillTitle.setText(mSillName.substring(0, mSillName.length() - 2));
}
if (mSill.equals("0,0,0")) {
sillTitle.setTextColor(getDefColor());
} else {
sillTitle.setTextColor(getYellowColor());
}
ObjectAnimator animator = ObjectAnimator.ofFloat(roomSillArrow, "rotation", 90f, 0f);
animator.setDuration(500);
@@ -344,6 +377,11 @@ public class SudGameListPopup extends BottomPopupView {
animator.setInterpolator(new LinearInterpolator());
animator.start();
mRefreshView.initData();
if ("0".equals(roomHolderType)) {
houseOwnerTitle.setTextColor(getDefColor());
} else {
houseOwnerTitle.setTextColor(getYellowColor());
}
}

View File

@@ -19,6 +19,7 @@ import com.yunbao.common.event.LiveSudGameHistoryEvent;
import com.yunbao.common.event.RoomHolderTypeEvent;
import com.yunbao.common.event.SudGameListEvent;
import com.yunbao.common.event.SudGameListSillEvent;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
@@ -87,6 +88,11 @@ public class SudGameListSelectPopup extends AttachPopupView {
if (mType == 0 || mType == 4) {
topSelect.setText(getContext().getString(R.string.interactive_game_room_all));
for (int i = 0; i < customSidebarChildModels.size(); i++) {
/* if (!IMLoginManager.get(getContext()).getUserInfo().anchorUserType()) {
if ("1490944230389182466".equals(customSidebarChildModels.get(i).getSrc())) {//友尽闯关
continue;
}
}*/
selectString.add(customSidebarChildModels.get(i).getTitle());
if (TextUtils.equals(String.valueOf(interactionID), customSidebarChildModels.get(i).getSrc())) {
index = i;

View File

@@ -48,7 +48,7 @@ public class SudGameSmallPopupPindow extends AttachPopupView {
return;
}
if (sudGameUserModel.getMicStatus() == 3) {
ToastUtil.show("方未开麦!");
ToastUtil.show(WordUtil.isNewZh() ? "方未開麥!" : "The other side did not turn on the microphone");
return;
}
if (!mute) {

View File

@@ -0,0 +1,227 @@
package com.yunbao.common.event;
import com.google.gson.annotations.SerializedName;
import com.yunbao.common.bean.BaseModel;
import java.util.List;
public class AllServerNotifyFFGGGDJANEvent extends BaseModel {
@SerializedName("_method_")
private String method;
@SerializedName("action")
private String action;
@SerializedName("msg_cn")
private String msgCn;
@SerializedName("msg_en")
private String msgEn;
@SerializedName("uid")
private String uid;
@SerializedName("liveuid")
private String liveuid;
@SerializedName("background_image")
private String backgroundImage;
@SerializedName("style")
private List<StyleDTO> style;
@SerializedName("jump_type")
private String jumpType;
@SerializedName("link")
private String link;
@SerializedName("button_image")
private String buttonImage;
@SerializedName("button_msg_cn")
private String buttonMsgCn;
@SerializedName("button_msg_en")
private String buttonMsgEn;
@SerializedName("button_style")
private List<ButtonStyleDTO> buttonStyle;
@SerializedName("h5_type")
private String h5Type;
public String getH5Type() {
return h5Type;
}
public AllServerNotifyFFGGGDJANEvent setH5Type(String h5Type) {
this.h5Type = h5Type;
return this;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getMsgCn() {
return msgCn;
}
public void setMsgCn(String msgCn) {
this.msgCn = msgCn;
}
public String getMsgEn() {
return msgEn;
}
public void setMsgEn(String msgEn) {
this.msgEn = msgEn;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getLiveuid() {
return liveuid;
}
public void setLiveuid(String liveuid) {
this.liveuid = liveuid;
}
public String getBackgroundImage() {
return backgroundImage;
}
public void setBackgroundImage(String backgroundImage) {
this.backgroundImage = backgroundImage;
}
public List<StyleDTO> getStyle() {
return style;
}
public void setStyle(List<StyleDTO> style) {
this.style = style;
}
public String getJumpType() {
return jumpType;
}
public void setJumpType(String jumpType) {
this.jumpType = jumpType;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public String getButtonImage() {
return buttonImage;
}
public void setButtonImage(String buttonImage) {
this.buttonImage = buttonImage;
}
public String getButtonMsgCn() {
return buttonMsgCn;
}
public void setButtonMsgCn(String buttonMsgCn) {
this.buttonMsgCn = buttonMsgCn;
}
public String getButtonMsgEn() {
return buttonMsgEn;
}
public void setButtonMsgEn(String buttonMsgEn) {
this.buttonMsgEn = buttonMsgEn;
}
public List<ButtonStyleDTO> getButtonStyle() {
return buttonStyle;
}
public void setButtonStyle(List<ButtonStyleDTO> buttonStyle) {
this.buttonStyle = buttonStyle;
}
public static class StyleDTO {
@SerializedName("str_cn")
private String strCn;
@SerializedName("str_en")
private String strEn;
@SerializedName("colour")
private String colour;
public String getStrCn() {
return strCn;
}
public void setStrCn(String strCn) {
this.strCn = strCn;
}
public String getStrEn() {
return strEn;
}
public void setStrEn(String strEn) {
this.strEn = strEn;
}
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
}
public static class ButtonStyleDTO {
@SerializedName("str_cn")
private String strCn;
@SerializedName("str_en")
private String strEn;
@SerializedName("colour")
private String colour;
public String getStrCn() {
return strCn;
}
public void setStrCn(String strCn) {
this.strCn = strCn;
}
public String getStrEn() {
return strEn;
}
public void setStrEn(String strEn) {
this.strEn = strEn;
}
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
}
}

View File

@@ -0,0 +1,6 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
class DragonSendsMoneyEvent extends BaseModel {
}

View File

@@ -0,0 +1,16 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
public class FloatWarOrderEvent extends BaseModel {
private boolean floatWarOrder;
public boolean isFloatWarOrder() {
return floatWarOrder;
}
public FloatWarOrderEvent setFloatWarOrder(boolean floatWarOrder) {
this.floatWarOrder = floatWarOrder;
return this;
}
}

View File

@@ -115,6 +115,36 @@ public class SendBlindGiftEvent extends BaseModel {
private String liveGiftNotify;
@SerializedName("userNiceName")
private String userNiceName;
@SerializedName("special_gift")
private int specialGift;
@SerializedName("special_gift_name")
private String specialGiftName;
@SerializedName("special_gift_name_en")
private String specialGiftNameEn;
public int getSpecialGift() {
return specialGift;
}
public void setSpecialGift(int specialGift) {
this.specialGift = specialGift;
}
public String getSpecialGiftName() {
return specialGiftName;
}
public void setSpecialGiftName(String specialGiftName) {
this.specialGiftName = specialGiftName;
}
public String getSpecialGiftNameEn() {
return specialGiftNameEn;
}
public void setSpecialGiftNameEn(String specialGiftNameEn) {
this.specialGiftNameEn = specialGiftNameEn;
}
public String getUserNiceName() {
return userNiceName;

View File

@@ -0,0 +1,6 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
public class SendMoneyLongEndEvent extends BaseModel {
}

View File

@@ -0,0 +1,44 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.HttpCallbackModel;
public class SubGameEvent {
int type;
HttpCallbackModel model;
String dataJson;
public SubGameEvent(int type, HttpCallbackModel model, String dataJson) {
this.type = type;
this.model = model;
this.dataJson = dataJson;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public HttpCallbackModel getModel() {
return model;
}
public void setModel(HttpCallbackModel model) {
this.model = model;
}
public String getDataJson() {
return dataJson;
}
@Override
public String toString() {
return "SubGameEvent{" +
"type=" + type +
", model=" + model +
", dataJson='" + dataJson + '\'' +
'}';
}
}

View File

@@ -42,7 +42,7 @@ import java.util.Locale;
*/
public class CommonHttpUtil {
public static final String GET_UPLOAD_QI_NIU_TOKEN = "getUploadQiNiuToken";
/**
* 初始化
@@ -208,6 +208,10 @@ public class CommonHttpUtil {
JSONArray levelArray = obj.getJSONArray("liveclass");
new LiveClassManager(context).UpDataLiveClass(levelArray.toJSONString());
}
if (obj.containsKey("guard_type")) {
JSONArray levelArray = obj.getJSONArray("guard_type");
new NewLevelManager(context).upDataGuardLevel(levelArray.toJSONString());
}
if (obj.containsKey("apk_ver")) {
APKManager.get().setApkVer(obj.getString("apk_ver"));
}
@@ -329,6 +333,8 @@ public class CommonHttpUtil {
isGoogle = "1";
} else if (CommonAppConfig.IS_GOOGLE_PLAY == 2) {
isGoogle = "2";
}else if (CommonAppConfig.IS_GOOGLE_PLAY == 3) {
isGoogle = "3";
} else {
isGoogle = "-1";
}
@@ -444,6 +450,16 @@ public class CommonHttpUtil {
public static void getUserBaseinfo(String touid, HttpCallback callback) {
HttpClient.getInstance().get("User.getUserBaseinfo", CommonHttpConsts.GET_USER_BASEINFO).params("touid", touid).execute(callback);
}
/**
* 上传文件 获取七牛云token的接口
*/
public static void getUploadQiNiuToken(HttpCallback callback, boolean isImg) {
HttpClient.getInstance().get("Pdluserhome.getQiNiuToken2", "Pdluserhome.getQiNiuToken2")
.params("uid", CommonAppConfig.getInstance().getUid())
.params("token", CommonAppConfig.getInstance().getToken())
.params("ext", isImg ? ".jpeg" : ".mp4")
.execute(callback);
}
//
// //埋点唯一性
// public static void setAdvertisingChannels(String operation, HttpCallback callback) {

View File

@@ -11,6 +11,7 @@ import com.yunbao.common.utils.L;
import com.yunbao.common.utils.MD5Util;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.VersionUtil;
import com.yunbao.common.utils.WordUtil;
import java.io.File;
@@ -644,7 +645,40 @@ public class LiveHttpUtil {
.params("appVersion", CommonAppConfig.getInstance().getVersion())
.execute(callback);
}
/**
* 观众给主播送礼物 - 包裹
*
* @param isContactGift 是否为联系方式礼物
*/
public static void sendGiftForPage(String by, String liveUid, String stream, int giftId, String giftCount, int isContactGift, boolean isFansGroupGift, HttpCallback callback) {
HttpClient.getInstance().get("Live.sendPackGift", LiveHttpConsts.SEND_GIFT)
.params("liveuid", liveUid)
.params("stream", stream)
.params("giftid", giftId)
.params("isContactGift", isContactGift)
.params("giftcount", giftCount)
.params("isprank", by)
.params("fans_exclusive_pack", isFansGroupGift ? "1" : "0")
.params("appVersion", CommonAppConfig.getInstance().getVersion())
.execute(callback);
}
/**
* 观众给主播送礼物 - 粉丝团
*
* @param isContactGift 是否为联系方式礼物
*/
public static void sendGiftForFansGroup(String by, String liveUid, String stream, int giftId, String giftCount, int isContactGift, boolean isFansGroupGift, HttpCallback callback) {
HttpClient.getInstance().get("Live.fansExclusivePack", LiveHttpConsts.SEND_GIFT)
.params("liveuid", liveUid)
.params("stream", stream)
.params("giftid", giftId)
.params("isContactGift", isContactGift)
.params("giftcount", giftCount)
.params("isprank", by)
.params("fans_exclusive_pack", isFansGroupGift ? "1" : "0")
.params("appVersion", CommonAppConfig.getInstance().getVersion())
.execute(callback);
}
public static void sendBlindBoxTicket(String by, String liveUid, String stream, int giftId, HttpCallback callback) {
HttpClient.getInstance().get("Live.sendBlindBoxTicket", LiveHttpConsts.SEND_GIFT)
.params("liveuid", liveUid)
@@ -872,7 +906,11 @@ public class LiveHttpUtil {
.params("anchorUid", anchor_id)
.execute(callback);
}
public static void getAnchorActiveImgStatus(String anchor_id, HttpCallback callback) {
HttpClient.getInstance().get("Live.getAnchorActiveImgStatus", LiveHttpConsts.GET_EVENT)
.params("anchorUid", anchor_id)
.execute(callback);
}
/**
* 重置活动
*/
@@ -1003,5 +1041,13 @@ public class LiveHttpUtil {
.execute(callback);
}
/**
* 获取短剧Url
*/
public static void getCoolydrama(HttpCallback callback){
HttpClient.getInstance().get("cool.register", "Home.getFollow")
.params("lang", WordUtil.isNewZh()?"zh_CN":"en")
.execute(callback);
}
}

View File

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.yunbao.common.bean.ActiveModel;
import com.yunbao.common.bean.AnchorRecommendItemModel;
import com.yunbao.common.bean.AnchorRecommendModel;
import com.yunbao.common.bean.AvatarBean;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.BattlePassPoints;
import com.yunbao.common.bean.BattlePassTask;
@@ -11,6 +12,7 @@ import com.yunbao.common.bean.BattlePassUserInfoBean;
import com.yunbao.common.bean.BlindBoxInfoModel;
import com.yunbao.common.bean.CheckLiveModel;
import com.yunbao.common.bean.CheckRemainingBalance;
import com.yunbao.common.bean.CheckUpgradesModel;
import com.yunbao.common.bean.ContributeModel;
import com.yunbao.common.bean.CoolConfig;
import com.yunbao.common.bean.CreateSudRoomModel;
@@ -26,6 +28,8 @@ import com.yunbao.common.bean.GiftGuideModel;
import com.yunbao.common.bean.GiftNamingInfoModel;
import com.yunbao.common.bean.GiftWallGiftDetail;
import com.yunbao.common.bean.GiftWallModel;
import com.yunbao.common.bean.GuardGetGuardOpenInfoModel;
import com.yunbao.common.bean.GuardGetGuardUserInfoModel;
import com.yunbao.common.bean.HourRank;
import com.yunbao.common.bean.HttpCallbackModel;
import com.yunbao.common.bean.IMLoginModel;
@@ -58,7 +62,9 @@ import com.yunbao.common.bean.RedPacketDetailsBean;
import com.yunbao.common.bean.RedPacketGiftModel;
import com.yunbao.common.bean.RedPacketInfoModel;
import com.yunbao.common.bean.RedPacketListBean;
import com.yunbao.common.bean.RoomMicStatusModel;
import com.yunbao.common.bean.SearchModel;
import com.yunbao.common.bean.SendMoneyLongModel;
import com.yunbao.common.bean.SetAttentsModel;
import com.yunbao.common.bean.SlideInBannerModel;
import com.yunbao.common.bean.StarChallengeStatusModel;
@@ -70,16 +76,20 @@ import com.yunbao.common.bean.UserAvatarSelectBean;
import com.yunbao.common.bean.VipModel;
import com.yunbao.common.bean.WishListGiftConfModel;
import com.yunbao.common.bean.WishListModel;
import com.yunbao.common.bean.sendMoneyLongListModel;
import com.yunbao.common.event.CheckCurrencyModel;
import java.util.List;
import java.util.Map;
import io.reactivex.Observable;
import okhttp3.MultipartBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
@@ -104,7 +114,8 @@ public interface PDLiveApi {
@Field("user_pass") String passWord,
@Field("uuid_Device") String uuidDevice,
@Field("pushid") String pushid,
@Field("lastlogindevice") String lastlogindevice
@Field("lastlogindevice") String lastlogindevice,
@Field("langue") String langue
);
/**
@@ -1142,16 +1153,83 @@ public interface PDLiveApi {
Observable<ResponseModel<String>> battlePassRule();
@GET("/api/public/?service=Livebattlepass.addChatCount")
Observable<ResponseModel<List<BaseModel>>> addChatCount();
Observable<ResponseModel<List<BaseModel>>> addChatCount(@Query("stream") String stream);
@GET("/api/public/?service=Sudgameserver.joinMic")
Observable<ResponseModel<List<BaseModel>>> joinMic(@Query("room_id") String roomId);
@GET("/api/public/?service=Sudgameserver.onMic")
Observable<ResponseModel<List<BaseModel>>> onMic(@Query("room_id") String roomId);
@GET("/api/public/?service=Sudgameserver.offMic")
Observable<ResponseModel<List<BaseModel>>> offMic(@Query("room_id") String roomId);
@GET("/api/public/?service=Sudgameserver.leaveMic")
Observable<ResponseModel<List<BaseModel>>> leaveMic(@Query("room_id") String roomId);
@GET("/api/public/?service=Sudgameserver.getRoomMicData")
Observable<ResponseModel<List<SudGameUserModel>>> getRoomMicData(@Query("room_id") String roomId);
@GET("/api/public/?service=Sudgameserver.getRoomMicStatus")
Observable<ResponseModel<RoomMicStatusModel>> getRoomMicStatus();
@GET("/api/public/?service=Guard.getGuardUserInfo")
Observable<ResponseModel<GuardGetGuardUserInfoModel>> getGuardUserInfo(@Query("liveuid") String liveUid);
@GET("/api/public/?service=Guard.getGuardOpenInfo")
Observable<ResponseModel<GuardGetGuardOpenInfoModel>> getGuardOpenInfo(@Query("liveuid") String liveUid);
@GET("/api/public/?service=Guard.openGuard")
Observable<ResponseModel<Object>> openGuard(@Query("liveuid") String liveUid, @Query("guard_type") String guardType, @Query("price_key") String priceKey, @Query("stream") String stream);
@GET("/api/public/?service=Guard.sendMoneyLong")
Observable<ResponseModel<Object>> sendMoneyLong(@Query("liveuid") String liveUid, @Query("gold_num") String goldNum);
@GET("/api/public/?service=Guard.sendMoneyLongList")
Observable<ResponseModel<List<sendMoneyLongListModel>>> sendMoneyLongList(@Query("liveuid") String liveUid);
@GET("/api/public/?service=Guard.participateMoneyLong")
Observable<ResponseModel<String>> participateMoneyLong(@Query("liveuid") String liveUid, @Query("send_money_long_key") String sendMoneyLongKey);
@GET("/api/public/?service=Guard.endSendMoneyLong")
Observable<ResponseModel<SendMoneyLongModel>> endSendMoneyLong(@Query("liveuid") String liveUid, @Query("send_money_long_key") String sendMoneyLongKey);
@GET("/api/public/?service=Guard.checkUpgrades")
Observable<ResponseModel<CheckUpgradesModel>> checkUpgrades(@Query("liveuid") String liveUid);
@GET("/api/public/?service=Guard.getRewards")
Observable<ResponseModel<Object>> guardGetRewards(@Query("guard_level") String guardLevel, @Query("liveuid") String liveUid);
@Multipart
@POST("/api/public/?service=Pdlinfos.updateAvatar")
Observable<ResponseModel<AvatarBean>> updateFile(@Part MultipartBody.Part file, @Query("uid") String uid, @Query("token") String token);
@GET("/api/public/?service=User.userFeedback")
Observable<ResponseModel<List<BaseModel>>> feedback(@Query("problem_description") String content, @Query("problem_image") String images, @Query("contact_information") String ci);
@GET("/api/public/?service=User.userFeedbackRestrict")
Observable<ResponseModel<List<BaseModel>>> checkFeedback();
/**
*
* @param roomId 房间ID
* @param cmd 事件名称 生命值:addHeart 自动跳:hit
* @param value 价格
* @param gameId 游戏ID
* @param fromUid 付费用户uid
* @param toUid 目标用户uid
* @param payload 附加值
* @return
*/
@GET("/api/public/?service=Sudgameserver.createOrder")
Observable<ResponseModel<List<BaseModel>>> createGameOrder(
@Query("room_id")String roomId,
@Query("cmd")String cmd,
@Query("value")String value,
@Query("mg_id")String gameId,
@Query("from_uid")String fromUid,
@Query("to_uid")String toUid,
@Query("payload")String payload
);
}

View File

@@ -4,9 +4,12 @@ import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import com.alibaba.fastjson.JSONArray;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.R;
import com.yunbao.common.bean.ActiveModel;
import com.yunbao.common.bean.AvatarBean;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.BattlePassPoints;
import com.yunbao.common.bean.BattlePassTask;
@@ -14,6 +17,7 @@ import com.yunbao.common.bean.BattlePassUserInfoBean;
import com.yunbao.common.bean.BlindBoxInfoModel;
import com.yunbao.common.bean.CheckLiveModel;
import com.yunbao.common.bean.CheckRemainingBalance;
import com.yunbao.common.bean.CheckUpgradesModel;
import com.yunbao.common.bean.CoolConfig;
import com.yunbao.common.bean.CreateSudRoomModel;
import com.yunbao.common.bean.CustomSidebarInfoModel;
@@ -27,6 +31,8 @@ import com.yunbao.common.bean.GiftGuideModel;
import com.yunbao.common.bean.GiftNamingInfoModel;
import com.yunbao.common.bean.GiftWallGiftDetail;
import com.yunbao.common.bean.GiftWallModel;
import com.yunbao.common.bean.GuardGetGuardOpenInfoModel;
import com.yunbao.common.bean.GuardGetGuardUserInfoModel;
import com.yunbao.common.bean.HttpCallbackModel;
import com.yunbao.common.bean.LinkMicUserBean;
import com.yunbao.common.bean.LinkMicUserBeanV2;
@@ -56,6 +62,8 @@ import com.yunbao.common.bean.RedPacketDetailsBean;
import com.yunbao.common.bean.RedPacketGiftModel;
import com.yunbao.common.bean.RedPacketInfoModel;
import com.yunbao.common.bean.RedPacketListBean;
import com.yunbao.common.bean.RoomMicStatusModel;
import com.yunbao.common.bean.SendMoneyLongModel;
import com.yunbao.common.bean.SetAttentsModel;
import com.yunbao.common.bean.StarChallengeStatusModel;
import com.yunbao.common.bean.SudGameUserModel;
@@ -66,6 +74,7 @@ import com.yunbao.common.bean.UserAvatarSelectBean;
import com.yunbao.common.bean.VipModel;
import com.yunbao.common.bean.WishListGiftConfModel;
import com.yunbao.common.bean.WishListModel;
import com.yunbao.common.bean.sendMoneyLongListModel;
import com.yunbao.common.event.CheckCurrencyModel;
import com.yunbao.common.http.API;
import com.yunbao.common.http.ResponseModel;
@@ -73,6 +82,7 @@ import com.yunbao.common.http.base.CheckLiveCallBack;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.utils.WordUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -82,6 +92,10 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.http.Query;
/**
@@ -2674,9 +2688,7 @@ public class LiveNetManager {
.observeOn(AndroidSchedulers.mainThread())
.subscribe(responseModel -> {
if (callback != null) {
if (callback != null) {
callback.onSuccess(new HttpCallbackModel(responseModel.getData().getCode(), responseModel.getData().getMsg()));
}
callback.onSuccess(new HttpCallbackModel(responseModel.getData().getCode(), responseModel.getData().getMsg()));
}
}, new Consumer<Throwable>() {
@Override
@@ -2771,9 +2783,9 @@ public class LiveNetManager {
}).isDisposed();
}
public void addChatCount(HttpCallback<HttpCallbackModel> callback) {
public void addChatCount(String stream, HttpCallback<HttpCallbackModel> callback) {
API.get().pdLiveApi(mContext)
.addChatCount()
.addChatCount(stream)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(responseModel -> {
@@ -2908,6 +2920,371 @@ public class LiveNetManager {
}).isDisposed();
}
public void getRoomMicStatus(HttpCallback<RoomMicStatusModel> callback) {
API.get().pdLiveApi(mContext)
.getRoomMicStatus()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<RoomMicStatusModel>>() {
@Override
public void accept(ResponseModel<RoomMicStatusModel> roomMicStatusModelResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(roomMicStatusModelResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void getGuardUserInfo(String liveUid, HttpCallback<GuardGetGuardUserInfoModel> callback) {
API.get().pdLiveApi(mContext)
.getGuardUserInfo(liveUid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<GuardGetGuardUserInfoModel>>() {
@Override
public void accept(ResponseModel<GuardGetGuardUserInfoModel> guardGetGuardUserInfoModelResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(guardGetGuardUserInfoModelResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void getGuardOpenInfo(String liveUid, HttpCallback<GuardGetGuardOpenInfoModel> callback) {
API.get().pdLiveApi(mContext)
.getGuardOpenInfo(liveUid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<GuardGetGuardOpenInfoModel>>() {
@Override
public void accept(ResponseModel<GuardGetGuardOpenInfoModel> guardGetGuardOpenInfoModelResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(guardGetGuardOpenInfoModelResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void openGuard(String liveUid, String guardType, String priceKey, String stream, HttpCallback<String> callback) {
API.get().pdLiveApi(mContext)
.openGuard(liveUid, guardType, priceKey, stream)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<Object>>() {
@Override
public void accept(ResponseModel<Object> stringResponseModel) throws Exception {
if (callback != null) {
if (stringResponseModel.getData().getCode() == 0) {
callback.onSuccess(stringResponseModel.getData().getMsg());
} else if (stringResponseModel.getData().getCode() == 1001) {
callback.onSuccess("22");
} else {
callback.onError(stringResponseModel.getData().getMsg());
}
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void sendMoneyLongList(String liveUid, HttpCallback<List<sendMoneyLongListModel>> callback) {
API.get().pdLiveApi(mContext)
.sendMoneyLongList(liveUid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<sendMoneyLongListModel>>>() {
@Override
public void accept(ResponseModel<List<sendMoneyLongListModel>> stringResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(stringResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void sendMoneyLong(String liveUid, String goldNum, HttpCallback<String> callback) {
API.get().pdLiveApi(mContext)
.sendMoneyLong(liveUid, goldNum)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<Object>>() {
@Override
public void accept(ResponseModel<Object> stringResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(stringResponseModel.getData().getMsg());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void participateMoneyLong(String liveUid, String sendMoneyLongKey, HttpCallback<String> callback) {
API.get().pdLiveApi(mContext)
.participateMoneyLong(liveUid, sendMoneyLongKey)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<String>>() {
@Override
public void accept(ResponseModel<String> stringResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(stringResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void endSendMoneyLong(String liveUid, String sendMoneyLongKey, HttpCallback<SendMoneyLongModel> callback) {
API.get().pdLiveApi(mContext)
.endSendMoneyLong(liveUid, sendMoneyLongKey)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<SendMoneyLongModel>>() {
@Override
public void accept(ResponseModel<SendMoneyLongModel> stringResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(stringResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void checkUpgrades(String liveUid, HttpCallback<CheckUpgradesModel> callback) {
API.get().pdLiveApi(mContext)
.checkUpgrades(liveUid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<CheckUpgradesModel>>() {
@Override
public void accept(ResponseModel<CheckUpgradesModel> listResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(listResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void guardGetRewards(String guardLevel, String liveUid, HttpCallback<Object> callback) {
API.get().pdLiveApi(mContext)
.guardGetRewards("0", liveUid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<Object>>() {
@Override
public void accept(ResponseModel<Object> listResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(listResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void updateFile(File file, HttpCallback<AvatarBean> callback) {
MultipartBody.Part uploadFile = createUploadFile(file);
API.get().pdLiveApi(mContext)
.updateFile(uploadFile, CommonAppConfig.getInstance().getUid(), CommonAppConfig.getInstance().getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<AvatarBean>>() {
@Override
public void accept(ResponseModel<AvatarBean> model) throws Exception {
if (callback != null) {
callback.onSuccess(model.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(com.yunbao.common.R.string.net_error));
}
}
}).isDisposed();
}
public void feedback(
String content,
JSONArray images,
String ci
, HttpCallback<HttpCallbackModel> callback) {
API.get().pdLiveApi(mContext)
.feedback(content, images.toString(), ci)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<BaseModel>>>() {
@Override
public void accept(ResponseModel<List<BaseModel>> responseModel) {
if (callback != null) {
HttpCallbackModel model = new HttpCallbackModel();
model.setCode(responseModel.getData().getCode());
model.setMsg(responseModel.getData().getMsg());
callback.onSuccess(model);
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(com.yunbao.common.R.string.net_error));
}
}
}).isDisposed();
}
public void checkFeedback(
HttpCallback<HttpCallbackModel> callback) {
API.get().pdLiveApi(mContext)
.checkFeedback()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<BaseModel>>>() {
@Override
public void accept(ResponseModel<List<BaseModel>> responseModel) {
if (callback != null) {
HttpCallbackModel model = new HttpCallbackModel();
model.setCode(responseModel.getData().getCode());
model.setMsg(responseModel.getData().getMsg());
callback.onSuccess(model);
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(com.yunbao.common.R.string.net_error));
}
}
}).isDisposed();
}
public void createGameOrder(
String roomId,
String cmd,
String value,
String gameId,
String fromUid,
String toUid,
String roundId,
String payload
, HttpCallback<HttpCallbackModel> callback) {
API.get().pdLiveApi(mContext)
.createGameOrder(roomId, cmd, value, gameId, fromUid, toUid,payload)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<BaseModel>>>() {
@Override
public void accept(ResponseModel<List<BaseModel>> responseModel) {
if (callback != null) {
HttpCallbackModel model = new HttpCallbackModel();
model.setCode(responseModel.getData().getCode());
model.setMsg(responseModel.getData().getMsg());
callback.onSuccess(model);
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(com.yunbao.common.R.string.net_error));
}
}
}).isDisposed();
}
private MultipartBody.Part createUploadFile(File file) {
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
return MultipartBody.Part.createFormData("file", file.getName(), requestBody);
}
/**
* 直播间取消网络请求
*/

View File

@@ -13,6 +13,7 @@ import com.yunbao.common.http.API;
import com.yunbao.common.http.ResponseData;
import com.yunbao.common.http.ResponseModel;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.utils.WordUtil;
import java.util.HashMap;
import java.util.List;
@@ -54,7 +55,7 @@ public class MainNetManager {
* @param callback 网络请求回调
*/
public void login(String phoneNum, String pwd, String uuid, HttpCallback<IMLoginModel> callback) {
API.get().pdLiveApi(mContext).loginByManager(phoneNum, pwd, uuid, "", "Android")
API.get().pdLiveApi(mContext).loginByManager(phoneNum, pwd, uuid, "", "Android", WordUtil.isNewZh()?"chinese":"english")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<IMLoginModel>>() {

View File

@@ -1,16 +1,62 @@
package com.yunbao.common.interfaces;
import android.content.Context;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.AvatarBean;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.upload.UploadBean;
import com.yunbao.common.upload.UploadCallback;
import com.yunbao.common.upload.UploadQnImpl;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* Created by cxf on 2018/9/29.
*/
public interface ImageResultCallback {
public abstract class ImageResultCallback {
//跳转相机前执行
void beforeCamera();
public void beforeCamera() {
}
void onSuccess(File file);
public void onSuccess(File file) {
}
void onFailure();
}
public void onFailure() {
}
public void onSuccessToUrl(File file, OnItemClickListener<String> listener) {
LiveNetManager.get(CommonAppContext.getTopActivity())
.updateFile(file, new com.yunbao.common.http.base.HttpCallback<AvatarBean>() {
@Override
public void onSuccess(AvatarBean data) {
listener.onItemClick(data.getAvatar(), 0);
}
@Override
public void onError(String error) {
listener.onItemClick(error, -1);
}
});
}
public void onSuccessToQiNiuUrl(Context mContext, File file, OnItemClickListener<String> listener) {
UploadQnImpl mUploadStrategy = new UploadQnImpl(mContext);
List<UploadBean> beans = new ArrayList<>();
beans.add(new UploadBean(file, UploadBean.IMG));
mUploadStrategy.upload(beans, true, new UploadCallback() {
@Override
public void onFinish(List<UploadBean> list, boolean success) {
if (success) {
listener.onItemClick("https://downs.yaoulive.com/" + list.get(0).getRemoteAccessUrl(), 0);
} else {
listener.onItemClick(null, -1);
}
}
}, true);
}
}

View File

@@ -8,14 +8,16 @@ import android.text.TextUtils;
import androidx.annotation.NonNull;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.lzf.easyfloat.EasyFloat;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.event.DataUserInfoEvent;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.HttpClient;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.manager.base.BaseCacheManager;
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
@@ -52,6 +54,15 @@ public class IMLoginManager extends BaseCacheManager {
private final String KEY_LANGUAGE = "language";
private final String KEY_GAME = "key_game";
private final String GUARD_TYPE = "key_GUARD_TYPE";
public void setGuardType(int guardType) {
put(GUARD_TYPE, guardType);
}
public int getGuardType() {
return getInt(GUARD_TYPE, 0);
}
public void setRedPoint() {
put("RedPoint", "1");
@@ -60,7 +71,24 @@ public class IMLoginManager extends BaseCacheManager {
public boolean getRedPoint() {
return !TextUtils.isEmpty(getString("RedPoint")) || !TextUtils.equals(getString("RedPoint"), "1");
}
public void setQuickGiftIfFirst() {
public void setGuardRedPoint() {
put("GuardRedPoint", "1");
}
public boolean getGuardRedPoint() {
String GuardRedPoint = getString("GuardRedPoint");
if (TextUtils.isEmpty(GuardRedPoint)) {
return true;
}
if (!TextUtils.equals(GuardRedPoint, "1")) {
return true;
}
return false;
}
public void setQuickGiftIfFirst() {
put("quick_gift_if_first", "1");
}
@@ -510,4 +538,40 @@ public class IMLoginManager extends BaseCacheManager {
});
}
public void updateUserCoin() {
HttpClient.getInstance().get("User.getUserBalance", "User.getUserBalance")
.execute(new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0) {
JSONObject obj = JSONObject.parseObject(info[0]);
String golds = obj.getString("gold");
String coins = obj.getString("coin");
String yuanbaos = obj.getString("yuanbao");
userInfo.setCoin(obj.getLong("coin"));
userInfo.setGold(obj.getLong("gold"));
userInfo.setYuanbao(yuanbaos);
}
}
});
}
public void updateUserCoin(OnItemClickListener<JSONObject> listener) {
HttpClient.getInstance().get("User.getUserBalance", "User.getUserBalance")
.execute(new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0) {
JSONObject obj = JSONObject.parseObject(info[0]);
listener.onItemClick(obj, 0);
String golds = obj.getString("gold");
String coins = obj.getString("coin");
String yuanbaos = obj.getString("yuanbao");
userInfo.setCoin(obj.getLong("coin"));
userInfo.setGold(obj.getLong("gold"));
userInfo.setYuanbao(yuanbaos);
}
}
});
}
}

View File

@@ -5,6 +5,7 @@ import android.content.Context;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.yunbao.common.bean.FansModel;
import com.yunbao.common.bean.NewGuardLevelModel;
import com.yunbao.common.bean.NewLevelModel;
import com.yunbao.common.manager.base.BaseCacheManager;
@@ -19,10 +20,12 @@ public class NewLevelManager extends BaseCacheManager {
private final String KEY_ANCHOR_LEVEL = "keyAnchorLevel";
private final String KEY_LIVE_LEVEL = "keyLiveLevel";
private final String KEY_FANS_LEVEL = "keyFansLevel";
private final String KEY_GUARD_LEVEL = "keyGuardLevel";
private List<NewLevelModel> newLevelModels = new ArrayList<>();
private List<NewLevelModel> keyAnchorLevel = new ArrayList<>();
private List<FansModel> fansModels = new ArrayList<>();
private List<NewGuardLevelModel> newGuardLevelModels = new ArrayList<>();
public NewLevelManager(Context context) {
super(context);
@@ -62,6 +65,29 @@ public class NewLevelManager extends BaseCacheManager {
return fansModel;
}
public void upDataGuardLevel(String json) {
newGuardLevelModels = new Gson().fromJson(json, new TypeToken<List<NewGuardLevelModel>>() {
}.getType());
put(KEY_GUARD_LEVEL, newGuardLevelModels);
}
public List<NewGuardLevelModel> getGuardLevel() {
newGuardLevelModels = getList(KEY_GUARD_LEVEL, new TypeToken<List<NewGuardLevelModel>>() {
}.getType());
return newGuardLevelModels;
}
public NewGuardLevelModel getGuardModel(int type) {
getGuardLevel();
NewGuardLevelModel guardLevelModel = null;
for (NewGuardLevelModel model : newGuardLevelModels) {
if (model.getGuardType() == type) {
guardLevelModel = model;
}
}
return guardLevelModel;
}
/**
* 获取等级数据
*

View File

@@ -245,7 +245,7 @@ public class GameMicManager {
try {
getView().onSubscribeSuccess(userID,mute,position);
getView().onSubscribeSuccess(userID, mute, position);
} catch (IllegalStateException e) {
e.printStackTrace();
}
@@ -355,39 +355,44 @@ public class GameMicManager {
RCRTCEngine.getInstance().getDefaultAudioStream().setAudioQuality(RCRTCParamsType.AudioQuality.MUSIC_HIGH, RCRTCParamsType.AudioScenario.MUSIC_CHATROOM);
}
public void joinRoom(String roomId) {
public void joinRoom(String roomId, boolean imOff) {
mRoomID = roomId;
RCRTCRoomConfig roomConfig = RCRTCRoomConfig.Builder.create()
// 根据实际场景选择音视频直播LIVE_AUDIO_VIDEO 或音频直播LIVE_AUDIO
.setRoomType(RCRTCRoomType.MEETING)
if (imOff) {
.build();
RCRTCEngine.getInstance().joinRoom("v" + roomId, roomConfig, new IRCRTCResultDataCallback<RCRTCRoom>() {
@Override
public void onSuccess(final RCRTCRoom rcrtcRoom) {
GameMicManager.this.mRtcRoom = rcrtcRoom;
// 注册房间回调
rcrtcRoom.registerRoomListener(roomEventsListener);
try {
getView().onJoinRoomSuccess(rcrtcRoom);
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
RCRTCRoomConfig roomConfig = RCRTCRoomConfig.Builder.create()
// 根据实际场景选择音视频直播LIVE_AUDIO_VIDEO 或音频直播LIVE_AUDIO
.setRoomType(RCRTCRoomType.MEETING)
@Override
public void onFailed(RTCErrorCode rtcErrorCode) {
try {
getView().onJoinRoomFailed(rtcErrorCode);
} catch (IllegalStateException e) {
e.printStackTrace();
.build();
RCRTCEngine.getInstance().joinRoom("v" + roomId, roomConfig, new IRCRTCResultDataCallback<RCRTCRoom>() {
@Override
public void onSuccess(final RCRTCRoom rcrtcRoom) {
GameMicManager.this.mRtcRoom = rcrtcRoom;
// 注册房间回调
rcrtcRoom.registerRoomListener(roomEventsListener);
try {
getView().onJoinRoomSuccess(rcrtcRoom);
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
}
});
@Override
public void onFailed(RTCErrorCode rtcErrorCode) {
try {
getView().onJoinRoomFailed(rtcErrorCode);
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
});
}
RongChatRoomClient.getInstance().joinChatRoom("v" + roomId, -1, new IRongCoreCallback.OperationCallback() {
@Override
public void onSuccess() {
Log.i("tx", "加入成功");
enterRoom();
}
@@ -436,7 +441,18 @@ public class GameMicManager {
SudGameSocketImEvent.MsgDTO msgDTO = msgDTOS.get(0);
//正常文字消息
if (TextUtils.equals(msgDTO.getMethod(), "SendMsg")) {
getView().insertItem(new SudGameChatImModel().setNickname(msgDTO.getUname()).setTextMessage(msgDTO.getCt()));
getView().insertItem(new SudGameChatImModel().setWelcomMessage(false).setNickname(msgDTO.getUname()).setTextMessage(msgDTO.getCt()));
} else if (TextUtils.equals(msgDTO.getMethod(), "welcomMessage")) {
// 欢迎(用户名)进入房间 Welcome (username) to the room
StringBuffer stringBuffer = new StringBuffer();
if (WordUtil.isNewZh()) {
stringBuffer.append("歡迎 ").append(msgDTO.getCt()).append(" 進入房間");
} else {
stringBuffer.append("Welcome ").append(msgDTO.getCt()).append(" to enter the room");
}
getView().insertItem(new SudGameChatImModel().setWelcomMessage(true).setNickname(msgDTO.getCt()).setTextMessage(stringBuffer.toString()));
} else if (TextUtils.equals(msgDTO.getMethod(), "sudGameRoomVoiceList")) {
List<SudGameUserModel> personList = new Gson().fromJson(msgDTO.getCt(), new TypeToken<List<SudGameUserModel>>() {
}.getType());
@@ -447,12 +463,7 @@ public class GameMicManager {
}
}
/**
* 发送聊天信息
*
* @param textMessage
*/
public void sendMessage(String textMessage) {
private void sendChatMessage(String textMessage, String method) {
IMLoginModel loginModel = IMLoginManager.get(CommonAppContext.sInstance.getApplicationContext()).getUserInfo();
SudGameSocketImEvent sudGameSocketImEvent = new SudGameSocketImEvent();
sudGameSocketImEvent.setRetcode("000000");
@@ -463,7 +474,7 @@ public class GameMicManager {
.setCt(textMessage)
.setEquipment("app")
.setUid(String.valueOf(loginModel.getId()))
.setMethod("SendMsg")
.setMethod(method)
.setUname(loginModel.getUserNicename())
.setRoomnum(mRoomID);
@@ -490,11 +501,28 @@ public class GameMicManager {
@Override
public void onError(Message message, RongIMClient.ErrorCode errorCode) {
Log.i("tx", "发送成功" + errorCode.toString());
}
});
}
/**
* 发送聊天信息
*
* @param textMessage
*/
public void sendMessage(String textMessage) {
sendChatMessage(textMessage, "SendMsg");
}
/**
* 进房间
*/
public void enterRoom() {
IMLoginModel loginModel = IMLoginManager.get(CommonAppContext.sInstance.getApplicationContext()).getUserInfo();
sendChatMessage(loginModel.getUserNicename(), "welcomMessage");
}
/**
* activity相关回调
*/
@@ -515,9 +543,11 @@ public class GameMicManager {
void onSubscribeSuccess(List<RCRTCInputStream> inputStreamList);
void onSubscribeFailed();
void onSubscribeSuccess(String userID,boolean mute, int position);
void onSubscribeSuccess(String userID, boolean mute, int position);
void onSubscribeFailed(String userID);
void onUserJoined(RCRTCRemoteUser rcrtcRemoteUser);
void onUserLeft(RCRTCRemoteUser rcrtcRemoteUser);

View File

@@ -66,6 +66,7 @@ public class RongcloudIMManager {
SpeechUtility.createUtility(application.getApplicationContext(), params);
}
private static RongIMClient.OnReceiveMessageWrapperListener mListener;
/**

View File

@@ -11,7 +11,6 @@ import com.samsung.android.sdk.iap.lib.listener.OnPaymentListener;
import com.samsung.android.sdk.iap.lib.vo.ConsumeVo;
import com.samsung.android.sdk.iap.lib.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib.vo.OwnedProductVo;
import com.samsung.android.sdk.iap.lib.vo.PurchaseVo;
import com.yunbao.common.utils.L;
import java.util.ArrayList;
@@ -41,9 +40,16 @@ public class SamsungUtil {
public void init() {
iapHelper = IapHelper.getInstance(mContext);
//设置支付模式 OPERATION_MODE_PRODUCTION 正式模式 OPERATION_MODE_TEST 测试模式
iapHelper.setOperationMode(HelperDefine.OperationMode.OPERATION_MODE_TEST);
iapHelper.setOperationMode(HelperDefine.OperationMode.OPERATION_MODE_PRODUCTION);
}
public void dispose() {
if (iapHelper != null) {
iapHelper.dispose();
}
}
/**
* 购买
*

View File

@@ -9,6 +9,7 @@ import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.Toast;
import com.alibaba.fastjson.JSONObject;
import com.yunbao.common.sud.decorator.SudFSMMGCache;
import com.yunbao.common.sud.decorator.SudFSMMGDecorator;
import com.yunbao.common.sud.decorator.SudFSMMGListener;
@@ -16,7 +17,10 @@ import com.yunbao.common.sud.decorator.SudFSTAPPDecorator;
import com.yunbao.common.sud.model.GameConfigModel;
import com.yunbao.common.sud.model.GameViewInfoModel;
import com.yunbao.common.sud.state.MGStateResponse;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.SudJsonUtils;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import tech.sud.mgp.core.ISudFSMStateHandle;
import tech.sud.mgp.core.ISudFSTAPP;
@@ -142,7 +146,10 @@ public abstract class BaseGameViewModel implements SudFSMMGListener {
// 给装饰类设置回调
sudFSMMGDecorator.setSudFSMMGListener(this);
sudFSMMGDecorator.setGameId(gameId);
sudFSMMGDecorator.setRoomId(gameRoomId);
sudFSMMGDecorator.setUserId(getUserId());
Log.i("游戏回调", code + " " + gameId + " " + gameRoomId + " ");
// 调用游戏sdk加载游戏
ISudFSTAPP iSudFSTAPP = SudMGP.loadMG(activity, getUserId(), gameRoomId, code, gameId, getLanguageCode(), sudFSMMGDecorator);
@@ -282,6 +289,28 @@ public abstract class BaseGameViewModel implements SudFSMMGListener {
public void onGameLog(String str) {
SudFSMMGListener.super.onGameLog(str);
Log.e("onGameStarted", "游戏日志:" + str);
if (!StringUtil.isEmpty()) {
try {
JSONObject json = JSONObject.parseObject(str);
if ("error".equals(json.getString("level"))) {
String msg = json.getString("msg");
JSONObject error = JSONObject.parseObject(msg);
if (error.containsKey("msg")) {
int resultCode = error.getInteger("resultCode");
switch (resultCode) {
case 100503:
ToastUtil.show(WordUtil.isNewZh()?"有玩家未点击准备":"There are players who haven't clicked \"Ready\" yet.");
break;
case 100504:
ToastUtil.show(WordUtil.isNewZh()?"小于游戏最小开始人数":"The number of players is less than the minimum required to start the game.");
break;
}
}
}
} catch (Exception ignore) {
}
}
}
/**

View File

@@ -59,7 +59,7 @@ public class QuickStartGameViewModel extends BaseGameViewModel {
/**
* 游戏的语言代码
*/
public String languageCode = "zh-CN";
public String languageCode = "zh-TW";
public final MutableLiveData<View> gameViewLiveData = new MutableLiveData<>(); // 游戏View回调
@@ -69,7 +69,7 @@ public class QuickStartGameViewModel extends BaseGameViewModel {
@Override
protected void getCode(Activity activity, String userId, String appId, GameGetCodeListener listener) {
if (IMLoginManager.get(activity).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
languageCode = "zh-CN";
languageCode = "zh-TW";
}else {
languageCode = "en-US";
}

View File

@@ -23,6 +23,10 @@ import tech.sud.mgp.core.ISudFSMStateHandle;
*/
public class SudFSMMGDecorator implements ISudFSMMG {
private static final String TAG = "游戏回调";
private long gameId;
private String gameRoomId;
private String userId;
// 回调
private SudFSMMGListener sudFSMMGListener;
@@ -227,10 +231,10 @@ public class SudFSMMGDecorator implements ISudFSMMG {
}
break;
case SudMGPMGState.MG_COMMON_GAME_STATE: // 10. 游戏状态
Log.e("onGameStateChange", "mg_common_game_state:::::" + "dataJson:::::"+dataJson);
Log.e("onGameStateChange", "mg_common_game_state:::::" + "dataJson:::::" + dataJson);
SudMGPMGState.MGCommonGameState mgCommonGameState = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameState.class);
sudFSMMGCache.onGameMGCommonGameState(mgCommonGameState);
if (mgCommonGameState.gameState==2){
if (mgCommonGameState.gameState == 2) {
Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_GAME_STATE));
}
if (listener == null) {
@@ -354,6 +358,14 @@ public class SudFSMMGDecorator implements ISudFSMMG {
break;
case SudMGPMGState.MG_COMMON_GAME_CREATE_ORDER: // 25. 创建订单
SudMGPMGState.MGCommonGameCreateOrder mgCommonGameCreateOrder = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameCreateOrder.class);
if (mgCommonGameCreateOrder != null) {
mgCommonGameCreateOrder.gameId = gameId;
mgCommonGameCreateOrder.gameRoomId = gameRoomId;
mgCommonGameCreateOrder.userId = userId;
mgCommonGameCreateOrder.dataJson = dataJson;
}
Log.i(TAG, "onGameStateChange: " + dataJson);
if (listener == null) {
ISudFSMStateHandleUtils.handleSuccess(handle);
} else {
@@ -1021,4 +1033,15 @@ public class SudFSMMGDecorator implements ISudFSMMG {
return sudFSMMGCache;
}
public void setGameId(long gameId) {
this.gameId = gameId;
}
public void setRoomId(String gameRoomId) {
this.gameRoomId = gameRoomId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}

View File

@@ -5,6 +5,7 @@
package com.yunbao.common.sud.decorator;
import com.yunbao.common.sud.decorator.game.JumpEvent;
import com.yunbao.common.sud.state.SudMGPMGState;
import com.yunbao.common.utils.ISudFSMStateHandleUtils;
@@ -271,7 +272,13 @@ public interface SudFSMMGListener {
* mg_common_game_create_order
*/
default void onGameMGCommonGameCreateOrder(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameCreateOrder model) {
ISudFSMStateHandleUtils.handleSuccess(handle);
if ("addHeart".equals(model.cmd)) {
JumpEvent.addHeart(model);
} else if ("hit".equals(model.cmd)) {
JumpEvent.hit(model);
} else {
ISudFSMStateHandleUtils.handleSuccess(handle);
}
}
/**

View File

@@ -0,0 +1,55 @@
package com.yunbao.common.sud.decorator.game;
import com.yunbao.common.bean.HttpCallbackModel;
import com.yunbao.common.event.SubGameEvent;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.sud.state.SudMGPMGState;
import com.yunbao.common.utils.AppManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.ToastUtil;
public class JumpEvent {
private static long clickTimer = 0;
public static void addHeart(SudMGPMGState.MGCommonGameCreateOrder order) {
createOrder(order);
}
public static void hit(SudMGPMGState.MGCommonGameCreateOrder order) {
createOrder(order);
}
private synchronized static void createOrder(SudMGPMGState.MGCommonGameCreateOrder order) {
if (System.currentTimeMillis() - clickTimer < 500) {
//TODO 防止重复点击
HttpCallbackModel _data=new HttpCallbackModel(1001,"");
Bus.get().post(new SubGameEvent(0, _data,order.dataJson));
return;
}
clickTimer = System.currentTimeMillis();
LiveNetManager.get(AppManager.getInstance().getLastActivity())
.createGameOrder(order.gameRoomId,
order.cmd,
order.value + "",
order.gameId + "",
order.fromUid,
order.toUid,
order.gameRoomId,
order.payload,
new HttpCallback<HttpCallbackModel>() {
@Override
public void onSuccess(HttpCallbackModel data) {
if (data.getCode() != 0) {
ToastUtil.show(data.getMsg());
Bus.get().post(new SubGameEvent(0, data,order.dataJson));
}
}
@Override
public void onError(String error) {
}
});
}
}

View File

@@ -496,6 +496,11 @@ public class SudMGPMGState implements Serializable {
public String toUid; // 目标用户uid
public long value; // 所属的游戏价值
public String payload; // 扩展数据 json 字符串, 特殊可选
public long gameId;
public String gameRoomId;
public String userId;
public String dataJson;
}
/**

View File

@@ -0,0 +1,105 @@
package com.yunbao.common.upload;
import java.io.File;
/**
* Created by cxf on 2019/4/16.
*/
public class UploadBean {
public static final int IMG = 0;
public static final int VIDEO = 1;
public static final int VOICE = 2;
private File mOriginFile;//要被上传的源文件
private File mCompressFile;//压缩后的图片文件
private String mRemoteFileName;//上传成功后在云存储上的文件名字
private String mRemoteAccessUrl;//上传成功后在云存储上的访问地址
private boolean mSuccess;//是否上传成功了
private int mType;
private Object mTag;
public UploadBean() {
}
public UploadBean(File originFile, int type) {
mOriginFile = originFile;
mType = type;
}
public File getOriginFile() {
return mOriginFile;
}
public void setOriginFile(File originFile) {
mOriginFile = originFile;
}
public String getRemoteFileName() {
return mRemoteFileName;
}
public void setRemoteFileName(String remoteFileName) {
mRemoteFileName = remoteFileName;
}
public String getRemoteAccessUrl() {
return mRemoteAccessUrl;
}
public void setRemoteAccessUrl(String remoteAccessUrl) {
mRemoteAccessUrl = remoteAccessUrl;
}
public File getCompressFile() {
return mCompressFile;
}
public void setCompressFile(File compressFile) {
mCompressFile = compressFile;
}
public boolean isSuccess() {
return mSuccess;
}
public void setSuccess(boolean success) {
mSuccess = success;
}
public void setEmpty() {
mOriginFile = null;
mRemoteFileName = null;
mRemoteAccessUrl = null;
}
public boolean isEmpty() {
return mOriginFile == null && mRemoteFileName == null && mRemoteAccessUrl == null;
}
public int getType() {
return mType;
}
public Object getTag() {
return mTag;
}
public void setTag(Object tag) {
mTag = tag;
}
@Override
public String toString() {
return "UploadBean{" +
"mOriginFile=" + mOriginFile +
", mCompressFile=" + mCompressFile +
", mRemoteFileName='" + mRemoteFileName + '\'' +
", mRemoteAccessUrl='" + mRemoteAccessUrl + '\'' +
", mSuccess=" + mSuccess +
", mType=" + mType +
", mTag=" + mTag +
'}';
}
}

View File

@@ -0,0 +1,11 @@
package com.yunbao.common.upload;
import java.util.List;
/**
* Created by cxf on 2019/4/16.
*/
public interface UploadCallback {
void onFinish(List<UploadBean> list, boolean success);
}

View File

@@ -0,0 +1,224 @@
package com.yunbao.common.upload;
import android.content.Context;
import android.text.TextUtils;
import com.qiniu.android.common.ServiceAddress;
import com.qiniu.android.common.Zone;
import com.qiniu.android.http.ResponseInfo;
import com.qiniu.android.storage.Configuration;
import com.qiniu.android.storage.UpCompletionHandler;
import com.qiniu.android.storage.UploadManager;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.StringUtil;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.util.List;
import top.zibin.luban.Luban;
/**
* Created by cxf on 2019/4/16.
* 七牛上传文件
*/
public class UploadQnImpl implements UploadStrategy {
private static final String TAG = "UploadQnImpl";
private Context mContext;
private List<UploadBean> mList;
private int mIndex;
private boolean mNeedCompress;
private UploadCallback mUploadCallback;
private HttpCallback mGetUploadTokenCallback;
private String mToken;
private UploadManager mUploadManager;
private UpCompletionHandler mCompletionHandler;//上传回调
private Luban.Builder mLubanBuilder;
public UploadQnImpl(Context context) {
mContext = context;
mCompletionHandler = new UpCompletionHandler() {
@Override
public void complete(String key, ResponseInfo info, JSONObject response) {
System.out.println("UploadQnImpl 上传-----ok----> " + info.isOK() + "--key---> " + "---response---> " + (response != null ? response.toString() : null));
//L.e("UploadQnImpl 上传-----ok----> " + info.isOK() + "--key---> " + "---response---> " + (response != null ? response.toString() : null));
try {
assert response != null;
mList.get(mIndex).setRemoteAccessUrl(response.getString("key"));
} catch (JSONException e) {
throw new RuntimeException(e);
}
if (mList == null || mList.size() == 0) {
if (mUploadCallback != null) {
mUploadCallback.onFinish(mList, false);
}
return;
}
UploadBean uploadBean = mList.get(mIndex);
if (info.isOK()) {
uploadBean.setSuccess(true);
if (uploadBean.getType() == UploadBean.IMG && mNeedCompress) {
//上传完成后把 压缩后的图片 删掉
File compressedFile = uploadBean.getCompressFile();
if (compressedFile != null && compressedFile.exists()) {
File originFile = uploadBean.getOriginFile();
if (originFile != null && !compressedFile.getAbsolutePath().equals(originFile.getAbsolutePath())) {
compressedFile.delete();
}
}
}
mIndex++;
if (mIndex < mList.size()) {
uploadNext();
} else {
if (mUploadCallback != null) {
mUploadCallback.onFinish(mList, true);
}
}
} else {
upload(mList.get(mIndex));//上传失败后 重新上传
}
}
};
}
@Override
public void upload(List<UploadBean> list, boolean needCompress, UploadCallback callback, boolean isImg) {
System.err.println("-------upload------>" + list.size());
if (callback == null) {
return;
}
if (list == null || list.size() == 0) {
callback.onFinish(list, false);
return;
}
boolean hasFile = false;
for (UploadBean bean : list) {
if (bean.getOriginFile() != null) {
hasFile = true;
break;
}
}
if (!hasFile) {
callback.onFinish(list, true);
return;
}
mList = list;
mNeedCompress = needCompress;
mUploadCallback = callback;
mIndex = 0;
if (mGetUploadTokenCallback == null) {
mGetUploadTokenCallback = new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0 && info.length > 0) {
mToken = info[0];
System.err.println("-------上传的token------>" + mToken);
L.e(TAG, "-------上传的token------>" + mToken);
uploadNext();
}
}
};
}
CommonHttpUtil.getUploadQiNiuToken(mGetUploadTokenCallback, isImg);
}
@Override
public void cancelUpload() {
CommonHttpUtil.cancel(CommonHttpUtil.GET_UPLOAD_QI_NIU_TOKEN);
if (mList != null) {
mList.clear();
}
mUploadCallback = null;
}
private void uploadNext() {
UploadBean bean = null;
while (mIndex < mList.size() && (bean = mList.get(mIndex)).getOriginFile() == null) {
mIndex++;
}
System.err.println("-------mIndex >= mList.size() mIndex------>" + mIndex);
if (mIndex >= mList.size()) {
System.err.println("-------mIndex >= mList.size()------>" + mList.size());
if (mUploadCallback != null) {
mUploadCallback.onFinish(mList, true);
}
System.err.println("-------mIndex >= mList.returnreturnreturnreturn------>" + mList.size());
return;
}
if (bean.getType() == UploadBean.IMG) {
bean.setRemoteFileName(StringUtil.contact(StringUtil.generateFileName(), ".jpg"));
} else if (bean.getType() == UploadBean.VIDEO) {
bean.setRemoteFileName(StringUtil.contact(StringUtil.generateFileName(), ".mp4"));
} else if (bean.getType() == UploadBean.VOICE) {
bean.setRemoteFileName(StringUtil.contact(StringUtil.generateFileName(), ".m4a"));
}
System.err.println("-------mIndex >= bean.getType() == UploadBean.IMG------>" + bean);
upload(bean);
/*if (bean.getType() == UploadBean.IMG && mNeedCompress) {
System.err.println("-------UploadBean.IMG && mNeedCompress------>" + bean + "UploadBean.IMG:" + UploadBean.IMG + "__mNeedCompress" + mNeedCompress);
if (mLubanBuilder == null) {
mLubanBuilder = Luban.with(mContext).ignoreBy(8)//8k以下不压缩
.setTargetDir(CommonAppConfig.INNER_PATH).setRenameListener(new OnRenameListener() {
@Override
public String rename(String filePath) {
return mList.get(mIndex).getRemoteFileName();
}
}).setCompressListener(new OnCompressListener() {
@Override
public void onStart() {
}
@Override
public void onSuccess(File file) {
UploadBean uploadBean = mList.get(mIndex);
uploadBean.setCompressFile(file);
upload(uploadBean);
}
@Override
public void onError(Throwable e) {
upload(mList.get(mIndex));
}
});
}
mLubanBuilder.load(bean.getOriginFile()).launch();
} else {
System.err.println("-------bean.getType() == UploadBean.IMG && mNeedCompress else");
upload(bean);
}*/
}
private void upload(UploadBean bean) {
System.err.println("-------upload(UploadBean bean)------>" + bean);
if (bean != null && !TextUtils.isEmpty(mToken) && mCompletionHandler != null) {
System.err.println("bean != null && !TextUtils.isEmpty(mToken) && mCompletionHandler != null");
if (mUploadManager == null) {
Zone zone = new Zone(new ServiceAddress("http://upload-z0.qiniup.com"), new ServiceAddress("http://up-z0.qiniup.com"));
Configuration configuration = new Configuration.Builder().zone(zone).build();
mUploadManager = new UploadManager(configuration);
}
File uploadFile = bean.getOriginFile();
if (bean.getType() == UploadBean.IMG && mNeedCompress) {
File compressedFile = bean.getCompressFile();
if (compressedFile != null && compressedFile.exists()) {
uploadFile = compressedFile;
}
}
mUploadManager.put(uploadFile, bean.getRemoteFileName(), mToken, mCompletionHandler, null);
} else {
System.err.println("else bean != null && !TextUtils.isEmpty(mToken) && mCompletionHandler != null");
if (mUploadCallback != null) {
mUploadCallback.onFinish(mList, false);
}
}
}
}

View File

@@ -0,0 +1,24 @@
package com.yunbao.common.upload;
import java.util.List;
/**
* Created by cxf on 2019/4/16.
*/
public interface UploadStrategy {
/**
* 执行上传
*
* @param list 被上传的文件列表
* @param needCompress 是否需要压缩
* @param callback 上传回调
*/
void upload(List<UploadBean> list, boolean needCompress, UploadCallback callback,boolean isImg);
/**
* 取消上传
*/
void cancelUpload();
}

View File

@@ -9,6 +9,8 @@ import android.view.ViewTreeObserver;
import android.view.inputmethod.InputMethodManager;
import android.widget.FrameLayout;
import com.yunbao.common.activity.AbsActivity;
/**
* 修复全屏WebView输入法遮挡输入框的问题
* <a href="https://github.com/madebycm/AndroidBug5497Workaround/tree/master">GitHub</a>
@@ -21,11 +23,14 @@ public class AndroidBug5497Workaround {
public static void assistActivity(Activity activity) {
new AndroidBug5497Workaround(activity);
}
public static void assistActivity(View webView) {
new AndroidBug5497Workaround(webView);
}
private View mChildOfContent;
private int usableHeightPrevious;
private int defHeight = ViewGroup.LayoutParams.MATCH_PARENT;
private FrameLayout.LayoutParams frameLayoutParams;
private ViewGroup.LayoutParams frameLayoutParams;
private AndroidBug5497Workaround(Activity activity) {
FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content);
@@ -34,6 +39,7 @@ public class AndroidBug5497Workaround {
public void onGlobalLayout() {
possiblyResizeChildOfContent();
int heightDiff = mChildOfContent.getRootView().getHeight() - mChildOfContent.getHeight();
System.out.println("heightDiff = " + heightDiff);
if (heightDiff < 100) {
frameLayoutParams.height = defHeight;
mChildOfContent.requestLayout();
@@ -41,7 +47,24 @@ public class AndroidBug5497Workaround {
}
});
frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent.getLayoutParams();
frameLayoutParams = (ViewGroup.LayoutParams) mChildOfContent.getLayoutParams();
}
public AndroidBug5497Workaround(View content) {
mChildOfContent = content;
mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
possiblyResizeChildOfContent();
int heightDiff = mChildOfContent.getRootView().getHeight() - mChildOfContent.getHeight();
System.out.println("heightDiff = " + heightDiff);
if (heightDiff < 100) {
frameLayoutParams.height = defHeight;
mChildOfContent.requestLayout();
}
}
});
frameLayoutParams = (ViewGroup.LayoutParams) mChildOfContent.getLayoutParams();
}
private void possiblyResizeChildOfContent() {
@@ -51,7 +74,7 @@ public class AndroidBug5497Workaround {
int heightDifference = usableHeightSansKeyboard - usableHeightNow;
if (heightDifference > (usableHeightSansKeyboard / 4)) {
// keyboard probably just became visible
frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;
frameLayoutParams.height = usableHeightSansKeyboard - heightDifference - AbsActivity.getCurrentNavigationBarHeight((Activity) mChildOfContent.getContext());
} else {
// keyboard probably just became hidden
frameLayoutParams.height = usableHeightSansKeyboard;

View File

@@ -11,6 +11,7 @@ public class AppManager {
private static Stack<Activity> activityStack;
public AppManager() {
activityStack=new Stack<>();
}
/**
@@ -20,6 +21,33 @@ public class AppManager {
return SingleApp.INSTANCE;
}
public static Activity getActivity(String activityName) {
for (Activity activity : activityStack) {
if (activity.getClass().getSimpleName().contains(activityName)) {
return activity;
}
}
return null;
}
public Activity getMainActivity() {
for (Activity activity : activityStack) {
if (activity.getClass().getSimpleName().contains("MainActivity")) {
return activity;
}
}
return null;
}
public Activity getLiveActivity() {
for (Activity activity : activityStack) {
if (activity.getClass().getSimpleName().contains("LiveAudienceActivity")) {
return activity;
}
}
return null;
}
public static class SingleApp {
public static AppManager INSTANCE = new AppManager();
}
@@ -58,7 +86,14 @@ public class AppManager {
* 获取当前显示Activity堆栈中最后一个传入的activity
*/
public Activity getLastActivity() {
if (activityStack.isEmpty()) {
return null;
}
Activity activity = activityStack.lastElement();
if (activity == null || activity.isFinishing()) {
activityStack.remove(activity);
return getLastActivity();
}
return activity;
}
@@ -117,7 +152,7 @@ public class AppManager {
}
/**
*仅在debug下运行的代码
* 仅在debug下运行的代码
*/
public static void runDebugCode(Runnable runnable) {
if (BuildConfig.DEBUG) {

View File

@@ -1,5 +1,7 @@
package com.yunbao.common.utils;
import com.yunbao.common.http.Data;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -13,10 +15,13 @@ public class DateFormatUtil {
private static SimpleDateFormat sFormat2;
private static SimpleDateFormat sFormat3;
private static SimpleDateFormat sFormat4;
static {
sFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
sFormat2 = new SimpleDateFormat("yyyyMMdd_HHmmss_SSS");
sFormat3 = new SimpleDateFormat("MM.dd-HH:mm:ss");
sFormat4 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
}
@@ -24,6 +29,14 @@ public class DateFormatUtil {
return sFormat.format(new Date());
}
public static String getTimeString(long time) {
Date date = new Date(time); // 创建Date对象并传入时间戳参数
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 设置日期格式
String formattedDate = sdf.format(date); // 格式化日期字符串
return formattedDate;
}
public static String getVideoCurTimeString() {
return sFormat2.format(new Date());
}

View File

@@ -69,7 +69,8 @@ public class DialogUitl {
}
return dialog;
}
public static void showToast(Context context,String content,long delayMillis){
public static void showToast(Context context, String content, long delayMillis) {
Dialog dialog = new Dialog(context, R.style.dialog);
dialog.setContentView(R.layout.dialog_toast);
dialog.setCancelable(false);
@@ -82,7 +83,7 @@ public class DialogUitl {
}
}
dialog.show();
new Handler(Looper.getMainLooper()).postDelayed(dialog::dismiss,delayMillis);
new Handler(Looper.getMainLooper()).postDelayed(dialog::dismiss, delayMillis);
}
@@ -94,6 +95,16 @@ public class DialogUitl {
showSimpleTipDialog(context, null, content);
}
public static void showBackDialog(Context context, String content, String cancel, String sure, SimpleCallback callback) {
if (context instanceof Activity) {
if (((Activity) context).isDestroyed() || ((Activity) context).isFinishing()) {
return;
}
}
new Builder(context).setTitle(content).setCancelable(true).isShowContent(false).setCancelString(cancel).setConfirmString(sure).setClickCallback(callback).build().show();
}
public static void showSimpleTipDialog(Context context, String title, String content) {
if (context instanceof Activity) {
if (((Activity) context).isDestroyed() || ((Activity) context).isFinishing()) {
@@ -121,6 +132,38 @@ public class DialogUitl {
dialog.show();
}
public static void showDelSysMsg(Context context, String content, SimpleCallback simpleCallback) {
if (context instanceof Activity) {
if (((Activity) context).isDestroyed() || ((Activity) context).isFinishing()) {
return;
}
}
final Dialog dialog = new Dialog(context, R.style.dialog2);
dialog.setContentView(R.layout.dialog_del_sys_msg);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
if (!TextUtils.isEmpty(content)) {
TextView contentTextView = (TextView) dialog.findViewById(R.id.content);
contentTextView.setText(content);
}
dialog.findViewById(R.id.btn_cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.findViewById(R.id.btn_confirm).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
simpleCallback.onConfirmClick(dialog, "");
dialog.dismiss();
}
});
dialog.show();
}
public static void showSimpleDialog(Context context, String content, SimpleCallback callback) {
showSimpleDialog(context, content, false, callback);
}
@@ -135,13 +178,7 @@ public class DialogUitl {
return;
}
}
new Builder(context)
.setTitle(title)
.setContent(content)
.setCancelable(cancelable)
.setClickCallback(callback)
.build()
.show();
new Builder(context).setTitle(title).setContent(content).setCancelable(cancelable).setClickCallback(callback).build().show();
}
public static void showSimpleDialog(Context context, String title, String content, boolean cancelable, SimpleCallback3 callback) {
@@ -150,13 +187,7 @@ public class DialogUitl {
return;
}
}
new Builder(context)
.setTitle(title)
.setContent(content)
.setCancelable(cancelable)
.setClickCallback3(callback)
.build()
.show();
new Builder(context).setTitle(title).setContent(content).setCancelable(cancelable).setClickCallback3(callback).build().show();
}
public static void showSimpleInputDialog(Context context, String title, String hint, int inputType, int length, SimpleCallback callback) {
@@ -165,15 +196,7 @@ public class DialogUitl {
return;
}
}
new Builder(context).setTitle(title)
.setCancelable(true)
.setInput(true)
.setHint(hint)
.setInputType(inputType)
.setLength(length)
.setClickCallback(callback)
.build()
.show();
new Builder(context).setTitle(title).setCancelable(true).setInput(true).setHint(hint).setInputType(inputType).setLength(length).setClickCallback(callback).build().show();
}
@@ -335,9 +358,12 @@ public class DialogUitl {
private boolean mCancelable;
private boolean mBackgroundDimEnabled;//显示区域以外是否使用黑色半透明背景
private boolean mInput;//是否是输入框的
private boolean isShowCancelButton=true;
private boolean isSHowConfirmButton=true;
private String mHint;
private int mInputType;
private int mLength;
boolean isShowContent = true;
private SimpleCallback mClickCallback;
private SimpleCallback3 mClickCallback3;
private SimpleCallbackView mSimpleCallbackView;
@@ -380,6 +406,11 @@ public class DialogUitl {
return this;
}
public Builder isShowContent(boolean isShow) {
isShowContent = isShow;
return this;
}
public Builder setCancelable(boolean cancelable) {
mCancelable = cancelable;
return this;
@@ -425,6 +456,16 @@ public class DialogUitl {
return this;
}
public Builder setShowCancelButton(boolean showCancelButton) {
isShowCancelButton = showCancelButton;
return this;
}
public Builder setShowConfirmButton(boolean showConfirmButton) {
isSHowConfirmButton = showConfirmButton;
return this;
}
public Dialog build() {
final Dialog dialog = new Dialog(mContext, mBackgroundDimEnabled ? R.style.dialog : R.style.dialog2);
if (mView != 0) {
@@ -458,13 +499,28 @@ public class DialogUitl {
if (mLength > 0 && content instanceof EditText) {
content.setFilters(new InputFilter[]{new InputFilter.LengthFilter(mLength)});
}
if (!isShowContent) {
content.setVisibility(View.GONE);
}
TextView btnConfirm = (TextView) dialog.findViewById(R.id.btn_confirm);
if (!TextUtils.isEmpty(mConfirmString)) {
btnConfirm.setText(mConfirmString);
btnConfirm.setVisibility(View.VISIBLE);
}else if(mConfirmString==null){
// btnConfirm.setVisibility(View.GONE);
}
TextView btnCancel = (TextView) dialog.findViewById(R.id.btn_cancel);
if (!TextUtils.isEmpty(mCancelString)) {
btnCancel.setText(mCancelString);
btnCancel.setVisibility(View.VISIBLE);
}else if(mCancelString==null){
//btnCancel.setVisibility(View.GONE);
}
if(!isSHowConfirmButton){
btnConfirm.setVisibility(View.GONE);
}
if(!isShowCancelButton){
btnCancel.setVisibility(View.GONE);
}
View.OnClickListener listener = new View.OnClickListener() {
@Override
@@ -483,8 +539,8 @@ public class DialogUitl {
mClickCallback3.onConfirmClick(dialog);
}
if (mSimpleCallbackView != null) {
mSimpleCallbackView.onConfirmClick(dialog,titleView, content, btnConfirm, btnCancel);
}else{
mSimpleCallbackView.onConfirmClick(dialog, titleView, content, btnConfirm, btnCancel);
} else {
dialog.dismiss();
}
@@ -501,8 +557,8 @@ public class DialogUitl {
((SimpleCallback2) mClickCallback).onCancelClick();
}
if (mSimpleCallbackView != null) {
mSimpleCallbackView.onCancel(dialog,titleView, content, btnConfirm, btnCancel);
}else{
mSimpleCallbackView.onCancel(dialog, titleView, content, btnConfirm, btnCancel);
} else {
dialog.dismiss();
}
}
@@ -510,17 +566,17 @@ public class DialogUitl {
}
}
};
if(btnConfirm!=null) {
if (btnConfirm != null) {
btnConfirm.setOnClickListener(listener);
}
if(btnCancel!=null) {
if (btnCancel != null) {
btnCancel.setOnClickListener(listener);
}
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialogInterface) {
if (mSimpleCallbackView != null) {
mSimpleCallbackView.onShow(dialog,titleView, content, btnConfirm, btnCancel);
mSimpleCallbackView.onShow(dialog, titleView, content, btnConfirm, btnCancel);
}
}
});
@@ -563,8 +619,7 @@ public class DialogUitl {
/**
* 城市选择
*/
public static void showCityChooseDialog(Activity activity, ArrayList<Province> list,
String province, String city, String district, AddressPicker.OnAddressPickListener listener) {
public static void showCityChooseDialog(Activity activity, ArrayList<Province> list, String province, String city, String district, AddressPicker.OnAddressPickListener listener) {
AddressPicker picker = new AddressPicker(activity, list);
picker.setTextColor(0xff323232);
picker.setDividerColor(0xffdcdcdc);

View File

@@ -11,6 +11,7 @@ import com.yunbao.common.R;
import org.json.JSONObject;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.Timer;
import java.util.TimerTask;
@@ -44,7 +45,7 @@ public class GoogleUtils {
public boolean getGoogleService() {
boolean flag;
boolean flag = false;
try {
Class<?> clz = mActivity.getClassLoader().loadClass("com.shayu.lib_google.utils.GoogleBillingManage");
googlePay = clz.getConstructor(Activity.class).newInstance(mActivity);
@@ -227,6 +228,20 @@ public class GoogleUtils {
}
}
public void setFirebaseCrashData(String uid, String userData, String isGoogle, String cpu, String runTime, String enterRoom, String slidingRoom, String playSvga, String ActivitySize) {
try {
Class<?> clz = mContext.getClassLoader().loadClass("com.shayu.lib_google.utils.FirebaseManage");
googlePay= clz.getConstructor(Context.class).newInstance(mContext);
googlePay.getClass()
.getMethod("setFirebaseCrashData", String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class)
.invoke(googlePay, uid, userData, isGoogle, cpu, runTime, enterRoom, slidingRoom, playSvga, ActivitySize);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public void setQueryPurchaseListener(Activity activity, QueryPurchasesListener queryPurchasesListener) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {

View File

@@ -8,7 +8,7 @@ import android.app.Activity;
import android.app.Dialog;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.JavascriptInterface;
@@ -17,14 +17,19 @@ import android.webkit.WebView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.lxj.xpopup.XPopup;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.CheckUpgradesModel;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.common.bean.ReportCommunityBean;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.bean.VideoBean;
import com.yunbao.common.bean.VideoListBean;
import com.yunbao.common.dialog.GuardUpgradePopup;
import com.yunbao.common.event.JavascriptInterfaceEvent;
import com.yunbao.common.event.LiveRoomChangeEvent;
import com.yunbao.common.event.QuickGiftingEvent;
@@ -372,6 +377,13 @@ public class JavascriptInterfaceUtils {
RouteUtil.forwardZhuangBanActivity(url);
}
@JavascriptInterface
public void openWebViewNew(String url) {
Bus.get().post(new JavascriptInterfaceEvent().setMethod("openWebView").setData(url));
Constants.isTitle = false;
RouteUtil.forwardZhuangBanActivity(CommonAppConfig.HOST + url);
}
@JavascriptInterface
public void openWebViewTitle(String url) {
Constants.isTitle = true;
@@ -607,7 +619,7 @@ public class JavascriptInterfaceUtils {
public void androidClickToTaskPage() {
ARouter.getInstance().build(PATH_REWARD).withString("url",
CommonAppConfig.HOST + "/index.php?g=Appapi&m=task&a=index" + "&uid=" + CommonAppConfig.getInstance().getUid()
+ "&token=" + CommonAppConfig.getInstance().getToken() + "&tabIndex=1"+ "&isZh=" + (WordUtil.isNewZh() ? "1" : "0")).navigation();
+ "&token=" + CommonAppConfig.getInstance().getToken() + "&tabIndex=1" + "&isZh=" + (WordUtil.isNewZh() ? "1" : "0")).navigation();
}
@JavascriptInterface
@@ -678,4 +690,27 @@ public class JavascriptInterfaceUtils {
});
}
@JavascriptInterface
public void androidGotoCustomerService(String url) {
ToastUtil.showDebug("网页跳客服页面");
RouteUtil.forwardCustomerService(url);
}
@JavascriptInterface
public void androidtoCommunityVideo() {
RouteUtil.forwardCommunityActivity();
}
@JavascriptInterface
public void getRewards(String checkUpgradesJson) {
try {
CheckUpgradesModel upgradesModel = new Gson().fromJson(checkUpgradesJson, CheckUpgradesModel.class);
if (!TextUtils.isEmpty(upgradesModel.getLevel()))
new XPopup.Builder(mWebView.getContext())
.asCustom(new GuardUpgradePopup(mWebView.getContext(), "", upgradesModel,null))
.show();
} catch (JsonSyntaxException e) {
throw new RuntimeException(e);
}
}
}

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