Merge branch 'master' into dev_6.5.5_语聊

# Conflicts:
#	Share/src/main/java/com/yunbao/share/ui/InvitePopDialog.java
#	Share/src/main/java/com/yunbao/share/ui/SharePopDialog.java
#	app/proguard-rules.pro
#	app/src/main/AndroidManifest.xml
#	build.gradle
#	common/build.gradle
#	common/src/main/java/com/yunbao/common/utils/JavascriptInterfaceUtils.java
#	common/src/main/java/com/yunbao/common/utils/ToastUtil.java
#	common/src/main/java/com/yunbao/common/utils/WordUtil.java
#	config.gradle
This commit is contained in:
zlzw 2023-11-09 15:20:39 +08:00
commit f15c609f1c
485 changed files with 19453 additions and 2421 deletions

View File

@ -1,96 +1,96 @@
<resources> <resources>
<string name="camera_dialog_title">警告</string> <string name="camera_dialog_title">警告</string>
<string name="sorry_no_permission">抱歉,你所使用的证书权限或SDK不包括该功能。</string> <string name="sorry_no_permission">抱歉,你所使用的證書權限或SDK不包括該功能。</string>
<string name="camera_dialog_message">机权限被禁用或者相机被别的应用占用!</string> <string name="camera_dialog_message">機權限被禁用或者相機被別的應用佔用!</string>
<string name="camera_dialog_open"></string> <string name="camera_dialog_open"></string>
<string name="camera_dialog_back">退出</string> <string name="camera_dialog_back">退出</string>
<string name="fu_base_debug">Resolution:\n\t%dX%d\nFPS: %d\nRender time:\n\t%dms</string> <string name="fu_base_debug">Resolution:\n\t%dX%d\nFPS: %d\nRender time:\n\t%dms</string>
<string name="save_photo_success">保存照片成功!</string> <string name="save_photo_success">保存照片成功!</string>
<string name="save_video_success">保存视频成功!</string> <string name="save_video_success">保存視頻成功!</string>
<string name="save_video_failed">保存视频失败</string> <string name="save_video_failed">保存視頻失敗</string>
<string name="save_video_too_short">视频太短啦!</string> <string name="save_video_too_short">視頻太短啦!</string>
<string name="save_video_wait">视频处理中请稍等</string> <string name="save_video_wait">視頻處理中請稍等</string>
<string name="fu_base_is_tracking_text">检测到人脸</string> <string name="fu_base_is_tracking_text">檢測到人臉</string>
<string name="fu_base_incomplete_face_text">不全</string> <string name="fu_base_incomplete_face_text">不全</string>
<string name="fu_base_input_type_single">单输</string> <string name="fu_base_input_type_single">單輸</string>
<string name="fu_base_input_type_double">双输</string> <string name="fu_base_input_type_double">雙輸</string>
<string name="beauty_box_heavy_blur_fine">磨皮</string> <string name="beauty_box_heavy_blur_fine">磨皮</string>
<string name="beauty_box_color_level">美白</string> <string name="beauty_box_color_level">美白</string>
<string name="beauty_box_red_level">红润</string> <string name="beauty_box_red_level">紅潤</string>
<string name="beauty_box_sharpen"></string> <string name="beauty_box_sharpen"></string>
<string name="beauty_box_eye_bright">亮眼</string> <string name="beauty_box_eye_bright">亮眼</string>
<string name="beauty_box_tooth_whiten">美牙</string> <string name="beauty_box_tooth_whiten">美牙</string>
<string name="beauty_box_eye_enlarge">大眼</string> <string name="beauty_box_eye_enlarge">大眼</string>
<string name="beauty_box_eye_circle"></string> <string name="beauty_box_eye_circle"></string>
<string name="beauty_box_cheek_natural">自然</string> <string name="beauty_box_cheek_natural">自然</string>
<string name="beauty_box_cheek_goddess">女神</string> <string name="beauty_box_cheek_goddess">女神</string>
<string name="beauty_box_cheek_long_face">长脸</string> <string name="beauty_box_cheek_long_face">長臉</string>
<string name="beauty_box_cheek_round_face">圆脸</string> <string name="beauty_box_cheek_round_face">圓臉</string>
<string name="beauty_box_cheek_thinning"></string> <string name="beauty_box_cheek_thinning"></string>
<string name="beauty_box_cheek_v">V</string> <string name="beauty_box_cheek_v">V</string>
<string name="beauty_box_cheek_narrow"></string> <string name="beauty_box_cheek_narrow"></string>
<string name="beauty_box_cheek_short"></string> <string name="beauty_box_cheek_short"></string>
<string name="beauty_box_cheek_small"></string> <string name="beauty_box_cheek_small"></string>
<string name="beauty_box_intensity_chin">下巴</string> <string name="beauty_box_intensity_chin">下巴</string>
<string name="beauty_box_intensity_forehead">额头</string> <string name="beauty_box_intensity_forehead">額頭</string>
<string name="beauty_box_intensity_nose">瘦鼻</string> <string name="beauty_box_intensity_nose">瘦鼻</string>
<string name="beauty_box_intensity_mouth">嘴型</string> <string name="beauty_box_intensity_mouth">嘴型</string>
<string name="beauty_box_cheekbones"></string> <string name="beauty_box_cheekbones"></string>
<string name="beauty_box_lower_jaw">瘦下</string> <string name="beauty_box_lower_jaw">瘦下</string>
<string name="beauty_radio_skin_beauty"></string> <string name="beauty_radio_skin_beauty"></string>
<string name="beauty_radio_face_shape">美型</string> <string name="beauty_radio_face_shape">美型</string>
<string name="beauty_radio_filter">滤镜</string> <string name="beauty_radio_filter">濾鏡</string>
<string name="beauty_radio_style">风格推荐</string> <string name="beauty_radio_style">風格推薦</string>
<string name="beauty_micro_pouch">去黑眼圈</string> <string name="beauty_micro_pouch">去黑眼圈</string>
<string name="beauty_micro_nasolabial">去法令</string> <string name="beauty_micro_nasolabial">去法令</string>
<string name="beauty_micro_smile">微笑嘴角</string> <string name="beauty_micro_smile">微笑嘴角</string>
<string name="beauty_brow_height">眉毛上下</string> <string name="beauty_brow_height">眉毛上下</string>
<string name="beauty_brow_space"></string> <string name="beauty_brow_space"></string>
<string name="beauty_micro_canthus">眼角</string> <string name="beauty_micro_canthus">眼角</string>
<string name="beauty_micro_philtrum">人中</string> <string name="beauty_micro_philtrum">人中</string>
<string name="beauty_micro_long_nose"></string> <string name="beauty_micro_long_nose"></string>
<string name="beauty_micro_eye_space">眼距</string> <string name="beauty_micro_eye_space">眼距</string>
<string name="beauty_micro_eye_rotate">眼睛角度</string> <string name="beauty_micro_eye_rotate">眼睛角度</string>
<string name="makeup_radio_lipstick"></string> <string name="makeup_radio_lipstick"></string>
<string name="makeup_radio_blusher"></string> <string name="makeup_radio_blusher"></string>
<string name="makeup_radio_eyebrow">眉毛</string> <string name="makeup_radio_eyebrow">眉毛</string>
<string name="makeup_radio_eye_shadow">眼影</string> <string name="makeup_radio_eye_shadow">眼影</string>
<string name="makeup_radio_eye_liner">线</string> <string name="makeup_radio_eye_liner"></string>
<string name="makeup_radio_eyelash">睫毛</string> <string name="makeup_radio_eyelash">睫毛</string>
<string name="makeup_radio_contact_lens">美瞳</string> <string name="makeup_radio_contact_lens">美瞳</string>
<string name="makeup_radio_foundation">粉底</string> <string name="makeup_radio_foundation">粉底</string>
<string name="makeup_radio_highlight">高光</string> <string name="makeup_radio_highlight">高光</string>
<string name="makeup_radio_shadow"></string> <string name="makeup_radio_shadow"></string>
<string name="makeup_radio_remove"></string> <string name="makeup_radio_remove"></string>
<string name="makeup_customize">自定</string> <string name="makeup_customize">自定</string>
<string name="makeup_peach_blossom">桃花</string> <string name="makeup_peach_blossom">桃花</string>
<string name="makeup_boyfriend">男友</string> <string name="makeup_boyfriend">男友</string>
<string name="makeup_clear">清透</string> <string name="makeup_clear">清透</string>
<string name="makeup_grapefruit">西柚</string> <string name="makeup_grapefruit">西柚</string>
<string name="select_data_photo">选择图</string> <string name="select_data_photo">選擇圖</string>
<string name="select_data_video">选择视频</string> <string name="select_data_video">選擇視頻</string>
<string name="select_data_title">请从相册中选择图片或视频</string> <string name="select_data_title">請從相冊中選擇圖片或視頻</string>
<string name="image_file_does_not_exist">选图片文件不存在。</string> <string name="image_file_does_not_exist">選圖片文件不存在。</string>
<string name="video_file_does_not_exist">选视频文件不存在。</string> <string name="video_file_does_not_exist">選視頻文件不存在。</string>
<string name="future_warrior">张嘴试试</string> <string name="future_warrior">張嘴試試</string>
<string name="jet_mask">鼓腮</string> <string name="jet_mask">鼓腮</string>
<string name="sdx2">皱眉试试</string> <string name="sdx2">皺眉試試</string>
<string name="luhantongkuan_ztt_fu">眨一眨眼</string> <string name="luhantongkuan_ztt_fu">眨一眨眼</string>
<string name="qingqing_ztt_fu">嘟嘴试试</string> <string name="qingqing_ztt_fu">嘟嘴試試</string>
<string name="xiaobianzi_zh_fu">微笑触发</string> <string name="xiaobianzi_zh_fu">微笑觸發</string>
<string name="xiaoxueshen_ztt_fu">气触发</string> <string name="xiaoxueshen_ztt_fu">氣觸發</string>
<string name="hez_ztt_fu">张嘴试试</string> <string name="hez_ztt_fu">張嘴試試</string>
<string name="push_hand">推出手掌</string> <string name="push_hand">推出手掌</string>
<string name="fu_lm_koreaheart">手手指比心</string> <string name="fu_lm_koreaheart">手手指比心</string>
<string name="ssd_thread_six"></string> <string name="ssd_thread_six"></string>
<string name="ssd_thread_cute">双拳靠近脸颊卖</string> <string name="ssd_thread_cute">雙拳靠近臉頰賣</string>
<string name="origin"></string> <string name="origin"></string>
<string name="bailiang_1">白亮 1</string> <string name="bailiang_1">白亮 1</string>
<string name="bailiang_2">白亮 2</string> <string name="bailiang_2">白亮 2</string>
<string name="bailiang_3">白亮 3</string> <string name="bailiang_3">白亮 3</string>
@ -109,23 +109,23 @@
<string name="xiaoqingxin_3">小清新 3</string> <string name="xiaoqingxin_3">小清新 3</string>
<string name="xiaoqingxin_4">小清新 4</string> <string name="xiaoqingxin_4">小清新 4</string>
<string name="xiaoqingxin_6">小清新 6</string> <string name="xiaoqingxin_6">小清新 6</string>
<string name="lengsediao_1">冷色 1</string> <string name="lengsediao_1">冷色調 1</string>
<string name="lengsediao_2">冷色 2</string> <string name="lengsediao_2">冷色調 2</string>
<string name="lengsediao_3">冷色 3</string> <string name="lengsediao_3">冷色調 3</string>
<string name="lengsediao_4">冷色 4</string> <string name="lengsediao_4">冷色調 4</string>
<string name="lengsediao_7">冷色 7</string> <string name="lengsediao_7">冷色調 7</string>
<string name="lengsediao_8">冷色 8</string> <string name="lengsediao_8">冷色調 8</string>
<string name="lengsediao_11">冷色 11</string> <string name="lengsediao_11">冷色調 11</string>
<string name="nuansediao_1">暖色 1</string> <string name="nuansediao_1">暖色調 1</string>
<string name="nuansediao_2">暖色 2</string> <string name="nuansediao_2">暖色調 2</string>
<string name="gexing_1">性 1</string> <string name="gexing_1">性 1</string>
<string name="gexing_2">性 2</string> <string name="gexing_2">性 2</string>
<string name="gexing_3">性 3</string> <string name="gexing_3">性 3</string>
<string name="gexing_4">性 4</string> <string name="gexing_4">性 4</string>
<string name="gexing_5">性 5</string> <string name="gexing_5">性 5</string>
<string name="gexing_7">性 7</string> <string name="gexing_7">性 7</string>
<string name="gexing_10">性 10</string> <string name="gexing_10">性 10</string>
<string name="gexing_11">性 11</string> <string name="gexing_11">性 11</string>
<string name="heibai_1">黑白 1</string> <string name="heibai_1">黑白 1</string>
<string name="heibai_2">黑白 2</string> <string name="heibai_2">黑白 2</string>
<string name="heibai_3">黑白 3</string> <string name="heibai_3">黑白 3</string>
@ -138,14 +138,14 @@
<string name="ziran_6">自然 6</string> <string name="ziran_6">自然 6</string>
<string name="ziran_7">自然 7</string> <string name="ziran_7">自然 7</string>
<string name="ziran_8">自然 8</string> <string name="ziran_8">自然 8</string>
<string name="zhiganhui_1">感灰 1</string> <string name="zhiganhui_1">感灰 1</string>
<string name="zhiganhui_2">感灰 2</string> <string name="zhiganhui_2">感灰 2</string>
<string name="zhiganhui_3">感灰 3</string> <string name="zhiganhui_3">感灰 3</string>
<string name="zhiganhui_4">感灰 4</string> <string name="zhiganhui_4">感灰 4</string>
<string name="zhiganhui_5">感灰 5</string> <string name="zhiganhui_5">感灰 5</string>
<string name="zhiganhui_6">感灰 6</string> <string name="zhiganhui_6">感灰 6</string>
<string name="zhiganhui_7">感灰 7</string> <string name="zhiganhui_7">感灰 7</string>
<string name="zhiganhui_8">感灰 8</string> <string name="zhiganhui_8">感灰 8</string>
<string name="mitao_1">蜜桃 1</string> <string name="mitao_1">蜜桃 1</string>
<string name="mitao_2">蜜桃 2</string> <string name="mitao_2">蜜桃 2</string>
<string name="mitao_3">蜜桃 3</string> <string name="mitao_3">蜜桃 3</string>
@ -155,85 +155,85 @@
<string name="mitao_7">蜜桃 7</string> <string name="mitao_7">蜜桃 7</string>
<string name="mitao_8">蜜桃 8</string> <string name="mitao_8">蜜桃 8</string>
<string name="beauty_face_style_none"></string> <string name="beauty_face_style_none"></string>
<string name="beauty_face_style_1">格 1</string> <string name="beauty_face_style_1">格 1</string>
<string name="beauty_face_style_2">格 2</string> <string name="beauty_face_style_2">格 2</string>
<string name="beauty_face_style_3">格 3</string> <string name="beauty_face_style_3">格 3</string>
<string name="beauty_face_style_4">格 4</string> <string name="beauty_face_style_4">格 4</string>
<string name="beauty_face_style_5">格 5</string> <string name="beauty_face_style_5">格 5</string>
<string name="beauty_face_style_6">格 6</string> <string name="beauty_face_style_6">格 6</string>
<string name="beauty_face_style_7">格 7</string> <string name="beauty_face_style_7">格 7</string>
<string name="beauty_face_style_toast">使用%s先取消“风格推荐</string> <string name="beauty_face_style_toast">使用%s先取消“風格推薦</string>
<string name="poster_take_photo">对准线框 正脸拍摄</string> <string name="poster_take_photo">對準線框 正臉拍攝</string>
<string name="poster_change_face_error">换失败</string> <string name="poster_change_face_error">換失敗</string>
<string name="poster_template_face_none">识别模板的人脸,请重新选择模板</string> <string name="poster_template_face_none">識別模板的人臉,請重新選擇模板</string>
<string name="dialog_no_track_face">检测到人脸,请重新拍摄</string> <string name="dialog_no_track_face">檢測到人臉,請重新拍攝</string>
<string name="dialog_no_incomplete_face">脸不全,请重新拍摄</string> <string name="dialog_no_incomplete_face">臉不全,請重新拍攝</string>
<string name="dialog_face_rotation_not_valid">脸偏转角度过大,请正脸拍摄</string> <string name="dialog_face_rotation_not_valid">臉偏轉角度過大,請正臉拍攝</string>
<string name="dialog_got">知道啦</string> <string name="dialog_got">知道啦</string>
<string name="tip_dual_face">检测到多人,请选择一人进行换脸</string> <string name="tip_dual_face">檢測到多人,請選擇一人進行換臉</string>
<string name="animoji_filter">Animoji</string> <string name="animoji_filter">Animoji</string>
<string name="cartoon_filter">动漫滤镜</string> <string name="cartoon_filter">動漫濾鏡</string>
<string name="delete_avatar_model">除模型</string> <string name="delete_avatar_model">除模型</string>
<string name="new_avatar_model">新建模型</string> <string name="new_avatar_model">新建模型</string>
<string name="edit_avatar_model">编辑模型</string> <string name="edit_avatar_model">編輯模型</string>
<string name="avatar_face_hair"></string> <string name="avatar_face_hair"></string>
<string name="avatar_face_face"></string> <string name="avatar_face_face"></string>
<string name="avatar_face_eye">眼睛</string> <string name="avatar_face_eye">眼睛</string>
<string name="avatar_face_lip">嘴唇</string> <string name="avatar_face_lip">嘴唇</string>
<string name="avatar_face_nose">鼻子</string> <string name="avatar_face_nose">鼻子</string>
<string name="avatar_face_length">脸型长</string> <string name="avatar_face_length">臉型長</string>
<string name="avatar_face_width">脸颊宽</string> <string name="avatar_face_width">臉頰寬</string>
<string name="avatar_chin_width">颚宽</string> <string name="avatar_chin_width">顎寬</string>
<string name="avatar_chin_height">下巴高低</string> <string name="avatar_chin_height">下巴高低</string>
<string name="avatar_eye_position">眼睛位置</string> <string name="avatar_eye_position">眼睛位置</string>
<string name="avatar_eye_corner_height">眼角高度</string> <string name="avatar_eye_corner_height">眼角高度</string>
<string name="avatar_eye_height">眼睛高低</string> <string name="avatar_eye_height">眼睛高低</string>
<string name="avatar_eye_width">眼睛</string> <string name="avatar_eye_width">眼睛</string>
<string name="avatar_nose_position">鼻子位置</string> <string name="avatar_nose_position">鼻子位置</string>
<string name="avatar_nose_width">鼻翼</string> <string name="avatar_nose_width">鼻翼</string>
<string name="avatar_nose_height">高低</string> <string name="avatar_nose_height">高低</string>
<string name="avatar_mouth_position">嘴部位置</string> <string name="avatar_mouth_position">嘴部位置</string>
<string name="avatar_up_lip_thickness">上唇厚度</string> <string name="avatar_up_lip_thickness">上唇厚度</string>
<string name="avatar_down_lip_thickness">下唇厚度</string> <string name="avatar_down_lip_thickness">下唇厚度</string>
<string name="avatar_lip_width">嘴唇</string> <string name="avatar_lip_width">嘴唇</string>
<string name="model_empty_tip">还没有创建过模型哦</string> <string name="model_empty_tip">還沒有創建過模型哦</string>
<string name="dialog_reset_avatar_model">是否将所有参数恢复到默认值?</string> <string name="dialog_reset_avatar_model">是否將所有參數恢復到默認值?</string>
<string name="avatar_face_customize">自定</string> <string name="avatar_face_customize">自定</string>
<string name="avatar_save_succeed">保存成功</string> <string name="avatar_save_succeed">保存成功</string>
<string name="live_photo_back_not_save">返回后当前操作将不会被保存哦</string> <string name="live_photo_back_not_save">返回后當前操作將不會被保存哦</string>
<string name="live_photo_btn_delete"></string> <string name="live_photo_btn_delete"></string>
<string name="live_photo_btn_cancel">取消</string> <string name="live_photo_btn_cancel">取消</string>
<string name="live_photo_btn_delete_">除(%d)</string> <string name="live_photo_btn_delete_">除(%d)</string>
<string name="live_photo_delete_effect">除道具</string> <string name="live_photo_delete_effect">除道具</string>
<string name="live_photo__delete_all"></string> <string name="live_photo__delete_all"></string>
<string name="live_photo_empty_list_tip">还没有创建过道具哦</string> <string name="live_photo_empty_list_tip">還沒有創建過道具哦</string>
<string name="confirm"></string> <string name="confirm"></string>
<string name="cancel">取消</string> <string name="cancel">取消</string>
<string name="dialog_confirm_delete">确定删除所选中的道具?</string> <string name="dialog_confirm_delete">確定刪除所選中的道具?</string>
<string name="toast_delete_succeed">除成功</string> <string name="toast_delete_succeed">除成功</string>
<string name="toast_delete_failed">删除失败</string> <string name="toast_delete_failed">刪除失敗</string>
<string name="live_photo_save_succeed">道具保存成功</string> <string name="live_photo_save_succeed">道具保存成功</string>
<string name="recover"></string> <string name="recover"></string>
<string name="makeup_lip_fog"></string> <string name="makeup_lip_fog"></string>
<string name="makeup_lip_moist1">润泽</string> <string name="makeup_lip_moist1">潤澤</string>
<string name="makeup_lip_moist2">润泽</string> <string name="makeup_lip_moist2">潤澤</string>
<string name="makeup_lip_pearl">珠光</string> <string name="makeup_lip_pearl">珠光</string>
<string name="makeup_lip_bitelip">咬唇</string> <string name="makeup_lip_bitelip">咬唇</string>
<string name="makeup_blusher_apple">果肌</string> <string name="makeup_blusher_apple">果肌</string>
<string name="makeup_blusher_fan">扇形</string> <string name="makeup_blusher_fan">扇形</string>
<string name="makeup_blusher_eye_corner">眼角</string> <string name="makeup_blusher_eye_corner">眼角</string>
<string name="makeup_blusher_slight_drunk">微醺</string> <string name="makeup_blusher_slight_drunk">微醺</string>
<string name="makeup_highlight_one">高光 I</string> <string name="makeup_highlight_one">高光 I</string>
<string name="makeup_highlight_two">高光 II</string> <string name="makeup_highlight_two">高光 II</string>
<string name="makeup_shadow_one">影 I</string> <string name="makeup_shadow_one">影 I</string>
<string name="makeup_pupil_1">蜜糖</string> <string name="makeup_pupil_1">蜜糖</string>
<string name="makeup_pupil_2">奶茶</string> <string name="makeup_pupil_2">奶茶</string>
<string name="makeup_pupil_3">水波</string> <string name="makeup_pupil_3">水波</string>
@ -241,106 +241,106 @@
<string name="makeup_pupil_5">孔雀</string> <string name="makeup_pupil_5">孔雀</string>
<string name="makeup_pupil_6">星河</string> <string name="makeup_pupil_6">星河</string>
<string name="makeup_pupil_7">落目</string> <string name="makeup_pupil_7">落目</string>
<string name="makeup_pupil_8"></string> <string name="makeup_pupil_8"></string>
<string name="makeup_eyebrow_willow">柳叶眉</string> <string name="makeup_eyebrow_willow">恭弘= 恭弘</string>
<string name="makeup_eyebrow_wild">野生眉</string> <string name="makeup_eyebrow_wild">野生眉</string>
<string name="makeup_eyebrow_classical">古典眉</string> <string name="makeup_eyebrow_classical">古典眉</string>
<string name="makeup_eyebrow_standard">标准</string> <string name="makeup_eyebrow_standard">標準</string>
<string name="makeup_eye_shadow_single">色眼影</string> <string name="makeup_eye_shadow_single">色眼影</string>
<string name="makeup_eye_shadow_double1">色眼影 I</string> <string name="makeup_eye_shadow_double1">色眼影 I</string>
<string name="makeup_eye_shadow_double2">色眼影 II</string> <string name="makeup_eye_shadow_double2">色眼影 II</string>
<string name="makeup_eye_shadow_double3">色眼影 III</string> <string name="makeup_eye_shadow_double3">色眼影 III</string>
<string name="makeup_eye_shadow_triple1">三色眼影 I</string> <string name="makeup_eye_shadow_triple1">三色眼影 I</string>
<string name="makeup_eye_shadow_triple2">三色眼影 II</string> <string name="makeup_eye_shadow_triple2">三色眼影 II</string>
<string name="makeup_eyelash_natural1">自然型 I</string> <string name="makeup_eyelash_natural1">自然型 I</string>
<string name="makeup_eyelash_natural2">自然型 II</string> <string name="makeup_eyelash_natural2">自然型 II</string>
<string name="makeup_eyelash_thick1">密型 I</string> <string name="makeup_eyelash_thick1">密型 I</string>
<string name="makeup_eyelash_thick2">密型 II</string> <string name="makeup_eyelash_thick2">密型 II</string>
<string name="makeup_eyelash_exaggerate1">夸张型 I</string> <string name="makeup_eyelash_exaggerate1">誇張型 I</string>
<string name="makeup_eyelash_exaggerate2">夸张型 II</string> <string name="makeup_eyelash_exaggerate2">誇張型 II</string>
<string name="makeup_eye_linear_cat"></string> <string name="makeup_eye_linear_cat"></string>
<string name="makeup_eye_linear_drooping">下垂眼</string> <string name="makeup_eye_linear_drooping">下垂眼</string>
<string name="makeup_eye_linear_pull_open">眼距</string> <string name="makeup_eye_linear_pull_open">眼距</string>
<string name="makeup_eye_linear_pull_close">拉近眼距</string> <string name="makeup_eye_linear_pull_close">拉近眼距</string>
<string name="makeup_eye_linear_long"></string> <string name="makeup_eye_linear_long"></string>
<string name="makeup_eye_linear_circular"></string> <string name="makeup_eye_linear_circular"></string>
<string name="makeup_combination_diadiatu">嗲嗲兔</string> <string name="makeup_combination_diadiatu">嗲嗲兔</string>
<string name="makeup_combination_dongling">冻龄</string> <string name="makeup_combination_dongling">凍齡</string>
<string name="makeup_combination_guofeng">国风</string> <string name="makeup_combination_guofeng">國風</string>
<string name="makeup_combination_hunxie">混血</string> <string name="makeup_combination_hunxie">混血</string>
<string name="makeup_combination_sexy">性感</string> <string name="makeup_combination_sexy">性感</string>
<string name="makeup_combination_sweet">甜美</string> <string name="makeup_combination_sweet">甜美</string>
<string name="makeup_combination_neighbor"></string> <string name="makeup_combination_neighbor"></string>
<string name="makeup_combination_occident"></string> <string name="makeup_combination_occident"></string>
<string name="makeup_combination_charming"></string> <string name="makeup_combination_charming"></string>
<string name="makeup_combination_jianling">减龄</string> <string name="makeup_combination_jianling">減齡</string>
<string name="makeup_combination_nuandong">暖冬</string> <string name="makeup_combination_nuandong">暖冬</string>
<string name="makeup_combination_hongfeng">红枫</string> <string name="makeup_combination_hongfeng">紅楓</string>
<string name="makeup_combination_shaonv">少女</string> <string name="makeup_combination_shaonv">少女</string>
<string name="makeup_combination_ziyun"></string> <string name="makeup_combination_ziyun"></string>
<string name="makeup_combination_yanshimao">厌世猫</string> <string name="makeup_combination_yanshimao">厭世貓</string>
<string name="makeup_combination_renyu"></string> <string name="makeup_combination_renyu"></string>
<string name="makeup_combination_chuqiu">初秋</string> <string name="makeup_combination_chuqiu">初秋</string>
<string name="makeup_combination_qianzhihe">纸鹤</string> <string name="makeup_combination_qianzhihe">紙鶴</string>
<string name="makeup_combination_chaomo">超模</string> <string name="makeup_combination_chaomo">超模</string>
<string name="makeup_combination_chuju"></string> <string name="makeup_combination_chuju"></string>
<string name="makeup_combination_gangfeng"></string> <string name="makeup_combination_gangfeng"></string>
<string name="makeup_combination_rose">Rose</string> <string name="makeup_combination_rose">Rose</string>
<string name="slimming">瘦身</string> <string name="slimming">瘦身</string>
<string name="long_legs"></string> <string name="long_legs"></string>
<string name="thin_waist"></string> <string name="thin_waist"></string>
<string name="beautify_shoulder">美肩</string> <string name="beautify_shoulder">美肩</string>
<string name="beautify_hip_slim">美臀</string> <string name="beautify_hip_slim">美臀</string>
<string name="beautify_head_slim"></string> <string name="beautify_head_slim"></string>
<string name="beautify_leg_thin_slim">瘦腿</string> <string name="beautify_leg_thin_slim">瘦腿</string>
<string name="toast_not_detect_body">检测到人体</string> <string name="toast_not_detect_body">檢測到人體</string>
<string name="pta_human_full_body">全身驱动</string> <string name="pta_human_full_body">全身驅動</string>
<string name="pta_human_half_body">半身驱动</string> <string name="pta_human_half_body">半身驅動</string>
<string name="select_data_photo_or_video">载入图片或视频</string> <string name="select_data_photo_or_video">載入圖片或視頻</string>
<string name="toast_not_detect_gesture">检测到手势</string> <string name="toast_not_detect_gesture">檢測到手勢</string>
<string name="bg_seg_green_graphic"></string> <string name="bg_seg_green_graphic"></string>
<string name="bg_seg_green_background">背景</string> <string name="bg_seg_green_background">背景</string>
<string name="bg_seg_green_key_color">关键颜</string> <string name="bg_seg_green_key_color">關鍵顏</string>
<string name="bg_seg_green_similarity">相似度</string> <string name="bg_seg_green_similarity">相似度</string>
<string name="bg_seg_green_smooth">平滑</string> <string name="bg_seg_green_smooth">平滑</string>
<string name="bg_seg_green_alpha">祛色度</string> <string name="bg_seg_green_alpha">祛色度</string>
<string name="bg_seg_green_safe_area">安全</string> <string name="bg_seg_green_safe_area">安全</string>
<string name="bg_seg_green_science">科技</string> <string name="bg_seg_green_science">科技</string>
<string name="bg_seg_green_beach"></string> <string name="bg_seg_green_beach"></string>
<string name="bg_seg_green_classroom">教室</string> <string name="bg_seg_green_classroom">教室</string>
<string name="bg_seg_green_forest">森林</string> <string name="bg_seg_green_forest">森林</string>
<string name="bg_seg_green_ink">水墨</string> <string name="bg_seg_green_ink">水墨</string>
<string name="dialog_guide_bg_seg_green">请使用纯色背景拍摄,推荐绿色幕布效果最佳</string> <string name="dialog_guide_bg_seg_green">請使用純色背景拍攝,推薦綠色幕布效果最佳</string>
<string name="dialog_i_know">我知道了</string> <string name="dialog_i_know">我知道了</string>
<string name="download_error">载失败</string> <string name="download_error">載失敗</string>
<string name="back">返回</string> <string name="back">返回</string>
<string name="safe_area_tips">白色区域为安全区域,不参与绿幕抠</string> <string name="safe_area_tips">白色區域為安全區域,不參与綠幕摳</string>
<string name="brow_height_tips">眉毛上下功能仅支持在高端机上使用</string> <string name="brow_height_tips">眉毛上下功能僅支持在高端機上使用</string>
<string name="brow_space_tips">间距功能仅支持在高端机上使用</string> <string name="brow_space_tips">間距功能僅支持在高端機上使用</string>
<string name="home_function_name_beauty"></string> <string name="home_function_name_beauty"></string>
<string name="home_function_name_makeup"></string> <string name="home_function_name_makeup"></string>
<string name="home_function_name_sticker">贴纸</string> <string name="home_function_name_sticker">貼紙</string>
<string name="home_function_name_beauty_body"></string> <string name="home_function_name_beauty_body"></string>
<string name="toast_not_detect_face">检测到人脸</string> <string name="toast_not_detect_face">檢測到人臉</string>
<string name="toast_not_detect_face_or_body">检测到人脸或人体</string> <string name="toast_not_detect_face_or_body">檢測到人臉或人體</string>
<string name="makeup_combination_naicha">奶茶</string> <string name="makeup_combination_naicha">奶茶</string>
<string name="makeup_combination_dousha">豆沙</string> <string name="makeup_combination_dousha">豆沙</string>
<string name="makeup_combination_chaoa">超A</string> <string name="makeup_combination_chaoa">超A</string>
<string name="home_function_name_big_head">搞笑大</string> <string name="home_function_name_big_head">搞笑大</string>
<string name="home_function_name_animoji">Animoji</string> <string name="home_function_name_animoji">Animoji</string>
<string name="home_function_name_fine_sticker">精品贴纸</string> <string name="home_function_name_fine_sticker">精品貼紙</string>
<string name="dialog_reset">重置</string> <string name="dialog_reset">重置</string>
<string name="menu_diy">自定義</string> <string name="menu_diy">自定義</string>

View File

@ -16,33 +16,33 @@
<string name="fu_base_input_type_single">SingleInput</string> <string name="fu_base_input_type_single">SingleInput</string>
<string name="fu_base_input_type_double">DualInput</string> <string name="fu_base_input_type_double">DualInput</string>
<string name="beauty_box_heavy_blur_fine">Fine smooth</string> <string name="beauty_box_heavy_blur_fine">Buffing</string>
<string name="beauty_box_color_level">Whiten</string> <string name="beauty_box_color_level">Skin Tone</string>
<string name="beauty_box_red_level">Ruddy</string> <string name="beauty_box_red_level">Rosy</string>
<string name="beauty_box_sharpen">Sharpen</string> <string name="beauty_box_sharpen">Sharpen</string>
<string name="beauty_box_eye_bright">Eye brighten</string> <string name="beauty_box_eye_bright">Brighen</string>
<string name="beauty_box_tooth_whiten">Tooth whiten</string> <string name="beauty_box_tooth_whiten">Whiten</string>
<string name="beauty_box_eye_enlarge">Eye enlarge</string> <string name="beauty_box_eye_enlarge">Enlarge</string>
<string name="beauty_box_eye_circle">Eye round</string> <string name="beauty_box_eye_circle">Round</string>
<string name="beauty_box_cheek_natural">Natural</string> <string name="beauty_box_cheek_natural">Origin</string>
<string name="beauty_box_cheek_goddess">Goddess</string> <string name="beauty_box_cheek_goddess">Goddess</string>
<string name="beauty_box_cheek_long_face">Long face</string> <string name="beauty_box_cheek_long_face">Long face</string>
<string name="beauty_box_cheek_round_face">Round face</string> <string name="beauty_box_cheek_round_face">Round face</string>
<string name="beauty_box_cheekbones">Cheekbone</string> <string name="beauty_box_cheekbones">Cheek</string>
<string name="beauty_box_lower_jaw">Jawbone</string> <string name="beauty_box_lower_jaw">Jaw</string>
<string name="beauty_box_cheek_thinning">Cheek thin</string> <string name="beauty_box_cheek_thinning">Lower Width</string>
<string name="beauty_box_cheek_v">V face</string> <string name="beauty_box_cheek_v">V Shape</string>
<string name="beauty_box_cheek_narrow">CheekNarrow</string> <string name="beauty_box_cheek_narrow">Upper Width</string>
<string name="beauty_box_cheek_short">Cheek short</string> <string name="beauty_box_cheek_short">Short Face</string>
<string name="beauty_box_cheek_small">Cheek small</string> <string name="beauty_box_cheek_small">Size Face</string>
<string name="beauty_box_intensity_chin">Chin</string> <string name="beauty_box_intensity_chin">Chin Length</string>
<string name="beauty_box_intensity_forehead">Forehead</string> <string name="beauty_box_intensity_forehead">Hairline</string>
<string name="beauty_box_intensity_nose">Nose</string> <string name="beauty_box_intensity_nose">Nose Size</string>
<string name="beauty_box_intensity_mouth">Mouth</string> <string name="beauty_box_intensity_mouth">Mouth Size</string>
<string name="beauty_radio_skin_beauty">Skin</string> <string name="beauty_radio_skin_beauty">Skincare</string>
<string name="beauty_radio_face_shape">Reshape</string> <string name="beauty_radio_face_shape">Beauty type</string>
<string name="beauty_radio_filter">Filter</string> <string name="beauty_radio_filter">Filter</string>
<string name="beauty_radio_style">Presets</string> <string name="beauty_radio_style">Style recommend</string>
<string name="makeup_radio_lipstick">Lipstick</string> <string name="makeup_radio_lipstick">Lipstick</string>
<string name="makeup_radio_blusher">Blush</string> <string name="makeup_radio_blusher">Blush</string>
<string name="makeup_radio_eyebrow">Eyebrow</string> <string name="makeup_radio_eyebrow">Eyebrow</string>
@ -59,16 +59,16 @@
<string name="makeup_boyfriend">Boyfriend</string> <string name="makeup_boyfriend">Boyfriend</string>
<string name="makeup_clear">Clear</string> <string name="makeup_clear">Clear</string>
<string name="makeup_grapefruit">Grapefruit</string> <string name="makeup_grapefruit">Grapefruit</string>
<string name="beauty_micro_pouch">Circle</string> <string name="beauty_micro_pouch">Dark Circles</string>
<string name="beauty_micro_nasolabial">Wrinkles</string> <string name="beauty_micro_nasolabial">Laugh Line</string>
<string name="beauty_micro_smile">Smile</string> <string name="beauty_micro_smile">Smile</string>
<string name="beauty_brow_height">Brow height</string> <string name="beauty_brow_height">Brow Position</string>
<string name="beauty_brow_space">Brow space</string> <string name="beauty_brow_space">Brow Distance</string>
<string name="beauty_micro_canthus">Canthus</string> <string name="beauty_micro_canthus">Inner Corner</string>
<string name="beauty_micro_philtrum">Philtrum</string> <string name="beauty_micro_philtrum">Mouth Position</string>
<string name="beauty_micro_long_nose">Length</string> <string name="beauty_micro_long_nose">Nose Lift</string>
<string name="beauty_micro_eye_space">Eye distance</string> <string name="beauty_micro_eye_space">Eye Distance</string>
<string name="beauty_micro_eye_rotate">Slant</string> <string name="beauty_micro_eye_rotate">Eye Upturn</string>
<string name="beauty_face_style_none">None</string> <string name="beauty_face_style_none">None</string>
<string name="beauty_face_style_1">Style 1</string> <string name="beauty_face_style_1">Style 1</string>
<string name="beauty_face_style_2">Style 2</string> <string name="beauty_face_style_2">Style 2</string>
@ -77,7 +77,7 @@
<string name="beauty_face_style_5">Style 5</string> <string name="beauty_face_style_5">Style 5</string>
<string name="beauty_face_style_6">Style 6</string> <string name="beauty_face_style_6">Style 6</string>
<string name="beauty_face_style_7">Style 7</string> <string name="beauty_face_style_7">Style 7</string>
<string name="beauty_face_style_toast">To use %s, cancel \'Presets\' first.</string> <string name="beauty_face_style_toast">To use %s, cancel \'Style recommend\' first.</string>
<string name="select_data_photo">Photo</string> <string name="select_data_photo">Photo</string>
<string name="select_data_video">Video</string> <string name="select_data_video">Video</string>

View File

@ -102,7 +102,7 @@ public class InvitePopDialog extends AbsDialogPopupWindow {
initData(); initData();
link.setText(url.substring(0, 40)); link.setText(url.substring(0, 40));
if(StringUtil.isEmpty(titleStr)) { if(StringUtil.isEmpty(titleStr)) {
info.setText(R.string.dialog_invite_info); info.setText(mContext.getString(R.string.dialog_invite_info));
}else{ }else{
info.setText(titleStr); info.setText(titleStr);
} }
@ -129,7 +129,7 @@ public class InvitePopDialog extends AbsDialogPopupWindow {
private void initData() { private void initData() {
data = new ArrayList<>(); data = new ArrayList<>();
//data.add(builder(ShareBuilder.APP_FACEBOOK)); data.add(builder(ShareBuilder.APP_FACEBOOK));
data.add(builder(ShareBuilder.APP_LINE)); data.add(builder(ShareBuilder.APP_LINE));
data.add(builder(ShareBuilder.APP_TWITTER)); data.add(builder(ShareBuilder.APP_TWITTER));
data.add(builder(ShareBuilder.APP_WHATSAPP)); data.add(builder(ShareBuilder.APP_WHATSAPP));

View File

@ -18,6 +18,7 @@ import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ToastUtil;
import com.yunbao.share.R; import com.yunbao.share.R;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.share.adapters.ShareAppAdapter; import com.yunbao.share.adapters.ShareAppAdapter;
import com.yunbao.share.bean.ShareBuilder; import com.yunbao.share.bean.ShareBuilder;
@ -63,7 +64,7 @@ public class SharePopDialog extends AbsDialogPopupWindow {
} }
public SharePopDialog setShareLink(String link) { public SharePopDialog setShareLink(String link) {
this.shareLink = link; this.shareLink = link + "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
return this; return this;
} }
@ -112,6 +113,7 @@ public class SharePopDialog extends AbsDialogPopupWindow {
url = shareLink; url = shareLink;
} }
} }
url = url + "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
link.setText(url); link.setText(url);
info.setText(String.format(getContext().getString(R.string.dialog_share_info), StringUtil.isEmpty(anchorName) ? "" : anchorName)); info.setText(String.format(getContext().getString(R.string.dialog_share_info), StringUtil.isEmpty(anchorName) ? "" : anchorName));
ImgLoader.display(getContext(), anchorAvatar, avatar); ImgLoader.display(getContext(), anchorAvatar, avatar);
@ -138,7 +140,7 @@ public class SharePopDialog extends AbsDialogPopupWindow {
url = ShareBuilder.createLiveShareLink(uid, anchorId, anchorName, anchorAvatar); url = ShareBuilder.createLiveShareLink(uid, anchorId, anchorName, anchorAvatar);
} }
ClipboardManager cm = (ClipboardManager) getContext().getSystemService(CLIPBOARD_SERVICE); ClipboardManager cm = (ClipboardManager) getContext().getSystemService(CLIPBOARD_SERVICE);
ClipData clipData = ClipData.newPlainText("text",info.getText().toString()+"\n"+url); ClipData clipData = ClipData.newPlainText("text", info.getText().toString() + "\n" + url + "&isZh=" + (WordUtil.isNewZh() ? "1" : 0));
cm.setPrimaryClip(clipData); cm.setPrimaryClip(clipData);
ToastUtil.show(getContext().getString(com.yunbao.common.R.string.copy_success)); ToastUtil.show(getContext().getString(com.yunbao.common.R.string.copy_success));
} }

View File

@ -236,6 +236,48 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
-keep class com.faceunity.wrapper.faceunity$LoadConfig*{ -keep class com.faceunity.wrapper.faceunity$LoadConfig*{
private static boolean sLoadedLibrary; private static boolean sLoadedLibrary;
} }
-keep class com.umeng.** {*;}
-keep class org.repackage.** {*;}
-keep class com.uyumao.** { *; }
-keepclassmembers class * {
public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
#----svga
-keep class com.opensource.svgaplayer.**{
public <methods>;
public static <fields>;
}
# json序列化的混淆
-keep class tech.sud.mgp.hello.ui.scenes.ticket.model.** {*;}
-keep class tech.sud.mgp.hello.service.game.req.** {*;}
-keep class tech.sud.mgp.hello.service.game.resp.** {*;}
-keep class tech.sud.mgp.hello.service.login.req.** {*;}
-keep class tech.sud.mgp.hello.service.login.resp.** {*;}
-keep class tech.sud.mgp.hello.service.main.req.** {*;}
-keep class tech.sud.mgp.hello.service.main.resp.** {*;}
-keep class tech.sud.mgp.hello.service.main.config.** {*;}
-keep class tech.sud.mgp.hello.service.room.req.** {*;}
-keep class tech.sud.mgp.hello.service.room.resp.** {*;}
-keep class tech.sud.mgp.hello.service.room.model.** {*;}
-keep class tech.sud.mgp.hello.ui.main.home.model.** {*;}
-keep class tech.sud.mgp.hello.ui.scenes.base.model.** {*;}
-keep class tech.sud.mgp.hello.ui.scenes.common.cmd.** {*;}
-keep class tech.sud.mgp.hello.ui.scenes.custom.model.** {*;}
-keep class tech.sud.mgp.hello.ui.scenes.orderentertainment.model.** {*;}
-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 com.yunbao.common.sud.** {*;}
#--融云语聊-- #--融云语聊--
-keep public class cn.rongcloud.** {*;} -keep public class cn.rongcloud.** {*;}
-ignorewarnings -ignorewarnings

View File

@ -62,6 +62,9 @@
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission <uses-permission
@ -81,12 +84,12 @@
<uses-permission android:name="com.android.vending.BILLING" /> <uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- Android11新增 --> <!-- Android11新增 -->
<!-- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />--> <!-- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />-->
<!-- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />--> <!-- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />-->
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" /> <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
<queries> <queries>
<package android:name="com.twitter.android"/> <package android:name="com.twitter.android" />
<package android:name="jp.naver.line.android"/> <package android:name="jp.naver.line.android" />
</queries> </queries>
<application <application
@ -100,18 +103,18 @@
android:requestLegacyExternalStorage="true" android:requestLegacyExternalStorage="true"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
tools:replace="theme,label,icon,allowBackup"> tools:replace="theme,label,icon,allowBackup">
<!-- <service--> <!-- <service-->
<!-- android:name="com.shayu.phonelive.utils.MyNotificationService">--> <!-- android:name="com.shayu.phonelive.utils.MyNotificationService">-->
<!-- <intent-filter>--> <!-- <intent-filter>-->
<!-- <action android:name="com.google.firebase.MESSAGING_EVENT" />--> <!-- <action android:name="com.google.firebase.MESSAGING_EVENT" />-->
<!-- </intent-filter>--> <!-- </intent-filter>-->
<!-- </service>--> <!-- </service>-->
<service <service
android:name="io.rong.push.platform.google.RongFirebaseMessagingService" android:name="io.rong.push.platform.google.RongFirebaseMessagingService"
android:stopWithTask="false" android:stopWithTask="false"
android:exported="false"> android:exported="false">
<intent-filter> <intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/> <action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter> </intent-filter>
</service> </service>
<activity <activity
@ -130,7 +133,8 @@
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="smvslm" />
<data android:scheme="um.64e40ee55488fe7b3afa2c96" />
</intent-filter> </intent-filter>
</activity> </activity>
@ -162,13 +166,16 @@
<meta-data <meta-data
android:name="com.facebook.sdk.ClientToken" android:name="com.facebook.sdk.ClientToken"
android:value="@string/facebook_client_token" /> android:value="@string/facebook_client_token" />
<meta-data android:name="com.facebook.sdk.AutoLogAppEventsEnabled" android:value="false"/> <meta-data
android:name="com.facebook.sdk.AutoLogAppEventsEnabled"
android:value="false" />
<meta-data <meta-data
android:name="firebase_messaging_auto_init_enabled" android:name="firebase_messaging_auto_init_enabled"
android:value="false" /> android:value="false" />
<meta-data <meta-data
android:name="firebase_analytics_collection_enabled" android:name="firebase_analytics_collection_enabled"
android:value="false" /> android:value="false" />
<receiver <receiver
android:name="com.shayu.phonelive.utils.CustomMessageReceiver" android:name="com.shayu.phonelive.utils.CustomMessageReceiver"
android:exported="true"> android:exported="true">

View File

@ -32,6 +32,8 @@ import com.tencent.imsdk.v2.V2TIMGroupMemberInfo;
import com.tencent.imsdk.v2.V2TIMManager; import com.tencent.imsdk.v2.V2TIMManager;
import com.tencent.imsdk.v2.V2TIMSimpleMsgListener; import com.tencent.imsdk.v2.V2TIMSimpleMsgListener;
import com.tencent.imsdk.v2.V2TIMUserInfo; import com.tencent.imsdk.v2.V2TIMUserInfo;
import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;
import com.yunbao.common.BuildConfig; import com.yunbao.common.BuildConfig;
import com.yunbao.common.CommonAppConfig; import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext; import com.yunbao.common.CommonAppContext;
@ -163,8 +165,23 @@ public class AppContext extends CommonAppContext {
if (isMainProcess()) { if (isMainProcess()) {
OpenInstall.init(this); OpenInstall.init(this);
} }
//设置LOG开关默认为false
UMConfigure.setLogEnabled(true);
//友盟正式初始化
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);
registerActivityLifecycleCallbacks(new AdjustLifecycleCallbacks()); registerActivityLifecycleCallbacks(new AdjustLifecycleCallbacks());
//初始化 AndroidUtilCode //初始化 AndroidUtilCode
Utils.init(this); Utils.init(this);

View File

@ -229,8 +229,11 @@ public class LauncherActivity extends AppCompatActivity implements View.OnClickL
} else { } else {
checkUidAndToken(); checkUidAndToken();
} }
}else{
ToastUtil.show(getString(R.string.net_error));
} }
} }
}); });
} }
@ -389,6 +392,15 @@ public class LauncherActivity extends AppCompatActivity implements View.OnClickL
mPlayer = null; mPlayer = null;
} }
@Override
public void onBackPressed() {
if (mLauncherAdViewHolder != null) {
mLauncherAdViewHolder.release();
checkUidAndToken();
return;
}
super.onBackPressed();
}
/** /**
* 播放广告 * 播放广告

View File

@ -11,6 +11,7 @@ buildscript {
maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.fabric.io/public' } maven { url 'https://maven.fabric.io/public' }
maven { url 'https://maven.faceunity.com/repository/maven-public/' }// maven { url 'https://maven.faceunity.com/repository/maven-public/' }//
maven { url 'https://repo1.maven.org/maven2/' }//
google() google()
mavenCentral() mavenCentral()
} }
@ -41,6 +42,7 @@ allprojects {
maven { url 'https://maven.fabric.io/public' } maven { url 'https://maven.fabric.io/public' }
maven { url 'https://maven.faceunity.com/repository/maven-public/' }// maven { url 'https://maven.faceunity.com/repository/maven-public/' }//
maven { url "https://jitpack.io" } maven { url "https://jitpack.io" }
maven { url 'https://repo1.maven.org/maven2/' }//
google() // Google's Maven repository google() // Google's Maven repository
} }
} }

View File

@ -198,6 +198,16 @@ dependencies {
api 'com.github.gzu-liyujiang.AndroidPicker:WheelView:4.1.11' api 'com.github.gzu-liyujiang.AndroidPicker:WheelView:4.1.11'
// //
api 'com.makeramen:roundedimageview:2.3.0' 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'
//使使common需搭配v9.6.3asms需搭配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.google.android.gms:play-services-auth:15.0.0' api 'com.google.android.gms:play-services-auth:15.0.0'
api 'com.google.android.material:material:1.4.0' api 'com.google.android.material:material:1.4.0'

View File

@ -1,16 +1,15 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.yunbao.common"> package="com.yunbao.common">
<!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" />--> <!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" />-->
<!-- <uses-permission android:name="android.permission.INTERNET" />--> <!-- <uses-permission android:name="android.permission.INTERNET" />-->
<!-- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />--> <!-- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />-->
<application android:allowBackup="true"> <application android:allowBackup="true">
<!-- <meta-data--> <!-- <meta-data-->
<!-- android:name="com.google.ar.core"--> <!-- android:name="com.google.ar.core"-->
<!-- android:value="optional" />--> <!-- android:value="optional" />-->
<activity <activity
android:name="com.yunbao.common.activity.WebViewActivity" android:name="com.yunbao.common.activity.WebViewActivity"
@ -24,23 +23,23 @@
<!-- <!--
支付宝 支付宝
<activity <activity
android:name="com.alipay.sdk.app.H5PayActivity" android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize" android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:exported="false" android:exported="false"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize|stateHidden"></activity> android:windowSoftInputMode="adjustResize|stateHidden"></activity>
<activity <activity
android:name="com.alipay.sdk.app.H5AuthActivity" android:name="com.alipay.sdk.app.H5AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation" android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false" android:exported="false"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize|stateHidden"></activity> android:windowSoftInputMode="adjustResize|stateHidden"></activity>
支付宝 end 支付宝 end
--> -->
<activity <activity
android:name="com.yunbao.common.activity.ErrorActivity" android:name="com.yunbao.common.activity.ErrorActivity"
@ -49,6 +48,9 @@
<activity <activity
android:name="com.yunbao.common.activity.SelectImageActivity" android:name="com.yunbao.common.activity.SelectImageActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity
android:name="com.yunbao.common.activity.SudGameActivity"
android:screenOrientation="portrait" />
<activity <activity
android:name="com.yunbao.common.activity.PreviewImageActivity" android:name="com.yunbao.common.activity.PreviewImageActivity"

View File

@ -188,8 +188,15 @@ public class CommonAppConfig {
} }
} }
private String[][] liveType = null;
public String[][] getLiveType() {
return liveType;
}
public void setConfig(ConfigBean config) { public void setConfig(ConfigBean config) {
mConfig = config; mConfig = config;
liveType = config.getLiveType();
} }
/** /**

View File

@ -56,9 +56,7 @@ public class CommonAppContext extends MultiDexApplication {
//设置新加坡融云服务器 有时候国内收不到推送是因为这个 //设置新加坡融云服务器 有时候国内收不到推送是因为这个
RongIMClient.setServerInfo("navsg01.cn.ronghub.com", null); RongIMClient.setServerInfo("navsg01.cn.ronghub.com", null);
//谷歌推送 //谷歌推送
PushConfig gconfig = new PushConfig.Builder() PushConfig gconfig = new PushConfig.Builder().enableFCM(true).build();
.enableFCM(true)
.build();
RongPushClient.setPushConfig(gconfig); RongPushClient.setPushConfig(gconfig);
//初始化友盟统计 //初始化友盟统计
// UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, null); // UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, null);
@ -86,6 +84,9 @@ public class CommonAppContext extends MultiDexApplication {
} }
public static Activity getTopActivity() { public static Activity getTopActivity() {
if (activityWeakReference == null) {
return null;
}
return activityWeakReference.get(); return activityWeakReference.get();
} }

View File

@ -185,6 +185,7 @@ public class Constants {
public static final String LIVE_PK_END = "endPK";//结束PK以这个PK获取到的参数为准 public static final String LIVE_PK_END = "endPK";//结束PK以这个PK获取到的参数为准
public static final String RED_PACKET = "RedPacket";//红包通知 public static final String RED_PACKET = "RedPacket";//红包通知
public static final String RED_PACKET_SUPER_JACKPOT = "RedPacketSuperJackpot";//超级红包通知 public static final String RED_PACKET_SUPER_JACKPOT = "RedPacketSuperJackpot";//超级红包通知
public static final String SOCKET_LIVE_MSG_TO_USER = "SendMsgToUser";//七日用户主播提示语
//游戏socket //游戏socket
public static final String SOCKET_GAME_ZJH = "startGame";//炸金花 public static final String SOCKET_GAME_ZJH = "startGame";//炸金花

View File

@ -24,6 +24,7 @@ import android.widget.TextView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.R; import com.yunbao.common.R;
import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.interfaces.LifeCycleListener; import com.yunbao.common.interfaces.LifeCycleListener;
@ -178,11 +179,15 @@ public abstract class AbsActivity extends AppCompatActivity {
} }
//友盟统计 //友盟统计
// MobclickAgent.onResume(this); // MobclickAgent.onResume(this);
MobclickAgent.onPageStart(this.mTag);
Log.e("MobclickAgent","MobclickAgent:_onResume_"+this.mTag);
} }
@Override @Override
protected void onPause() { protected void onPause() {
super.onPause(); super.onPause();
MobclickAgent.onPageEnd(this.mTag);
Log.e("MobclickAgent","MobclickAgent:_onPause_"+this.mTag);
if (mLifeCycleListeners != null) { if (mLifeCycleListeners != null) {
for (LifeCycleListener listener : mLifeCycleListeners) { for (LifeCycleListener listener : mLifeCycleListeners) {
listener.onPause(); listener.onPause();
@ -376,4 +381,5 @@ public abstract class AbsActivity extends AppCompatActivity {
break; break;
} }
} }
} }

View File

@ -3,6 +3,7 @@ package com.yunbao.common.activity;
import android.content.Context; import android.content.Context;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
@ -19,6 +20,7 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.android.billingclient.api.BillingResult; import com.android.billingclient.api.BillingResult;
import com.android.billingclient.api.Purchase; import com.android.billingclient.api.Purchase;
import com.android.billingclient.api.PurchasesResponseListener; import com.android.billingclient.api.PurchasesResponseListener;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.CommonAppConfig; import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.R; import com.yunbao.common.R;
import com.yunbao.common.fragment.GoogleFragment; import com.yunbao.common.fragment.GoogleFragment;
@ -118,34 +120,89 @@ public class MyWalletActivity extends AbsActivity {
}); });
}); });
WalletFragment walletFragment;
GoogleFragment googleFragment1;
GoogleFragment googleFragment2;
final String[] titles = {mContext.getString(R.string.diamond), mContext.getString(R.string.coins), mContext.getString(R.string.golden_beans)}; final String[] titles = {mContext.getString(R.string.diamond), mContext.getString(R.string.coins), mContext.getString(R.string.golden_beans)};
if (getIntent().getStringExtra("tag") != null) { if (getIntent().getStringExtra("tag") != null) {
Log.i("tss", "首充"); Log.i("tss", "首充");
if (CommonAppConfig.IS_GOOGLE_PLAY == false) { if (CommonAppConfig.IS_GOOGLE_PLAY == false) {
//链接版本 walletFragment = new WalletFragment();
fragments = new Fragment[]{new GoogleFragment(CommonAppConfig.HOST + "/index.php?g=Appapi&first_page=1&m=Mall&a=walletcoin&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")), Bundle bundle = new Bundle();
new GoogleFragment(CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&first_page=1&a=walletgold&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")), bundle.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&first_page=1&a=walletbean&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
new WalletFragment(this, CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&first_page=1&a=walletbean&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"))}; walletFragment.setArguments(bundle);
googleFragment1 = new GoogleFragment();
Bundle bundle1 = new Bundle();
bundle1.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&first_page=1&m=Mall&a=walletcoin&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
googleFragment1.setArguments(bundle1);
googleFragment2 = new GoogleFragment();
Bundle bundle2 = new Bundle();
bundle2.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&first_page=1&a=walletgold&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
googleFragment2.setArguments(bundle2);
} else { } else {
rView.setVisibility(View.VISIBLE); rView.setVisibility(View.VISIBLE);
fragments = new Fragment[]{new GoogleFragment(CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=googlepaycoin&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")), walletFragment = new WalletFragment();
new GoogleFragment(CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=googlepaygole&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")), Bundle bundle = new Bundle();
new WalletFragment(this, CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&first_page=1&a=walletbean&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"))}; bundle.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&first_page=1&a=walletbean&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
walletFragment.setArguments(bundle);
googleFragment1 = new GoogleFragment();
Bundle bundle1 = new Bundle();
bundle1.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=googlepaycoin&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
googleFragment1.setArguments(bundle1);
googleFragment2 = new GoogleFragment();
Bundle bundle2 = new Bundle();
bundle2.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=googlepaygole&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
googleFragment2.setArguments(bundle2);
} }
} else { } else {
if (CommonAppConfig.IS_GOOGLE_PLAY == false) { if (CommonAppConfig.IS_GOOGLE_PLAY == false) {
Log.i("tss", "不是首充"); Log.i("tss", "不是首充");
//链接版本 //链接版本
fragments = new Fragment[]{new GoogleFragment(CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=walletcoin&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")),
new GoogleFragment(CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=walletgold&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")), walletFragment = new WalletFragment();
new WalletFragment(this, CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=walletbean&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"))}; Bundle bundle = new Bundle();
bundle.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=walletbean&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
walletFragment.setArguments(bundle);
googleFragment1 = new GoogleFragment();
Bundle bundle1 = new Bundle();
bundle1.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=walletcoin&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
googleFragment1.setArguments(bundle1);
googleFragment2 = new GoogleFragment();
Bundle bundle2 = new Bundle();
bundle2.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=walletgold&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
googleFragment2.setArguments(bundle2);
} else { } else {
rView.setVisibility(View.VISIBLE); rView.setVisibility(View.VISIBLE);
fragments = new Fragment[]{new GoogleFragment(CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=googlepaycoin&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")),
new GoogleFragment(CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=googlepaygole&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")), walletFragment = new WalletFragment();
new WalletFragment(this, CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&first_page=1&a=walletbean&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"))}; Bundle bundle = new Bundle();
bundle.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&first_page=1&a=walletbean&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
walletFragment.setArguments(bundle);
googleFragment1 = new GoogleFragment();
Bundle bundle1 = new Bundle();
bundle1.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=googlepaycoin&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
googleFragment1.setArguments(bundle1);
googleFragment2 = new GoogleFragment();
Bundle bundle2 = new Bundle();
bundle2.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=googlepaygole&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
googleFragment2.setArguments(bundle2);
} }
} }
fragments = new Fragment[]{googleFragment1,
googleFragment2,
walletFragment};
MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator); MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator);
CommonNavigator commonNavigator = new CommonNavigator(this); CommonNavigator commonNavigator = new CommonNavigator(this);
commonNavigator.setAdjustMode(true); commonNavigator.setAdjustMode(true);
@ -167,6 +224,13 @@ public class MyWalletActivity extends AbsActivity {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
vp_content.setCurrentItem(index); vp_content.setCurrentItem(index);
if (index == 0) {
MobclickAgent.onEvent(mContext, "recharge_zs", "用户在充值页面选择左右切换到钻石或者点到钻石");
} else if (index == 1) {
MobclickAgent.onEvent(mContext, "recharge_xb", "用户在充值页面选择左右切换到星币或者点到星币");
} else if (index == 2) {
MobclickAgent.onEvent(mContext, "recharge_jd", "用户在充值页面选择左右切换到金豆或者点到金豆");
}
} }
}); });
return colorTransitionPagerTitleView; return colorTransitionPagerTitleView;

View File

@ -0,0 +1,151 @@
package com.yunbao.common.activity;
import android.app.Activity;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;
import androidx.lifecycle.Observer;
import com.google.gson.Gson;
import com.makeramen.roundedimageview.RoundedImageView;
import com.yunbao.common.R;
import com.yunbao.common.bean.CheckRemainingBalance;
import com.yunbao.common.bean.CreateSudRoomModel;
import com.yunbao.common.event.CheckRemainingBalanceEvent;
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.sud.QuickStartGameViewModel;
import com.yunbao.common.sud.model.GameConfigModel;
import com.yunbao.common.sud.state.SudMGPMGState;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
import java.util.Locale;
public class SudGameActivity extends AbsActivity {
private FrameLayout gameContainer;
private long mInteractionID;
private String mLiveUid;
private final QuickStartGameViewModel gameViewModel = new QuickStartGameViewModel(); // 创建ViewModel
private CreateSudRoomModel mCreateSudRoomModel;
private TextView gameTitle, roomName, roomNumber;
private RoundedImageView mAvatar;
@Override
protected int getLayoutId() {
return R.layout.activity_sud_game;
}
@Override
protected void main() {
Bus.getOn(this);
super.main();
initView();
}
@Override
protected void onDestroy() {
Bus.getOff(this);
super.onDestroy();
}
private void initView() {
String createSudRoomJson = getIntent().getStringExtra("CreateSudRoom");
mCreateSudRoomModel = new Gson().fromJson(createSudRoomJson, CreateSudRoomModel.class);
mInteractionID = mCreateSudRoomModel.getLongSudGameId();
mLiveUid = mCreateSudRoomModel.getSudGameRoomId();
gameContainer = findViewById(R.id.game_container);
gameTitle = findViewById(R.id.game_title);
roomName = findViewById(R.id.room_name);
roomNumber = findViewById(R.id.room_number);
mAvatar = findViewById(R.id.avatar);
if (mCreateSudRoomModel != null) {
gameTitle.setText(mCreateSudRoomModel.getSudGameName());
roomName.setText(mCreateSudRoomModel.getRoomName());
roomNumber.setText(mCreateSudRoomModel.getSudGameRoomId());
ImgLoader.display(mContext, mCreateSudRoomModel.getAvatar(), mAvatar);
}
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.exit), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
gameViewModel.onDestroy();
finish();
}
});
gameViewModel.gameViewLiveData.observe(this, new Observer<View>() {
@Override
public void onChanged(View view) {
if (view == null) { // 在关闭游戏时把游戏View给移除
gameContainer.removeAllViews();
} else { // 把游戏View添加到容器内
gameContainer.addView(view, FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
}
}
});
// 加载游戏参数定义可查看BaseGameViewModel.switchGame()方法注释
// 游戏配置
GameConfigModel gameConfigModel = gameViewModel.getGameConfigModel();
gameConfigModel.ui.ping.hide = true; // 配置不隐藏ping值
gameConfigModel.ui.level.hide = true; // 配置不隐藏ping值
gameConfigModel.ui.lobby_players.custom = true;
gameConfigModel.ui.join_btn.custom = true;
gameConfigModel.ui.lobby_game_setting.hide = true; // 配置不隐藏ping值
// SudMGP平台64bit游戏ID
gameViewModel.switchGame((Activity) mContext, mLiveUid, mInteractionID);
// gameViewModel.sudFSTAPPDecorator.notifyAPPCommonSelfIn(true, -1, true, 1);
// gameViewModel.sudFSTAPPDecorator.notifyAPPCommonSelfCaptain(String.valueOf(IMLoginManager.get(mContext).getUserInfo().getId()));
// ViewClicksAntiShake.clicksAntiShake(gameTitle, new ViewClicksAntiShake.ViewClicksCallBack() {
// @Override
// public void onViewClicks() {
//
// }
// });
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onCheckRemainingBalanceEvent(CheckRemainingBalanceEvent event) {
if (event.getResults().size() > 0) {
gameViewModel.sudFSTAPPDecorator.notifyAPPCommonSelfIn(false, event.getSeatIndex(), true, 1);
} else {
LiveNetManager.get(mContext).checkRemainingBalance(mCreateSudRoomModel.getSudGameRoomId(), new HttpCallback<CheckRemainingBalance>() {
@Override
public void onSuccess(CheckRemainingBalance data) {
if (data.getGoldenBeanRemainingBalance() == 1) {
gameViewModel.sudFSTAPPDecorator.notifyAPPCommonSelfIn(true, event.getSeatIndex(), true, 1);
} else {
if (IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
ToastUtil.show("金豆不够 ");
}else {
ToastUtil.show("Insufficient money ");
}
}
}
@Override
public void onError(String error) {
if (IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
ToastUtil.show("金豆不够 ");
}else {
ToastUtil.show("Insufficient money ");
}
}
});
}
}
}

View File

@ -7,6 +7,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Handler;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View; import android.view.View;
@ -47,6 +48,7 @@ import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
import com.yunbao.common.utils.MicStatusManager; import com.yunbao.common.utils.MicStatusManager;
import com.yunbao.common.utils.RouteUtil; import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.HintCustomPopup; import com.yunbao.common.views.HintCustomPopup;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
@ -111,7 +113,13 @@ public class WebViewActivity extends AbsActivity {
@Override @Override
public void onPageFinished(WebView view, String url) { public void onPageFinished(WebView view, String url) {
setTitle(view.getTitle()); new Handler().postDelayed(new Runnable() {
@Override
public void run() {
setTitle(view.getTitle());
}
}, 500);
if (url.contains("for")) { if (url.contains("for")) {
mWebView.loadUrl("javascript:goAnchorTab()"); mWebView.loadUrl("javascript:goAnchorTab()");
} }
@ -254,7 +262,7 @@ public class WebViewActivity extends AbsActivity {
mIsLive = isLive; mIsLive = isLive;
if (Constants.LoginKefu) { if (Constants.LoginKefu) {
if (addArgs) { if (addArgs) {
url += "&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken(); url += "&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
} }
} }
Intent intent = new Intent(context, WebViewActivity.class); Intent intent = new Intent(context, WebViewActivity.class);
@ -262,7 +270,7 @@ public class WebViewActivity extends AbsActivity {
context.startActivity(intent); context.startActivity(intent);
} }
public static void forward(Context context, String url,boolean isLive) { public static void forward(Context context, String url, boolean isLive) {
forward(context, url, true, isLive); forward(context, url, true, isLive);
} }
@ -330,6 +338,7 @@ public class WebViewActivity extends AbsActivity {
if (Constants.isShowPage != -1) { if (Constants.isShowPage != -1) {
finish(); finish();
} }
} }
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
@ -434,4 +443,11 @@ public class WebViewActivity extends AbsActivity {
} }
@Override
protected void onPause() {
super.onPause();
}
} }

View File

@ -0,0 +1,41 @@
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.playerObject;
import com.yunbao.common.views.AvatarListViewHolder;
import java.util.ArrayList;
import java.util.List;
public class AvatarListAdapter extends RecyclerView.Adapter {
private List<playerObject> playerObjects = new ArrayList<>();
public AvatarListAdapter(List<playerObject> playerObjects) {
this.playerObjects = playerObjects;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_sud_avatar_list_view, parent, false);
return new AvatarListViewHolder(runGamesView);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
AvatarListViewHolder avatarListViewHolder = (AvatarListViewHolder) holder;
avatarListViewHolder.setData(playerObjects.get(position));
}
@Override
public int getItemCount() {
return playerObjects.size();
}
}

View File

@ -19,11 +19,14 @@ import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.DrawerRecommendViewHolder; import com.yunbao.common.views.DrawerRecommendViewHolder;
import com.yunbao.common.views.DrawerTaskViewHolder; import com.yunbao.common.views.DrawerTaskViewHolder;
import com.yunbao.common.views.FunGamesViewHolder; import com.yunbao.common.views.FunGamesViewHolder;
import com.yunbao.common.views.InteractionGamesViewHolder;
import com.yunbao.common.views.RecommendViewHolder; import com.yunbao.common.views.RecommendViewHolder;
import com.yunbao.common.views.RigtsInterestsViewHolder; import com.yunbao.common.views.RigtsInterestsViewHolder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 新侧边栏适配器 * 新侧边栏适配器
@ -72,9 +75,12 @@ public class CustomDrawerPopupAdapter extends RecyclerView.Adapter {
case RIGHTS_INTERESTS: case RIGHTS_INTERESTS:
View rightsInterestsView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_rights_interests, parent, false); View rightsInterestsView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_rights_interests, parent, false);
return new RigtsInterestsViewHolder(rightsInterestsView); return new RigtsInterestsViewHolder(rightsInterestsView);
default: case RECOMMEND:
View recommendView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_recommend, parent, false); View recommendView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_recommend, parent, false);
return new RecommendViewHolder(recommendView); return new RecommendViewHolder(recommendView);
default:
View gamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_interaction_games_view, parent, false);
return new InteractionGamesViewHolder(gamesView);
} }
} }
@ -92,6 +98,9 @@ public class CustomDrawerPopupAdapter extends RecyclerView.Adapter {
} else if (holder instanceof RigtsInterestsViewHolder) { } else if (holder instanceof RigtsInterestsViewHolder) {
RigtsInterestsViewHolder rigtsInterestsViewHolder = (RigtsInterestsViewHolder) holder; RigtsInterestsViewHolder rigtsInterestsViewHolder = (RigtsInterestsViewHolder) holder;
rigtsInterestsViewHolder.setData(infoModels.get(position)); rigtsInterestsViewHolder.setData(infoModels.get(position));
} else if (holder instanceof InteractionGamesViewHolder) {
InteractionGamesViewHolder interactionGamesViewHolder = (InteractionGamesViewHolder) holder;
interactionGamesViewHolder.setData(infoModels.get(position));
} else if (holder instanceof RecommendViewHolder) { } else if (holder instanceof RecommendViewHolder) {
RecommendViewHolder recommendViewHolder = (RecommendViewHolder) holder; RecommendViewHolder recommendViewHolder = (RecommendViewHolder) holder;
@ -101,9 +110,13 @@ public class CustomDrawerPopupAdapter extends RecyclerView.Adapter {
recommendViewHolder.setListener(new RecommendViewHolder.RecommendViewListener() { recommendViewHolder.setListener(new RecommendViewHolder.RecommendViewListener() {
@Override @Override
public void changeOneBatch() { public void changeOneBatch() {
Map<String, Object> map = new HashMap<>();
map.put("num", "9");
map.put("live_recommend", "sidebar");
map.put("refresh", "1");
//推荐位 //推荐位
MainNetManager.get((Activity) mContext) MainNetManager.get((Activity) mContext)
.anchorRecommend("9", new com.yunbao.common.http.base.HttpCallback<AnchorRecommendModel>() { .anchorRecommend(map, new com.yunbao.common.http.base.HttpCallback<AnchorRecommendModel>() {
@Override @Override
public void onSuccess(AnchorRecommendModel anchorRecommendModel) { public void onSuccess(AnchorRecommendModel anchorRecommendModel) {
@ -122,7 +135,7 @@ public class CustomDrawerPopupAdapter extends RecyclerView.Adapter {
@Override @Override
public void onError(String error) { public void onError(String error) {
ToastUtil.show(R.string.net_error); ToastUtil.show(mContext.getString(R.string.net_error));
} }
}); });
} }

View File

@ -0,0 +1,79 @@
package com.yunbao.common.adapter;
import android.content.Context;
import android.text.TextUtils;
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.CustomSidebarChildModel;
import com.yunbao.common.event.CustomDrawerPopupEvent;
import com.yunbao.common.utils.Bus;
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<>();
public InteractionGamesAdapter(Context mContext, boolean rigts) {
this.mContext = mContext;
this.rigts = rigts;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view3, parent, false);
return new InteractionGamesChildViewHolder(runGamesView);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
InteractionGamesChildViewHolder childViewHolder = (InteractionGamesChildViewHolder) holder;
childViewHolder.setData(child.get(position), rigts);
childViewHolder.setItemViewClicks(new InteractionGamesChildViewHolder.InteractionGamesCallBack() {
@Override
public void onItemViewClicks(CustomSidebarChildModel model, boolean rigts) {
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));
}
}
});
}
@Override
public int getItemCount() {
return child.size();
}
public void updateData(List<CustomSidebarChildModel> mChild) {
child.clear();
if (mChild.size() > 8) {
for (int i = 0; i < 8; i++) {
child.add(mChild.get(i));
}
} else {
child.addAll(mChild);
}
notifyDataSetChanged();
}
public void selectAll(List<CustomSidebarChildModel> mChild) {
child.clear();
child.addAll(mChild);
notifyDataSetChanged();
}
}

View File

@ -0,0 +1,65 @@
package com.yunbao.common.adapter;
import android.content.Context;
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.CustomSidebarChildModel;
import com.yunbao.common.views.FunGamesChildViewHolder;
import com.yunbao.common.views.NewRoleFunGamesChildViewHolder;
import java.util.ArrayList;
import java.util.List;
public class LiveNewRoleFunGamesAdapter extends RecyclerView.Adapter {
private Context mContext;
private boolean rigts;
private List<CustomSidebarChildModel> child = new ArrayList<>();
private boolean showRed = false;
public LiveNewRoleFunGamesAdapter(Context mContext, boolean rigts,boolean showRed) {
this.mContext = mContext;
this.rigts = rigts;
this.showRed = showRed;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view, parent, false);
return new NewRoleFunGamesChildViewHolder(runGamesView,showRed);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
NewRoleFunGamesChildViewHolder childViewHolder = (NewRoleFunGamesChildViewHolder) holder;
childViewHolder.setData(child.get(position), rigts);
}
@Override
public int getItemCount() {
return child.size();
}
public void updateData(List<CustomSidebarChildModel> mChild) {
child.clear();
if (mChild.size() > 8) {
for (int i = 0; i < 8; i++) {
child.add(mChild.get(i));
}
} else {
child.addAll(mChild);
}
notifyDataSetChanged();
}
public void selectAll(List<CustomSidebarChildModel> mChild) {
child.clear();
child.addAll(mChild);
notifyDataSetChanged();
}
}

View File

@ -0,0 +1,85 @@
package com.yunbao.common.adapter;
import android.content.Context;
import android.text.TextUtils;
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.CustomSidebarChildModel;
import com.yunbao.common.event.CustomDrawerPopupEvent;
import com.yunbao.common.event.LiveNewRoleEvent;
import com.yunbao.common.event.NewRoleCustomDrawerPopupEvent;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.views.InteractionGamesChildViewHolder;
import java.util.ArrayList;
import java.util.List;
public class LiveNewRoleInteractionGamesAdapter extends RecyclerView.Adapter {
private Context mContext;
private boolean rigts;
private List<CustomSidebarChildModel> child = new ArrayList<>();
public LiveNewRoleInteractionGamesAdapter(Context mContext, boolean rigts) {
this.mContext = mContext;
this.rigts = rigts;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view3, parent, false);
return new InteractionGamesChildViewHolder(runGamesView);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
InteractionGamesChildViewHolder childViewHolder = (InteractionGamesChildViewHolder) holder;
childViewHolder.setData(child.get(position), rigts);
childViewHolder.setItemViewClicks(new InteractionGamesChildViewHolder.InteractionGamesCallBack() {
@Override
public void onItemViewClicks(CustomSidebarChildModel model, boolean rigts) {
long activityID = TextUtils.isEmpty(model.getSrc()) ? 0 : Long.parseLong(model.getSrc());
if (activityID != 0) {
Bus.get().post(new NewRoleCustomDrawerPopupEvent()
.setDisMiss(true)
.setInteractionID(activityID)
.setChild(child)
.setInteraction(true));
}
Bus.get().post(new LiveNewRoleEvent());
}
});
}
@Override
public int getItemCount() {
return child.size();
}
public void updateData(List<CustomSidebarChildModel> mChild) {
child.clear();
if (mChild.size() > 8) {
for (int i = 0; i < 8; i++) {
child.add(mChild.get(i));
}
} else {
child.addAll(mChild);
}
notifyDataSetChanged();
}
public void selectAll(List<CustomSidebarChildModel> mChild) {
child.clear();
child.addAll(mChild);
notifyDataSetChanged();
}
}

View File

@ -0,0 +1,102 @@
package com.yunbao.common.adapter;
import android.content.Context;
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.AnchorRecommendItemModel;
import com.yunbao.common.bean.CustomSidebarInfoModel;
import com.yunbao.common.views.LiveNewRoleFunGamesViewHolder;
import com.yunbao.common.views.LiveNewRoleInteractionGamesViewHolder;
import com.yunbao.common.views.LiveNewRoleRigtsInterestsViewHolder;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
public class LiveNewRolerPopupAdapter extends RecyclerView.Adapter {
private Context mContext;
// "type": 1,//模块类型 1 充值送好礼类型2 任务中心类型 3趣味游戏类4 权益 ,5为你推荐
private final int FUN_GAMES = 3;
private final int RIGHTS_INTERESTS = 4;
private List<CustomSidebarInfoModel> infoModels = new ArrayList<>();
private boolean showRed = false;
public LiveNewRolerPopupAdapter(Context mContext,boolean showRed) {
this.mContext = mContext;
this.showRed = showRed;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
switch (viewType) {
case FUN_GAMES:
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_new_roler_fun_games_view, parent, false);
return new LiveNewRoleFunGamesViewHolder(runGamesView);
case RIGHTS_INTERESTS:
View rightsInterestsView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_roler_ights_interests, parent, false);
return new LiveNewRoleRigtsInterestsViewHolder(rightsInterestsView,showRed);
default:
View gamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_interaction_games_view, parent, false);
return new LiveNewRoleInteractionGamesViewHolder(gamesView);
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if (holder instanceof LiveNewRoleFunGamesViewHolder) {
LiveNewRoleFunGamesViewHolder funGamesViewHolder = (LiveNewRoleFunGamesViewHolder) holder;
funGamesViewHolder.setData(infoModels.get(position));
} else if (holder instanceof LiveNewRoleRigtsInterestsViewHolder) {
LiveNewRoleRigtsInterestsViewHolder rigtsInterestsViewHolder = (LiveNewRoleRigtsInterestsViewHolder) holder;
rigtsInterestsViewHolder.setData(infoModels.get(position));
} else if (holder instanceof LiveNewRoleInteractionGamesViewHolder) {
LiveNewRoleInteractionGamesViewHolder interactionGamesViewHolder = (LiveNewRoleInteractionGamesViewHolder) holder;
interactionGamesViewHolder.setData(infoModels.get(position));
}
}
@Override
public int getItemCount() {
return infoModels.size();
}
@Override
public int getItemViewType(int position) {
CustomSidebarInfoModel model = infoModels.get(position);
switch (model.getType()) {
case "3":
return FUN_GAMES;
case "4":
return RIGHTS_INTERESTS;
}
return super.getItemViewType(position);
}
public void updateData(List<CustomSidebarInfoModel> mInfoModels) {
infoModels.clear();
infoModels.addAll(mInfoModels);
notifyDataSetChanged();
}
private CustomDrawerListener listener;
public LiveNewRolerPopupAdapter setListener(CustomDrawerListener listener) {
this.listener = listener;
return this;
}
public interface CustomDrawerListener {
void goToLive(AnchorRecommendItemModel model);
}
}

View File

@ -13,6 +13,7 @@ import com.yunbao.common.bean.WishModel;
import com.yunbao.common.event.LiveNewWishListCloseEvent; import com.yunbao.common.event.LiveNewWishListCloseEvent;
import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.DayWishItemViewHolder; import com.yunbao.common.views.DayWishItemViewHolder;
import com.yunbao.common.views.LunarWishItemViewHolder; import com.yunbao.common.views.LunarWishItemViewHolder;
import com.yunbao.common.views.SeasonalWishItemViewHolder; import com.yunbao.common.views.SeasonalWishItemViewHolder;
@ -53,7 +54,7 @@ public class LiveNewWishAdapter extends RecyclerView.Adapter {
if (wishList.get(i)!=null){ if (wishList.get(i)!=null){
if (!TextUtils.isEmpty(wishList.get(i).getLid()) && !TextUtils.isEmpty(model.getLid()) if (!TextUtils.isEmpty(wishList.get(i).getLid()) && !TextUtils.isEmpty(model.getLid())
&& TextUtils.equals(wishList.get(i).getLid(), model.getLid())) { && TextUtils.equals(wishList.get(i).getLid(), model.getLid())) {
ToastUtil.show(R.string.too_many_gifts); ToastUtil.show(WordUtil.isNewZh()?"重複添加禮物":"Too many gifts");
isAdd = true; isAdd = true;
} }
} }

View File

@ -110,7 +110,7 @@ public class MsgFollowAdapter extends RecyclerView.Adapter<MsgFollowAdapter.Vh>
@Override @Override
public void onError(String error) { public void onError(String error) {
ToastUtil.show( R.string.net_error); ToastUtil.show( mContext.getString(R.string.net_error));
} }
}); });
} }

View File

@ -0,0 +1,64 @@
package com.yunbao.common.adapter;
import android.content.Context;
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.CustomSidebarChildModel;
import com.yunbao.common.views.NewRoleFunGamesChildViewHolder;
import java.util.ArrayList;
import java.util.List;
public class NewRoleFunGamesAdapter extends RecyclerView.Adapter {
private Context mContext;
private List<CustomSidebarChildModel> child = new ArrayList<>();
private boolean rigts;
public NewRoleFunGamesAdapter(Context mContext, boolean rigts) {
this.mContext = mContext;
this.rigts = rigts;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view2, parent, false);
return new NewRoleFunGamesChildViewHolder(runGamesView,false);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
NewRoleFunGamesChildViewHolder childViewHolder = (NewRoleFunGamesChildViewHolder) holder;
childViewHolder.setData(child.get(position), rigts);
}
@Override
public int getItemCount() {
return child.size();
}
public void updateData(List<CustomSidebarChildModel> mChild) {
child.clear();
if (mChild.size() > 8) {
for (int i = 0; i < 8; i++) {
child.add(mChild.get(i));
}
} else {
child.addAll(mChild);
}
notifyDataSetChanged();
}
public void selectAll(List<CustomSidebarChildModel> mChild) {
child.clear();
child.addAll(mChild);
notifyDataSetChanged();
}
}

View File

@ -0,0 +1,36 @@
package com.yunbao.common.adapter;
import android.content.Context;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.bean.SudRoomListModel;
import com.yunbao.common.views.SudGameListViewHolder;
public class SudGameListAdapter extends RefreshAdapter<SudRoomListModel> {
private boolean isHome = false;
public SudGameListAdapter(Context context, boolean isHome) {
super(context);
this.isHome = isHome;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (isHome){
return new SudGameListViewHolder(mInflater.inflate(R.layout.item_home_sud_game_list, parent, false));
}else {
return new SudGameListViewHolder(mInflater.inflate(R.layout.item_sud_game_list, parent, false));
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
SudGameListViewHolder sudGameListViewHolder = (SudGameListViewHolder) holder;
sudGameListViewHolder.setData(mList.get(position),isHome);
}
}

View File

@ -0,0 +1,83 @@
package com.yunbao.common.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.interfaces.OnItemClickListener;
import java.util.ArrayList;
import java.util.List;
public class SudGameSearchHistoryListAdapter extends RecyclerView.Adapter<SudGameSearchHistoryListAdapter.ViewHolder> {
private List<String> mList;
private Context mContext;
private OnItemClickListener<String> onItemClickListener;
private boolean isHome = false;
public SudGameSearchHistoryListAdapter(Context mContext, boolean isHome) {
this.isHome = isHome;
this.mContext = mContext;
mList = new ArrayList<>();
}
public void setList(List<String> list) {
this.mList = list;
notifyDataSetChanged();
}
public void setOnItemClickListener(OnItemClickListener<String> onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (isHome) {
return new ViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_search_history, parent, false));
} else {
return new ViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_home_search_history, parent, false));
}
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.setData(mList.get(position));
}
@Override
public int getItemCount() {
return Math.min(mList.size(), 5);
}
public List<String> getList() {
return mList;
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView nameView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
nameView = itemView.findViewById(R.id.history);
}
public void setData(String name) {
nameView.setText(name);
nameView.setOnClickListener(v -> {
if (onItemClickListener != null) {
onItemClickListener.onItemClick(name, 0);
}
});
}
}
}

View File

@ -0,0 +1,34 @@
package com.yunbao.common.adapter;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
public class SudGameSearchRoomListAdapter extends RecyclerView.Adapter<SudGameSearchRoomListAdapter.ViewHolder> {
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return null;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return 0;
}
public class ViewHolder extends RecyclerView.ViewHolder{
public ViewHolder(@NonNull View itemView) {
super(itemView);
}
}
}

View File

@ -0,0 +1,54 @@
package com.yunbao.common.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.bean.SudRoomListModel;
import com.yunbao.common.views.SudGameListViewHolder;
import java.util.ArrayList;
import java.util.List;
public class SudHomeGameListAdapter extends RecyclerView.Adapter<SudGameListViewHolder> {
private Context mContext;
private List<SudRoomListModel> mList;
private boolean isHome = false;
public SudHomeGameListAdapter(Context mContext, boolean isHome) {
this.mContext = mContext;
this.isHome = isHome;
mList = new ArrayList<>();
}
public void setList(List<SudRoomListModel> mList) {
this.mList = mList;
notifyDataSetChanged();
}
@NonNull
@Override
public SudGameListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (isHome) {
return new SudGameListViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_home_sud_game_list, parent, false));
} else {
return new SudGameListViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_sud_game_list, parent, false));
}
}
@Override
public void onBindViewHolder(@NonNull SudGameListViewHolder holder, int position) {
holder.setData(mList.get(position),isHome);
}
@Override
public int getItemCount() {
return mList.size();
}
}

View File

@ -0,0 +1,65 @@
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.SudTitleSelectViewHolder;
import java.util.ArrayList;
import java.util.List;
public class SudTitleSelectAdapter extends RecyclerView.Adapter {
private List<String> selectString = new ArrayList<>();
private int mIndex;
private int mType;
public SudTitleSelectAdapter(List<String> selectString, int index, int type) {
this.selectString = selectString;
mIndex = index;
mType = type;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_sud_title_select_view, parent, false);
return new SudTitleSelectViewHolder(runGamesView);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
SudTitleSelectViewHolder childViewHolder = (SudTitleSelectViewHolder) holder;
childViewHolder.setData(selectString.get(position), mIndex == position, position, new SudTitleSelectViewHolder.SudTitleSelectListener() {
@Override
public void onSudTitleSelectCallBack(int index) {
if (sudTitleSelectCallBack != null) {
sudTitleSelectCallBack.onSudTitleSelectCallBack(index);
}
}
});
}
@Override
public int getItemCount() {
return selectString.size();
}
private SudTitleSelectCallBack sudTitleSelectCallBack;
public void setSudTitleSelectCallBack(SudTitleSelectCallBack sudTitleSelectCallBack) {
this.sudTitleSelectCallBack = sudTitleSelectCallBack;
}
public interface SudTitleSelectCallBack {
void onSudTitleSelectCallBack(int index);
}
}

View File

@ -5,6 +5,7 @@ import android.content.Context;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import com.yunbao.common.CommonAppConfig; import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.WordUtil;
/** /**
* 活动 * 活动
@ -105,7 +106,7 @@ public class ActiveModel extends BaseModel {
"?uid=" + userInfo.getId() + "?uid=" + userInfo.getId() +
"&token=" + userInfo.getToken() "&token=" + userInfo.getToken()
+ "&anchorUid=" + liveUid + "&anchorUid=" + liveUid
+ "&active_id=" + activeId; + "&active_id=" + activeId+ "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
return url; return url;
} }
} }

View File

@ -0,0 +1,17 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class CheckRemainingBalance extends BaseModel{
@SerializedName("golden_bean_remaining_balance")
private int goldenBeanRemainingBalance;
public int getGoldenBeanRemainingBalance() {
return goldenBeanRemainingBalance;
}
public void setGoldenBeanRemainingBalance(int goldenBeanRemainingBalance) {
this.goldenBeanRemainingBalance = goldenBeanRemainingBalance;
}
}

View File

@ -0,0 +1,164 @@
package com.yunbao.common.bean;
import android.text.TextUtils;
import com.google.gson.annotations.SerializedName;
public class CreateSudRoomModel extends BaseModel {
@SerializedName("sud_game_room_id")
private String sudGameRoomId;
@SerializedName("sud_game_id")
private String sudGameId;
@SerializedName("room_holder_id")
private int roomHolderId;
@SerializedName("room_holder_name")
private String roomHolderName;
@SerializedName("avatar")
private String avatar;
@SerializedName("room_holder_type")
private int roomHolderType;
@SerializedName("sud_game_name")
private String sudGameName;
@SerializedName("room_name")
private String roomName;
@SerializedName("room_status")
private String roomStatus;
@SerializedName("player_total")
private String playerTotal;
@SerializedName("ob_total")
private String obTotal;
@SerializedName("mg_id")
private String mgId;
@SerializedName("sud_game_icon")
private String sudGameIcon;
public String getSudGameRoomId() {
return sudGameRoomId;
}
public CreateSudRoomModel setSudGameRoomId(String sudGameRoomId) {
this.sudGameRoomId = sudGameRoomId;
return this;
}
public String getSudGameId() {
return sudGameId;
}
public long getLongSudGameId() {
try {
if (TextUtils.isEmpty(sudGameId)) {
return 0;
} else {
return Long.parseLong(sudGameId);
}
} catch (NumberFormatException e) {
return 0;
}
}
public CreateSudRoomModel setSudGameId(String sudGameId) {
this.sudGameId = sudGameId;
return this;
}
public int getRoomHolderId() {
return roomHolderId;
}
public CreateSudRoomModel setRoomHolderId(int roomHolderId) {
this.roomHolderId = roomHolderId;
return this;
}
public String getRoomHolderName() {
return roomHolderName;
}
public CreateSudRoomModel setRoomHolderName(String roomHolderName) {
this.roomHolderName = roomHolderName;
return this;
}
public String getAvatar() {
return avatar;
}
public CreateSudRoomModel setAvatar(String avatar) {
this.avatar = avatar;
return this;
}
public int getRoomHolderType() {
return roomHolderType;
}
public CreateSudRoomModel setRoomHolderType(int roomHolderType) {
this.roomHolderType = roomHolderType;
return this;
}
public String getSudGameName() {
return sudGameName;
}
public CreateSudRoomModel setSudGameName(String sudGameName) {
this.sudGameName = sudGameName;
return this;
}
public String getRoomName() {
return roomName;
}
public CreateSudRoomModel setRoomName(String roomName) {
this.roomName = roomName;
return this;
}
public String getRoomStatus() {
return roomStatus;
}
public CreateSudRoomModel setRoomStatus(String roomStatus) {
this.roomStatus = roomStatus;
return this;
}
public String getPlayerTotal() {
return playerTotal;
}
public CreateSudRoomModel setPlayerTotal(String playerTotal) {
this.playerTotal = playerTotal;
return this;
}
public String getObTotal() {
return obTotal;
}
public CreateSudRoomModel setObTotal(String obTotal) {
this.obTotal = obTotal;
return this;
}
public String getMgId() {
return mgId;
}
public CreateSudRoomModel setMgId(String mgId) {
this.mgId = mgId;
return this;
}
public String getSudGameIcon() {
return sudGameIcon;
}
public CreateSudRoomModel setSudGameIcon(String sudGameIcon) {
this.sudGameIcon = sudGameIcon;
return this;
}
}

View File

@ -34,6 +34,17 @@ public class CustomSidebarChildModel extends BaseModel {
private String flag = ""; private String flag = "";
@SerializedName("is_show") @SerializedName("is_show")
private String isShow; private String isShow;
@SerializedName("sud_game_is_new")
private String sudGameIsNew;
public String getSudGameIsNew() {
return sudGameIsNew;
}
public CustomSidebarChildModel setSudGameIsNew(String sudGameIsNew) {
this.sudGameIsNew = sudGameIsNew;
return this;
}
public String getIsShow() { public String getIsShow() {
return isShow; return isShow;

View File

@ -26,6 +26,8 @@ public class CustomSidebarInfoModel extends BaseModel {
private String src; private String src;
@SerializedName("type") @SerializedName("type")
private String type; private String type;
@SerializedName("sud_game_is_new")
private String sudGameIsNew;
@SerializedName("child") @SerializedName("child")
private List<CustomSidebarChildModel> child; private List<CustomSidebarChildModel> child;
@ -38,6 +40,15 @@ public class CustomSidebarInfoModel extends BaseModel {
return this; return this;
} }
public String getSudGameIsNew() {
return sudGameIsNew;
}
public CustomSidebarInfoModel setSudGameIsNew(String sudGameIsNew) {
this.sudGameIsNew = sudGameIsNew;
return this;
}
public String getTitle() { public String getTitle() {
return title; return title;
} }

View File

@ -33,6 +33,40 @@ public class EnterRoomNewModel extends BaseModel {
@SerializedName("wishListProgress") @SerializedName("wishListProgress")
private WishModel wishListProgress; private WishModel wishListProgress;
@SerializedName("sud_game_room_status")
private String sudGameRoomStatus;
@SerializedName("sud_game_room_name")
private String sudGameRoomName;
@SerializedName("sud_gameDate")
private SudGameDateModel sudGameDateModel;
public SudGameDateModel getSudGameDateModel() {
return sudGameDateModel;
}
public EnterRoomNewModel setSudGameDateModel(SudGameDateModel sudGameDateModel) {
this.sudGameDateModel = sudGameDateModel;
return this;
}
public String getSudGameRoomName() {
return sudGameRoomName;
}
public EnterRoomNewModel setSudGameRoomName(String sudGameRoomName) {
this.sudGameRoomName = sudGameRoomName;
return this;
}
public String getSudGameRoomStatus() {
return sudGameRoomStatus;
}
public EnterRoomNewModel setSudGameRoomStatus(String sudGameRoomStatus) {
this.sudGameRoomStatus = sudGameRoomStatus;
return this;
}
public WishModel getWishListProgress() { public WishModel getWishListProgress() {
return wishListProgress; return wishListProgress;
} }

View File

@ -1,29 +1,45 @@
package com.yunbao.common.bean; package com.yunbao.common.bean;
import android.text.TextUtils;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
public class LinkMicUserBean extends BaseModel { public class LinkMicUserBean extends BaseModel {
@SerializedName("user_nicename")
private String uname; @SerializedName("id")
private String id;
@SerializedName("avatar") @SerializedName("avatar")
private String avatar; private String avatar;
@SerializedName("dress_avatar") @SerializedName("user_nicename")
private String dress_avatar; private String userNicename;
private String uid = ""; @SerializedName("uname")
private String action; private String uname;
@SerializedName("id")
private String id;//连麦显示右侧头像时要用
@SerializedName("level") @SerializedName("level")
private int level; private int level;
@SerializedName("sex") @SerializedName("sex")
private int sex; private int sex;
@SerializedName("dress_avatar")
private String dressAvatar;
public String getUname() { public String getUname() {
return uname; if (TextUtils.isEmpty(uname)){
return userNicename;
}else {
return uname;
}
} }
public void setUname(String uname) { public LinkMicUserBean setUname(String uname) {
this.uname = uname; this.uname = uname;
return this;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
} }
public String getAvatar() { public String getAvatar() {
@ -34,28 +50,17 @@ public class LinkMicUserBean extends BaseModel {
this.avatar = avatar; this.avatar = avatar;
} }
public String getUid() { public String getUserNicename() {
return uid; if (TextUtils.isEmpty(uname)){
return userNicename;
}else {
return uname;
}
} }
public void setUid(String uid) { public void setUserNicename(String userNicename) {
this.uid = uid; this.userNicename = userNicename;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getDress_avatar() {
return dress_avatar;
}
public void setDress_avatar(String dress_avatar) {
this.dress_avatar = dress_avatar;
} }
public int getLevel() { public int getLevel() {
@ -74,25 +79,11 @@ public class LinkMicUserBean extends BaseModel {
this.sex = sex; this.sex = sex;
} }
public String getId() { public String getDressAvatar() {
return id; return dressAvatar;
} }
public void setId(String id) { public void setDressAvatar(String dressAvatar) {
this.id = id; this.dressAvatar = dressAvatar;
}
@Override
public String toString() {
return "LinkMicUserBean{" +
"uname='" + uname + '\'' +
", avatar='" + avatar + '\'' +
", dress_avatar='" + dress_avatar + '\'' +
", uid='" + uid + '\'' +
", action='" + action + '\'' +
", id='" + id + '\'' +
", level=" + level +
", sex=" + sex +
'}';
} }
} }

View File

@ -54,7 +54,8 @@ public class LiveBean implements Parcelable {
private String recommendCardIconSizeThree = ""; private String recommendCardIconSizeThree = "";
@SerializedName("red_packet_status") @SerializedName("red_packet_status")
private int redPacketStatus; private int redPacketStatus;
@SerializedName("giftId")
private String giftId;
private Map<String,String> params;//用于跳转Activity时扩展参数从首页Banner跳转到直播间时需要根据携带参数判断是否弹出新人特惠对话框 private Map<String,String> params;//用于跳转Activity时扩展参数从首页Banner跳转到直播间时需要根据携带参数判断是否弹出新人特惠对话框
public String getRecommendCardIconSizeTwo() { public String getRecommendCardIconSizeTwo() {
@ -66,6 +67,14 @@ public class LiveBean implements Parcelable {
return this; return this;
} }
public String getGiftId() {
return giftId;
}
public void setGiftId(String giftId) {
this.giftId = giftId;
}
public String getRecommendCardIcon() { public String getRecommendCardIcon() {
if (TextUtils.isEmpty(recommendCardIconSizeThree)) { if (TextUtils.isEmpty(recommendCardIconSizeThree)) {
if (!TextUtils.isEmpty(recommendCardIconSizeTwo)) { if (!TextUtils.isEmpty(recommendCardIconSizeTwo)) {
@ -444,6 +453,7 @@ public class LiveBean implements Parcelable {
this.recommendCardtype = in.readString(); this.recommendCardtype = in.readString();
this.recommendCardIconSizeTwo = in.readString(); this.recommendCardIconSizeTwo = in.readString();
this.recommendCardIconSizeThree = in.readString(); this.recommendCardIconSizeThree = in.readString();
this.giftId = in.readString();
} }
@Override @Override
@ -488,6 +498,7 @@ public class LiveBean implements Parcelable {
dest.writeString(this.recommendCardtype); dest.writeString(this.recommendCardtype);
dest.writeString(this.recommendCardIconSizeTwo); dest.writeString(this.recommendCardIconSizeTwo);
dest.writeString(this.recommendCardIconSizeThree); dest.writeString(this.recommendCardIconSizeThree);
dest.writeString(this.giftId);
} }
public static final Creator<LiveBean> CREATOR = new Creator<LiveBean>() { public static final Creator<LiveBean> CREATOR = new Creator<LiveBean>() {

View File

@ -1,6 +1,7 @@
package com.yunbao.common.bean; package com.yunbao.common.bean;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.google.gson.annotations.SerializedName;
/** /**
* Created by cxf on 2018/9/25. * Created by cxf on 2018/9/25.
@ -16,6 +17,8 @@ public class LiveClassBean {
private boolean checked; private boolean checked;
private String chinese; private String chinese;
private String english; private String english;
@SerializedName("channel_show")
private int channel_show;
public String getChinese() { public String getChinese() {
return chinese; return chinese;
@ -92,4 +95,12 @@ public class LiveClassBean {
public void setChecked(boolean checked) { public void setChecked(boolean checked) {
this.checked = checked; this.checked = checked;
} }
public int getChannel_show() {
return channel_show;
}
public void setChannel_show(int channel_show) {
this.channel_show = channel_show;
}
} }

View File

@ -66,6 +66,28 @@ public class LiveGiftBean {
private String namingCoin; private String namingCoin;
@JSONField(name = "naming_user_coin") @JSONField(name = "naming_user_coin")
private String namingUserCoin; private String namingUserCoin;
@JSONField(name = "blind_box_ticket")
private int blindBoxTicket;
@JSONField(name = "blind_box_ticket_id")
private int blindBoxTicketId;
public int getBlindBoxTicketId() {
return blindBoxTicketId;
}
public LiveGiftBean setBlindBoxTicketId(int blindBoxTicketId) {
this.blindBoxTicketId = blindBoxTicketId;
return this;
}
public int getBlindBoxTicket() {
return blindBoxTicket;
}
public LiveGiftBean setBlindBoxTicket(int blindBoxTicket) {
this.blindBoxTicket = blindBoxTicket;
return this;
}
public String getNamingUserCoin() { public String getNamingUserCoin() {
return namingUserCoin; return namingUserCoin;
@ -202,7 +224,7 @@ public class LiveGiftBean {
return this; return this;
} }
private int fansGiftLevel=0;//粉丝团礼物等级要求 private int fansGiftLevel = 0;//粉丝团礼物等级要求
public int getFansGiftLevel() { public int getFansGiftLevel() {
return fansGiftLevel; return fansGiftLevel;

View File

@ -5,6 +5,7 @@ import androidx.annotation.NonNull;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import com.yunbao.common.CommonAppConfig; import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.WordUtil;
public class LiveUserMailBoxModel extends BaseModel { public class LiveUserMailBoxModel extends BaseModel {
@SerializedName("id") @SerializedName("id")
@ -127,7 +128,7 @@ public class LiveUserMailBoxModel extends BaseModel {
url += "?"; url += "?";
} }
url += "uid=" + CommonAppConfig.getInstance().getUid() + "&token=" url += "uid=" + CommonAppConfig.getInstance().getUid() + "&token="
+ CommonAppConfig.getInstance().getToken(); + CommonAppConfig.getInstance().getToken()+ "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
} }
return url; return url;
} }

View File

@ -0,0 +1,169 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.StringUtil;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class OpenAdModel extends BaseModel {
public static final int TYPE_HOME = 1;//主页
public static final int TYPE_LIVE = 2;//直播间
public static final int TYPE_LIVE_DELAY = 3;//直播间延迟
public static final int MODEL_SQUARE = 1;//正方形
public static final int MODEL_RECTANGLE = 2;//长方形
public static final int MODEL_BOTTOM = 3;//底部
@SerializedName("id")
private int id;
@SerializedName("popup_location")
private int type = TYPE_HOME;
@SerializedName("activity_url")
private String url;
@SerializedName("image_url")
private String imageUrl;
@SerializedName("display_time")
private int showTime; //持续展示时间
@SerializedName("delay_show_time")
private int delayShowTime;//延迟展示时间
@SerializedName("popup_model")
private int model = MODEL_SQUARE;
@SerializedName("start_show_time")
private String startTime;//活动开始时间
@SerializedName("end_show_time")
private String endTime;//活动结束时间
@SerializedName("popup_permission")
private int permission;
public OpenAdModel() {
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getUrl() {
if (!url.startsWith("http://") || !url.startsWith("https://")) {
url = CommonAppConfig.HOST + url;
}
return url + "?t=" + System.currentTimeMillis() / 1000;
}
public void setUrl(String url) {
this.url = url;
}
public int getShowTime() {
return showTime * 1000;
}
public void setShowTime(int showTime) {
this.showTime = showTime;
}
public int getDelayShowTime() {
return delayShowTime * 1000;
}
public void setDelayShowTime(int delayShowTime) {
this.delayShowTime = delayShowTime;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public int getModel() {
return model;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public void setModel(int model) {
this.model = model;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getPermission() {
return permission;
}
public void setPermission(int permission) {
this.permission = permission;
}
public boolean isInTime() {
if (StringUtil.isEmpty(startTime, endTime)) {
return true;
}
Date startTime = null;
Date endTime = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
try {
startTime = sdf.parse(this.startTime);
endTime = sdf.parse(this.endTime);
} catch (ParseException e) {
e.printStackTrace();
}
long time = System.currentTimeMillis();
return startTime.getTime() <= time && time <= endTime.getTime();
}
public boolean userIsPermission(boolean isGuard) {
if (permission == 4 && !isGuard) {//守护不可见
return false;
}
return true;
}
@Override
public String toString() {
return "OpenAdModel{" +
"id=" + id +
", type=" + type +
", url='" + url + '\'' +
", imageUrl='" + imageUrl + '\'' +
", showTime=" + showTime +
", delayShowTime=" + delayShowTime +
", model=" + model +
", startTime='" + startTime + '\'' +
", endTime='" + endTime + '\'' +
", permission='" + permission + '\'' +
'}';
}
}

View File

@ -23,6 +23,8 @@ public class PkRankBean extends BaseModel {
public String clickUrl; public String clickUrl;
@SerializedName("vs_img") @SerializedName("vs_img")
public String vsImgUrl; public String vsImgUrl;
@SerializedName("new_rank_name_en")
public String newRankNameEn;
public int getId() { public int getId() {
return id; return id;
@ -94,6 +96,14 @@ public class PkRankBean extends BaseModel {
this.vsImgUrl = vsImgUrl; this.vsImgUrl = vsImgUrl;
} }
public String getNewRankNameEn() {
return newRankNameEn;
}
public void setNewRankNameEn(String newRankNameEn) {
this.newRankNameEn = newRankNameEn;
}
@Override @Override
public String toString() { public String toString() {
return "PkRankBean{" + return "PkRankBean{" +
@ -105,6 +115,7 @@ public class PkRankBean extends BaseModel {
", pkTopImgUrl='" + pkTopImgUrl + '\'' + ", pkTopImgUrl='" + pkTopImgUrl + '\'' +
", clickUrl='" + clickUrl + '\'' + ", clickUrl='" + clickUrl + '\'' +
", vsImgUrl='" + vsImgUrl + '\'' + ", vsImgUrl='" + vsImgUrl + '\'' +
", newRankNameEn='" + newRankNameEn + '\'' +
'}'; '}';
} }
} }

View File

@ -19,6 +19,8 @@ public class RedPacketInfoModel extends BaseModel {
private String redPacketMoney; private String redPacketMoney;
@SerializedName("red_packet_quantity") @SerializedName("red_packet_quantity")
private String redPacketQuantity; private String redPacketQuantity;
@SerializedName("is_fans")
private String isFans;
@SerializedName("conditions") @SerializedName("conditions")
private String conditions; private String conditions;
@SerializedName("create_time") @SerializedName("create_time")
@ -270,4 +272,12 @@ public class RedPacketInfoModel extends BaseModel {
this.userGoldenBean = userGoldenBean; this.userGoldenBean = userGoldenBean;
return this; return this;
} }
public boolean getIsFans() {
return isFans.equals("1");
}
public void setIsFans(String isFans) {
this.isFans = isFans;
}
} }

View File

@ -0,0 +1,186 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class SudGameDateModel extends BaseModel{
@SerializedName("room_holder_id")
private String roomHolderId;
@SerializedName("sex")
private String sex;
@SerializedName("golden_bean_number")
private String goldenBeanNumber;
@SerializedName("room_holder_type")
private String roomHolderType;
@SerializedName("sud_game_id")
private String sudGameId;
@SerializedName("room_status")
private String roomStatus;
@SerializedName("sud_game_name")
private String sudGameName;
@SerializedName("sud_game_name_en")
private String sud_game_name_en;
@SerializedName("room_name")
private String roomName;
@SerializedName("player_total")
private String playerTotal;
@SerializedName("sud_game_icon")
private String sudGameIcon;
@SerializedName("room_holder_name")
private String roomHolderName;
@SerializedName("sud_game_room_id")
private String sudGameRoomId;
@SerializedName("ob_total")
private String obTotal;
@SerializedName("avatar")
private String avatar;
@SerializedName("liveuid")
private String liveuid;
public String getRoomHolderId() {
return roomHolderId;
}
public String getSud_game_name_en() {
return sud_game_name_en;
}
public SudGameDateModel setSud_game_name_en(String sud_game_name_en) {
this.sud_game_name_en = sud_game_name_en;
return this;
}
public SudGameDateModel setRoomHolderId(String roomHolderId) {
this.roomHolderId = roomHolderId;
return this;
}
public String getSex() {
return sex;
}
public SudGameDateModel setSex(String sex) {
this.sex = sex;
return this;
}
public String getGoldenBeanNumber() {
return goldenBeanNumber;
}
public SudGameDateModel setGoldenBeanNumber(String goldenBeanNumber) {
this.goldenBeanNumber = goldenBeanNumber;
return this;
}
public String getRoomHolderType() {
return roomHolderType;
}
public SudGameDateModel setRoomHolderType(String roomHolderType) {
this.roomHolderType = roomHolderType;
return this;
}
public String getSudGameId() {
return sudGameId;
}
public SudGameDateModel setSudGameId(String sudGameId) {
this.sudGameId = sudGameId;
return this;
}
public String getRoomStatus() {
return roomStatus;
}
public SudGameDateModel setRoomStatus(String roomStatus) {
this.roomStatus = roomStatus;
return this;
}
public String getSudGameName() {
return sudGameName;
}
public SudGameDateModel setSudGameName(String sudGameName) {
this.sudGameName = sudGameName;
return this;
}
public String getRoomName() {
return roomName;
}
public SudGameDateModel setRoomName(String roomName) {
this.roomName = roomName;
return this;
}
public String getPlayerTotal() {
return playerTotal;
}
public SudGameDateModel setPlayerTotal(String playerTotal) {
this.playerTotal = playerTotal;
return this;
}
public String getSudGameIcon() {
return sudGameIcon;
}
public SudGameDateModel setSudGameIcon(String sudGameIcon) {
this.sudGameIcon = sudGameIcon;
return this;
}
public String getRoomHolderName() {
return roomHolderName;
}
public SudGameDateModel setRoomHolderName(String roomHolderName) {
this.roomHolderName = roomHolderName;
return this;
}
public String getSudGameRoomId() {
return sudGameRoomId;
}
public SudGameDateModel setSudGameRoomId(String sudGameRoomId) {
this.sudGameRoomId = sudGameRoomId;
return this;
}
public String getObTotal() {
return obTotal;
}
public SudGameDateModel setObTotal(String obTotal) {
this.obTotal = obTotal;
return this;
}
public String getAvatar() {
return avatar;
}
public SudGameDateModel setAvatar(String avatar) {
this.avatar = avatar;
return this;
}
public String getLiveuid() {
return liveuid;
}
public SudGameDateModel setLiveuid(String liveuid) {
this.liveuid = liveuid;
return this;
}
}

View File

@ -0,0 +1,212 @@
package com.yunbao.common.bean;
import android.text.TextUtils;
import com.google.gson.annotations.SerializedName;
import java.util.ArrayList;
import java.util.List;
public class SudRoomListModel extends BaseModel {
@SerializedName("id")
private String id;
@SerializedName("room_holder_id")
private String roomHolderId;
@SerializedName("room_name")
private String roomName;
@SerializedName("room_holder_type")
private String roomHolderType;
@SerializedName("sud_game_id")
private String sudGameId;
@SerializedName("golden_bean_number")
private String goldenBeanNumber;
@SerializedName("room_status")
private String roomStatus;
@SerializedName("sud_game_room_id")
private String sudGameRoomId;
@SerializedName("room_holder_name")
private String roomHolderName;
@SerializedName("avatar")
private String avatar;
@SerializedName("sud_game_name")
private String sudGameName;
@SerializedName("player_total")
private String playerTotal;
@SerializedName("ob_total")
private String obTotal;
@SerializedName("liveuid")
private String liveUid;
@SerializedName("sex")
private String sex;
@SerializedName("sud_game_icon")
private String sudgameicon;
public String getSudgameicon() {
return sudgameicon;
}
public SudRoomListModel setSudgameicon(String sudgameicon) {
this.sudgameicon = sudgameicon;
return this;
}
public String getLiveUid() {
return liveUid;
}
public SudRoomListModel setLiveUid(String liveUid) {
this.liveUid = liveUid;
return this;
}
public String getSex() {
return sex;
}
public SudRoomListModel setSex(String sex) {
this.sex = sex;
return this;
}
@SerializedName("player_object")
private List<playerObject> playerObjects = new ArrayList<>();
public String getId() {
return id;
}
public SudRoomListModel setId(String id) {
this.id = id;
return this;
}
public String getRoomHolderId() {
return roomHolderId;
}
public SudRoomListModel setRoomHolderId(String roomHolderId) {
this.roomHolderId = roomHolderId;
return this;
}
public String getRoomName() {
return roomName;
}
public SudRoomListModel setRoomName(String roomName) {
this.roomName = roomName;
return this;
}
public String getRoomHolderType() {
return roomHolderType;
}
public SudRoomListModel setRoomHolderType(String roomHolderType) {
this.roomHolderType = roomHolderType;
return this;
}
public String getSudGameId() {
return sudGameId;
}
public SudRoomListModel setSudGameId(String sudGameId) {
this.sudGameId = sudGameId;
return this;
}
public String getGoldenBeanNumber() {
return goldenBeanNumber;
}
public SudRoomListModel setGoldenBeanNumber(String goldenBeanNumber) {
this.goldenBeanNumber = goldenBeanNumber;
return this;
}
public String getRoomStatus() {
return roomStatus;
}
public SudRoomListModel setRoomStatus(String roomStatus) {
this.roomStatus = roomStatus;
return this;
}
public String getSudGameRoomId() {
return sudGameRoomId;
}
public SudRoomListModel setSudGameRoomId(String sudGameRoomId) {
this.sudGameRoomId = sudGameRoomId;
return this;
}
public String getRoomHolderName() {
return roomHolderName;
}
public SudRoomListModel setRoomHolderName(String roomHolderName) {
this.roomHolderName = roomHolderName;
return this;
}
public String getAvatar() {
return avatar;
}
public SudRoomListModel setAvatar(String avatar) {
this.avatar = avatar;
return this;
}
public String getSudGameName() {
return sudGameName;
}
public SudRoomListModel setSudGameName(String sudGameName) {
this.sudGameName = sudGameName;
return this;
}
public String getPlayerTotal() {
return playerTotal;
}
public SudRoomListModel setPlayerTotal(String playerTotal) {
this.playerTotal = playerTotal;
return this;
}
public String getObTotal() {
return obTotal;
}
public SudRoomListModel setObTotal(String obTotal) {
this.obTotal = obTotal;
return this;
}
public List<playerObject> getPlayerObjects() {
return playerObjects;
}
public SudRoomListModel setPlayerObjects(List<playerObject> playerObjects) {
this.playerObjects = playerObjects;
return this;
}
public String getTotal() {
if (TextUtils.isEmpty(obTotal)&&TextUtils.isEmpty(playerTotal)){
return "0";
}else {
int obT = Integer.parseInt(obTotal);
int playerO = Integer.parseInt(playerTotal);
return String.valueOf(obT + playerO);
}
}
}

View File

@ -0,0 +1,28 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class SudgameCodeModel extends BaseModel {
@SerializedName("code")
private String code;
@SerializedName("expireDate")
private long expireDate;
public String getCode() {
return code;
}
public SudgameCodeModel setCode(String code) {
this.code = code;
return this;
}
public long getExpireDate() {
return expireDate;
}
public SudgameCodeModel setExpireDate(long expireDate) {
this.expireDate = expireDate;
return this;
}
}

View File

@ -71,6 +71,38 @@ public class UserBean implements Parcelable {
//粉丝团等级 //粉丝团等级
private int fansLevel; private int fansLevel;
//粉丝团进场皮肤 //粉丝团进场皮肤
protected int typeMic;
private boolean isMicList = false;
private boolean isRequest = false;
public boolean isRequest() {
return isRequest;
}
public UserBean setRequest(boolean request) {
isRequest = request;
return this;
}
public boolean isMicList() {
return isMicList;
}
public UserBean setMicList(boolean micList) {
isMicList = micList;
return this;
}
public int getTypeMic() {
return typeMic;
}
public UserBean setTypeMic(int typeMic) {
this.typeMic = typeMic;
return this;
}
private String fansEnterRoomUrl; private String fansEnterRoomUrl;
public int getUserInfoComplete() { public int getUserInfoComplete() {

View File

@ -0,0 +1,38 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class playerObject extends BaseModel {
@SerializedName("avatar")
private String avatar;
@SerializedName("id")
private String id;
public boolean isChange = false;
public boolean isChange() {
return isChange;
}
public playerObject setChange(boolean change) {
isChange = change;
return this;
}
public String getAvatar() {
return avatar;
}
public playerObject setAvatar(String avatar) {
this.avatar = avatar;
return this;
}
public String getId() {
return id;
}
public playerObject setId(String id) {
this.id = id;
return this;
}
}

View File

@ -17,7 +17,6 @@ import androidx.recyclerview.widget.SimpleItemAnimator;
import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter; import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.scwang.smartrefresh.layout.header.ClassicsHeader;
import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import com.yunbao.common.R; import com.yunbao.common.R;
@ -188,7 +187,7 @@ public class CommonRefreshView extends FrameLayout implements View.OnClickListen
if (mRecyclerView != null) { if (mRecyclerView != null) {
RecyclerView.Adapter adapter = mRecyclerView.getAdapter(); RecyclerView.Adapter adapter = mRecyclerView.getAdapter();
if (adapter != null && adapter.getItemCount() > 0) { if (adapter != null && adapter.getItemCount() > 0) {
ToastUtil.show(R.string.load_failure); ToastUtil.show(mContext.getString(R.string.load_failure));
} else { } else {
mLoadFailureView.setVisibility(View.VISIBLE); mLoadFailureView.setVisibility(View.VISIBLE);
} }
@ -196,7 +195,7 @@ public class CommonRefreshView extends FrameLayout implements View.OnClickListen
mLoadFailureView.setVisibility(View.VISIBLE); mLoadFailureView.setVisibility(View.VISIBLE);
} }
} else { } else {
ToastUtil.show(R.string.load_failure); ToastUtil.show(mContext.getString(R.string.load_failure));
} }
} }
if (mDataHelper != null) { if (mDataHelper != null) {

View File

@ -0,0 +1,39 @@
package com.yunbao.common.dialog;
import android.content.Context;
import androidx.annotation.NonNull;
import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.impl.FullScreenPopupView;
/**
* 居中弹窗
*/
public abstract class AbsDialogFullScreenPopupWindow extends FullScreenPopupView {
public final Context mContext;
public AbsDialogFullScreenPopupWindow(@NonNull Context context) {
super(context);
this.mContext = context;
}
/**
* <a href="https://github.com/li-xiaojun/XPopup/wiki/5.-%E5%B8%B8%E7%94%A8%E8%AE%BE%E7%BD%AE">参考配置</a>
*/
public abstract void buildDialog(XPopup.Builder builder);
public abstract int bindLayoutId();
@Override
protected int getImplLayoutId() {
return bindLayoutId();
}
public void showDialog() {
XPopup.Builder builder = new XPopup.Builder(mContext);
builder.isDestroyOnDismiss(true);
builder.enableDrag(false);
buildDialog(builder);
builder.asCustom(this).show();
}
}

View File

@ -0,0 +1,239 @@
package com.yunbao.common.dialog;
import static androidx.core.content.ContextCompat.getSystemService;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.text.TextUtils;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.google.gson.Gson;
import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.core.BottomPopupView;
import com.lxj.xpopup.enums.PopupPosition;
import com.yunbao.common.R;
import com.yunbao.common.activity.SudGameActivity;
import com.yunbao.common.bean.CreateSudRoomModel;
import com.yunbao.common.bean.CustomSidebarChildModel;
import com.yunbao.common.event.CreateSudGameEvent;
import com.yunbao.common.event.LiveSudGamePopupShowOrHideEvent;
import com.yunbao.common.event.SudGameListDissMissEvent;
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.Bus;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.LiveSudGamePopup;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class CreateSudGamePopup extends BottomPopupView {
private List<CustomSidebarChildModel> customSidebarChildModels = new ArrayList<>();
private TextView createGameType;
private EditText roomName, gameSill;
private long interactionID = 0;
private String id;
private boolean isHomeView;
private boolean isHome = false;
public CreateSudGamePopup(@NonNull Context context, List<CustomSidebarChildModel> child, boolean isHome) {
super(context);
customSidebarChildModels = child;
this.isHome = isHome;
}
public CreateSudGamePopup setHomeView(boolean homeView) {
isHomeView = homeView;
return this;
}
// 返回自定义弹窗的布局
@Override
protected int getImplLayoutId() {
if (isHomeView) {
return R.layout.dialog_home_create_sud_game;
}
return R.layout.dialog_create_sud_game;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
Bus.getOn(this);
initView();
initDate();
}
private void initDate() {
}
private void initView() {
createGameType = findViewById(R.id.create_game_type);
roomName = findViewById(R.id.room_name);
gameSill = findViewById(R.id.game_sill);
ViewClicksAntiShake.clicksAntiShake(createGameType, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
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(createGameType);
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(getContext(), 4, customSidebarChildModels, interactionID))
.show();
}
}, 500);
} else {
XPopup.Builder builder = new XPopup.Builder(getContext()).atView(createGameType);
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(getContext(), 4, customSidebarChildModels, interactionID))
.show();
}
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.room_back),
new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dismiss();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.create_room), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
String sill = gameSill.getText().toString();
String name = roomName.getText().toString();
if (IMLoginManager.get(getContext()).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
if (name.length() > 10) {
ToastUtil.show("房間名长度为[1-10]");
return;
}
}
if (IMLoginManager.get(getContext()).getLocaleLanguage() != Locale.SIMPLIFIED_CHINESE) {
if (name.length() > 15) {
ToastUtil.show("Room name length is [1-15]");
return;
}
}
if (TextUtils.isEmpty(name)) {
if (IMLoginManager.get(getContext()).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
ToastUtil.show("房间名不能为空");
} else {
ToastUtil.show("The room name cannot be empty");
}
return;
}
if (TextUtils.isEmpty(id)) {
if (IMLoginManager.get(getContext()).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
ToastUtil.show("还未选择游戏");
} else {
ToastUtil.show("No game has been selected");
}
return;
}
if (TextUtils.isEmpty(sill)) {
if (IMLoginManager.get(getContext()).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
ToastUtil.show("数量区间为100--5W");
} else {
ToastUtil.show("The quantity range is 100 to 5 W");
}
return;
}
if (sill.length() > 6 ){
if (IMLoginManager.get(getContext()).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
ToastUtil.show("数量区间为100--5W");
} else {
ToastUtil.show("The quantity range is 100 to 5 W");
}
return;
}else {
int sillNumber = Integer.parseInt(sill);
if (sillNumber < 100 || sillNumber > 50000) {
if (IMLoginManager.get(getContext()).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
ToastUtil.show("数量区间为100--5W");
} else {
ToastUtil.show("The quantity range is 100 to 5 W");
}
return;
}
if (sillNumber%10!=0){
if (IMLoginManager.get(getContext()).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
ToastUtil.show("金豆數量必須為10的倍數");
} else {
ToastUtil.show("The number of golden beans must be a multiple of 10");
}
return;
}
}
LiveNetManager.get(getContext())
.createSudRoom(name, sill, id, new HttpCallback<CreateSudRoomModel>() {
@Override
public void onSuccess(CreateSudRoomModel data) {
if (isHome) {
dialog.dismiss();
Intent intent = new Intent(getContext(), SudGameActivity.class);
intent.putExtra("CreateSudRoom", new Gson().toJson(data));
getContext().startActivity(intent);
} else {
Bus.get().post(new LiveSudGamePopupShowOrHideEvent().setType(0).setCreateSudRoomModel(data));
dialog.dismiss();
Bus.get().post(new SudGameListDissMissEvent());
}
}
@Override
public void onError(String error) {
ToastUtil.show(error);
}
});
}
});
}
@Override
protected void onDismiss() {
Bus.getOff(this);
super.onDismiss();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSudGameListEvent(CreateSudGameEvent event) {
interactionID = event.getInteractionID();
createGameType.setText(event.getTitle());
id = event.getId();
}
}

View File

@ -0,0 +1,87 @@
package com.yunbao.common.dialog;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.lxj.xpopup.core.BottomPopupView;
import com.yunbao.common.R;
import com.yunbao.common.adapter.LiveNewRolerPopupAdapter;
import com.yunbao.common.bean.CustomSidebarInfoModel;
import com.yunbao.common.event.LiveNewRoleEvent;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
public class LiveNewRolePopup extends BottomPopupView {
private boolean showRed = false;
public LiveNewRolePopup(@NonNull Context context, boolean showRed) {
super(context);
mContext = context;
this.showRed = showRed;
}
private RecyclerView drawerList;
private LiveNewRolerPopupAdapter adapter;
private Context mContext;
// 返回自定义弹窗的布局
@Override
protected int getImplLayoutId() {
return R.layout.dialog_live_new_role;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
Bus.getOn(this);
initView();
initDate();
}
private void initDate() {
LiveNetManager.get(mContext)
.getCustomSidebarInfo("1", new com.yunbao.common.http.base.HttpCallback<List<CustomSidebarInfoModel>>() {
@Override
public void onSuccess(List<CustomSidebarInfoModel> data) {
adapter.updateData(data);
}
@Override
public void onError(String error) {
ToastUtil.show(WordUtil.isNewZh()?"抱歉!出錯了!":"i \\'m sorry! An error occurred");
}
});
}
private void initView() {
drawerList = findViewById(R.id.drawerList);
adapter = new LiveNewRolerPopupAdapter(mContext, showRed);
drawerList.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
drawerList.setAdapter(adapter);
}
@Override
protected void onDismiss() {
Bus.getOff(this);
super.onDismiss();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLiveNewRoleEvent(LiveNewRoleEvent event) {
dismiss();
}
}

View File

@ -0,0 +1,70 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import com.lxj.xpopup.XPopup;
import com.yunbao.common.R;
import com.yunbao.common.activity.WebViewActivity;
import com.yunbao.common.bean.OpenAdModel;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.interfaces.OnItemClickListener;
public class OpenAdBottomDialogPopup extends AbsDialogPopupWindow {
private ImageView mImageView;
private ImageView mClose;
private OpenAdModel model;
private OnItemClickListener<OpenAdModel> mListener;
public OpenAdBottomDialogPopup(@NonNull Context context, OpenAdModel model) {
super(context);
this.model = model;
}
@Override
public void buildDialog(XPopup.Builder builder) {
}
@Override
public int bindLayoutId() {
return R.layout.dialog_open_bottom_ad;
}
@Override
public void dismiss() {
super.dismiss();
if (mListener != null) {
mListener.onItemClick(model, 0);
mListener = null;
}
}
public OpenAdBottomDialogPopup setListener(OnItemClickListener<OpenAdModel> mListener) {
this.mListener = mListener;
return this;
}
@Override
protected void onCreate() {
super.onCreate();
mImageView = findViewById(R.id.img);
mClose = findViewById(R.id.close);
mImageView.setOnClickListener(v -> {
WebViewActivity.forward(mContext, model.getUrl(), model.getType() != OpenAdModel.TYPE_HOME);
if (mListener != null) {
mListener.onItemClick(model, 1);
mListener = null;
}
dismiss();
});
mClose.setOnClickListener(v -> dismiss());
ImgLoader.display(mContext, model.getImageUrl(), mImageView);
if (model.getShowTime() > 0) {
mClose.postDelayed(this::dismiss, model.getShowTime());
}
}
}

View File

@ -0,0 +1,82 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.lxj.xpopup.XPopup;
import com.yunbao.common.R;
import com.yunbao.common.activity.WebViewActivity;
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.ScreenDimenUtil;
public class OpenAdCenterDialogPopup extends AbsDialogFullScreenPopupWindow {
private ImageView mImageView;
private ImageView mClose;
private OpenAdModel model;
private OnItemClickListener<OpenAdModel> mListener;
public OpenAdCenterDialogPopup(@NonNull Context context, OpenAdModel model) {
super(context);
this.model = model;
}
public OpenAdCenterDialogPopup setListener(OnItemClickListener<OpenAdModel> mListener) {
this.mListener = mListener;
return this;
}
@Override
public void buildDialog(XPopup.Builder builder) {
}
@Override
public int bindLayoutId() {
return R.layout.dialog_open_center_ad;
}
@Override
public void dismiss() {
super.dismiss();
if (mListener != null) {
mListener.onItemClick(model, 0);
mListener = null;
}
}
@Override
protected void onCreate() {
super.onCreate();
mImageView = findViewById(R.id.img);
mClose = findViewById(R.id.close);
findViewById(R.id.layout).setOnClickListener(v -> dismiss());
mImageView.setOnClickListener(v -> {
WebViewActivity.forward(mContext, model.getUrl(), model.getType() != OpenAdModel.TYPE_HOME);
if (mListener != null) {
mListener.onItemClick(model, 1);
mListener = null;
}
dismiss();
});
mClose.setOnClickListener(v -> dismiss());
ImgLoader.display(mContext, model.getImageUrl(), mImageView);
int width = ScreenDimenUtil.getInstance().getScreenWdith() - DpUtil.dp2px(40);
int height = (int) (width * 1.4);
if (model.getModel() == OpenAdModel.MODEL_SQUARE) {
height = width;
}
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) mImageView.getLayoutParams();
params.width = width;
params.height = height;
mImageView.setLayoutParams(params);
if (model.getShowTime() > 0) {
mClose.postDelayed(this::dismiss, model.getShowTime());
}
}
}

View File

@ -0,0 +1,343 @@
package com.yunbao.common.dialog;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import android.view.animation.LinearInterpolator;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.google.gson.Gson;
import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.core.BottomPopupView;
import com.lxj.xpopup.enums.PopupPosition;
import com.yunbao.common.R;
import com.yunbao.common.adapter.RefreshAdapter;
import com.yunbao.common.adapter.SudGameListAdapter;
import com.yunbao.common.bean.CreateSudRoomModel;
import com.yunbao.common.bean.CustomSidebarChildModel;
import com.yunbao.common.bean.SudRoomListModel;
import com.yunbao.common.custom.CommonRefreshView;
import com.yunbao.common.event.LiveSudGamePopupShowOrHideEvent;
import com.yunbao.common.event.RoomHolderTypeEvent;
import com.yunbao.common.event.SudGameListDissMissEvent;
import com.yunbao.common.event.SudGameListEvent;
import com.yunbao.common.event.SudGameListRefreshEvent;
import com.yunbao.common.event.SudGameListSillEvent;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.LiveHttpUtil;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.LiveSudGamePopup;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class SudGameListPopup extends BottomPopupView {
private long interactionID = 0;
private List<CustomSidebarChildModel> customSidebarChildModels = new ArrayList<>();
private ImageView roomGameArrow, roomSillArrow, houseOwnerArrow;
private TextView gameTitle, sillTitle, houseOwnerTitle;
private String id = "0", mLiveUid;
private int page = 0;
private String mSill = "0,0", mSillName, roomHolderType = "0", roomHolderTypeName;
private CommonRefreshView mRefreshView;
private SudGameListAdapter sudGameListAdapter;
public SudGameListPopup(@NonNull Context context, long interactionID, List<CustomSidebarChildModel> child, String liveUid) {
super(context);
this.interactionID = interactionID;
customSidebarChildModels = child;
mLiveUid = liveUid;
}
// 返回自定义弹窗的布局
@Override
protected int getImplLayoutId() {
return R.layout.dialog_sud_game_list;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
Bus.getOn(this);
initView();
initDate();
}
private void initDate() {
}
private void initView() {
roomGameArrow = findViewById(R.id.room_game_arrow);
roomSillArrow = findViewById(R.id.room_sill_arrow);
houseOwnerArrow = findViewById(R.id.house_owner_arrow);
gameTitle = findViewById(R.id.game_title);
sillTitle = findViewById(R.id.room_sill_text);
houseOwnerTitle = findViewById(R.id.house_owner_text);
mRefreshView = findViewById(R.id.refreshView);
mRefreshView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
sudGameListAdapter = new SudGameListAdapter(getContext(), false);
mRefreshView.setLoadMoreEnable(true);
mRefreshView.setRecyclerViewAdapter(sudGameListAdapter);
for (CustomSidebarChildModel model : customSidebarChildModels) {
if (TextUtils.equals(String.valueOf(interactionID), model.getSrc())) {
gameTitle.setText(model.getTitle().substring(0, 2));
id = model.getId();
}
}
mRefreshView.setDataHelper(new CommonRefreshView.DataHelper<SudRoomListModel>() {
@Override
public RefreshAdapter<SudRoomListModel> getAdapter() {
return null;
}
@Override
public void loadData(int p, HttpCallback callback) {
page = p;
LiveHttpUtil.getRoomList(id, mSill, roomHolderType, mLiveUid, p - 1, callback);
}
@Override
public List<SudRoomListModel> processData(String[] info) {
if (info.length > 0) {
List<SudRoomListModel> sudRoomListModels = new ArrayList<>();
for (String json : info) {
SudRoomListModel model = new Gson().fromJson(json, SudRoomListModel.class);
sudRoomListModels.add(model);
}
return sudRoomListModels;
} else {
return new ArrayList<>();
}
}
@Override
public void onRefreshSuccess(List<SudRoomListModel> list, int listCount) {
Log.i("onRefreshSuccess", listCount + "");
}
@Override
public void onRefreshFailure() {
}
@Override
public void onLoadMoreSuccess(List<SudRoomListModel> loadItemList, int loadItemCount) {
sudGameListAdapter.insertList(loadItemList);
}
@Override
public void onLoadMoreFailure() {
}
});
mRefreshView.initData();
mRefreshView.setEmptyLayoutId(R.layout.sud_no_data1);
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.random_start), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
LiveNetManager.get(getContext())
.randomRoom(id, mSill, roomHolderType,new com.yunbao.common.http.base.HttpCallback<CreateSudRoomModel>() {
@Override
public void onSuccess(CreateSudRoomModel data) {
if (data != null) {
Bus.get().post(new LiveSudGamePopupShowOrHideEvent().setType(0).setCreateSudRoomModel(data));
dialog.dismiss();
}else {
if (IMLoginManager.get(getContext()).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
ToastUtil.show("当前没有可加入的房间");
} else {
ToastUtil.show("There are currently no rooms to join");
}
}
}
@Override
public void onError(String error) {
if (IMLoginManager.get(getContext()).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
ToastUtil.show("当前没有可加入的房间");
} else {
ToastUtil.show("There are currently no rooms to join");
}
}
});
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.search), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
new SudGameSearchDialogPopup(getContext(), false).showDialog();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.interactive_game_room_game), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
ObjectAnimator animator = ObjectAnimator.ofFloat(roomGameArrow, "rotation", 0f, 90f);
animator.setDuration(500);
animator.setInterpolator(new LinearInterpolator());
animator.start();
XPopup.Builder builder = new XPopup.Builder(getContext()).atView(findViewById(R.id.interactive_game_room_game));
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(getContext(), 0, customSidebarChildModels, interactionID))
.show();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.room_sill), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
ObjectAnimator animator = ObjectAnimator.ofFloat(roomSillArrow, "rotation", 0f, 90f);
animator.setDuration(500);
animator.setInterpolator(new LinearInterpolator());
animator.start();
XPopup.Builder builder = new XPopup.Builder(getContext()).atView(findViewById(R.id.room_sill));
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(getContext(), 1, mSillName))
.show();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.house_owner), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
ObjectAnimator animator = ObjectAnimator.ofFloat(houseOwnerArrow, "rotation", 0f, 90f);
animator.setDuration(500);
animator.setInterpolator(new LinearInterpolator());
animator.start();
XPopup.Builder builder = new XPopup.Builder(getContext()).atView(findViewById(R.id.house_owner));
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(getContext(), 2, roomHolderTypeName))
.show();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.interactive_game_add), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
new XPopup.Builder(getContext())
.enableDrag(false)
.moveUpToKeyboard(true)
.asCustom(new CreateSudGamePopup(getContext(), customSidebarChildModels, false))
.show();
}
});
}
@Override
public void dismiss() {
Bus.getOff(this);
super.dismiss();
}
@Override
protected void onDismiss() {
super.onDismiss();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSudGameListEvent(SudGameListEvent event) {
interactionID = event.getInteractionID();
if (IMLoginManager.get(getContext()).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
gameTitle.setText(event.getTitle().substring(0, 2));
} else {
if (event.getTitle().contains("All")) {
gameTitle.setText("All");
} else {
if ((event.getTitle().length() > 6)) {
gameTitle.setText(event.getTitle().substring(0, 5));
} else {
gameTitle.setText(event.getTitle());
}
}
}
id = event.getId();
ObjectAnimator animator = ObjectAnimator.ofFloat(roomGameArrow, "rotation", 90f, 0f);
animator.setDuration(500);
animator.setInterpolator(new LinearInterpolator());
animator.start();
mRefreshView.initData();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSudGameListSillEvent(SudGameListSillEvent event) {
mSill = event.getSill();
mSillName = event.getSillName();
if (TextUtils.equals("0,0", mSill)) {
sillTitle.setText(mSillName);
} else {
sillTitle.setText(mSillName.substring(0, mSillName.length() - 2));
}
ObjectAnimator animator = ObjectAnimator.ofFloat(roomSillArrow, "rotation", 90f, 0f);
animator.setDuration(500);
animator.setInterpolator(new LinearInterpolator());
animator.start();
mRefreshView.initData();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRoomHolderTypeEvent(RoomHolderTypeEvent event) {
roomHolderType = event.getRoomHolderType();
roomHolderTypeName = event.getRoomHolderTypeName();
houseOwnerTitle.setText(roomHolderTypeName);
ObjectAnimator animator = ObjectAnimator.ofFloat(houseOwnerArrow, "rotation", 90f, 0f);
animator.setDuration(500);
animator.setInterpolator(new LinearInterpolator());
animator.start();
mRefreshView.initData();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSudGameListDissMissEvent(SudGameListDissMissEvent event) {
dialog.dismiss();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSudGameListRefreshEvent(SudGameListRefreshEvent event) {
mRefreshView.initData();
}
}

View File

@ -0,0 +1,180 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.text.TextUtils;
import android.widget.PopupMenu;
import android.widget.TextView;
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.SudTitleSelectAdapter;
import com.yunbao.common.bean.CustomSidebarChildModel;
import com.yunbao.common.event.CreateSudGameEvent;
import com.yunbao.common.event.RoomHolderTypeEvent;
import com.yunbao.common.event.SudGameListEvent;
import com.yunbao.common.event.SudGameListSillEvent;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SudGameListSelectPopup extends AttachPopupView {
private int mType;
private List<CustomSidebarChildModel> customSidebarChildModels = new ArrayList<>();
private List<String> selectString = new ArrayList<>();
private Map<String, String> selectSill = new HashMap<>();
private TextView topSelect;
private RecyclerView sudTitleSelect;
private SudTitleSelectAdapter sudTitleSelectAdapter;
private long interactionID = 0;
private DialogInterface.OnDismissListener onDismissListener;
private String mSill;
public SudGameListSelectPopup(@NonNull Context context, int type, List<CustomSidebarChildModel> child, long interactionID) {
super(context);
customSidebarChildModels = child;
mType = type;
this.interactionID = interactionID;
}
public SudGameListSelectPopup setOnDismissListener(DialogInterface.OnDismissListener onDismissListener) {
this.onDismissListener = onDismissListener;
return this;
}
public SudGameListSelectPopup(@NonNull Context context, int mType, String sill) {
super(context);
this.mType = mType;
mSill = sill;
}
protected int getImplLayoutId() {
return R.layout.view_sud_game_slelect;
}
@Override
protected void onCreate() {
topSelect = findViewById(R.id.top_select);
sudTitleSelect = findViewById(R.id.sud_title_select);
int index = -1;
if (mType == 0 || mType == 4) {
topSelect.setText(getContext().getString(R.string.interactive_game_room_all));
for (int i = 0; i < customSidebarChildModels.size(); i++) {
selectString.add(customSidebarChildModels.get(i).getTitle());
if (TextUtils.equals(String.valueOf(interactionID), customSidebarChildModels.get(i).getSrc())) {
index = i;
}
}
sudTitleSelectAdapter = new SudTitleSelectAdapter(selectString, index, mType);
sudTitleSelect.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
sudTitleSelect.setAdapter(sudTitleSelectAdapter);
if (interactionID == 0) {
topSelect.setSelected(true);
}
if (mType == 4) {
topSelect.setVisibility(GONE);
}
sudTitleSelectAdapter.setSudTitleSelectCallBack(new SudTitleSelectAdapter.SudTitleSelectCallBack() {
@Override
public void onSudTitleSelectCallBack(int index) {
if (mType == 0) {
Bus.get().post(new SudGameListEvent()
.setInteractionID(Long.parseLong(customSidebarChildModels.get(index).getSrc()))
.setId(customSidebarChildModels.get(index).getId())
.setTitle(customSidebarChildModels.get(index).getTitle()));
} else {
Bus.get().post(new CreateSudGameEvent()
.setInteractionID(Long.parseLong(customSidebarChildModels.get(index).getSrc()))
.setId(customSidebarChildModels.get(index).getId())
.setTitle(customSidebarChildModels.get(index).getTitle()));
}
dialog.dismiss();
}
});
} else if (mType == 1) {
selectString.add(getContext().getString(R.string.interactive_game_create_unlimited));
selectString.add(getContext().getString(R.string.interactive_game_create_0_1));
selectString.add(getContext().getString(R.string.interactive_game_create_1_2));
selectString.add(getContext().getString(R.string.interactive_game_create_2_5));
selectString.add(getContext().getString(R.string.interactive_game_create_5));
selectSill.put(getContext().getString(R.string.interactive_game_create_unlimited), "0,0");
selectSill.put(getContext().getString(R.string.interactive_game_create_0_1), "0,1");
selectSill.put(getContext().getString(R.string.interactive_game_create_1_2), "1,2");
selectSill.put(getContext().getString(R.string.interactive_game_create_2_5), "2,5");
selectSill.put(getContext().getString(R.string.interactive_game_create_5), "5,0");
index = 0;
for (int i = 0; i < selectString.size(); i++) {
if (TextUtils.equals(mSill, selectString.get(i))) {
index = i;
}
}
sudTitleSelectAdapter = new SudTitleSelectAdapter(selectString, index, mType);
sudTitleSelect.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
sudTitleSelect.setAdapter(sudTitleSelectAdapter);
topSelect.setVisibility(GONE);
sudTitleSelectAdapter.setSudTitleSelectCallBack(new SudTitleSelectAdapter.SudTitleSelectCallBack() {
@Override
public void onSudTitleSelectCallBack(int index) {
String sillName = selectString.get(index);
String sill = selectSill.get(sillName);
Bus.get().post(new SudGameListSillEvent().setSill(sill).setSillName(sillName));
dialog.dismiss();
}
});
} else if (mType == 2) {
selectString.add(getContext().getString(R.string.interactive_game_create_unlimited));
selectString.add(getContext().getString(R.string.live_anchor));
selectString.add(getContext().getString(R.string.interactive_game_player));
selectSill.put(getContext().getString(R.string.interactive_game_create_unlimited), "0");
selectSill.put(getContext().getString(R.string.live_anchor), "1");
selectSill.put(getContext().getString(R.string.interactive_game_player), "2");
index = 0;
for (int i = 0; i < selectString.size(); i++) {
if (TextUtils.equals(mSill, selectString.get(i))) {
index = i;
}
}
sudTitleSelectAdapter = new SudTitleSelectAdapter(selectString, index, mType);
sudTitleSelect.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
sudTitleSelect.setAdapter(sudTitleSelectAdapter);
topSelect.setVisibility(GONE);
sudTitleSelectAdapter.setSudTitleSelectCallBack(new SudTitleSelectAdapter.SudTitleSelectCallBack() {
@Override
public void onSudTitleSelectCallBack(int index) {
String roomHolderTypeName = selectString.get(index);
String roomHolderType = selectSill.get(roomHolderTypeName);
Bus.get().post(new RoomHolderTypeEvent().setRoomHolderType(roomHolderType).setRoomHolderTypeName(roomHolderTypeName));
dialog.dismiss();
}
});
}
ViewClicksAntiShake.clicksAntiShake(topSelect, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
Bus.get().post(new SudGameListEvent().setInteractionID(0L).setTitle(getContext().getString(R.string.interactive_game_room_all)).setId("0"));
dialog.dismiss();
}
});
}
@Override
protected void onDismiss() {
super.onDismiss();
if(onDismissListener!=null){
onDismissListener.onDismiss(null);
}
}
}

View File

@ -0,0 +1,253 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.graphics.Color;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.fastjson.JSONArray;
import com.lxj.xpopup.XPopup;
import com.yunbao.common.R;
import com.yunbao.common.adapter.SudHomeGameListAdapter;
import com.yunbao.common.bean.CreateSudRoomModel;
import com.yunbao.common.bean.SudRoomListModel;
import com.yunbao.common.event.LiveSudGamePopupShowOrHideEvent;
import com.yunbao.common.event.SudGameListDissMissEvent;
import com.yunbao.common.event.SudRoomListModelEvent;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.SpUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.views.FlowLayout;
import com.yunbao.common.views.LiveSudGamePopup;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
public class SudGameSearchDialogPopup extends AbsDialogPopupWindow {
private static final String SP_HISTORY = "sud_game_search_history";
private EditText editSearch;
private RecyclerView listRoom;//listHistory, ;
private View history;
private FlowLayout searchHistory;
// private SudGameSearchHistoryListAdapter historyListAdapter;
private SudHomeGameListAdapter sudGameListAdapter;
private boolean isHome = false;
public SudGameSearchDialogPopup(@NonNull Context context, boolean isHome) {
super(context);
this.isHome = isHome;
}
@Override
public void dismiss() {
Bus.getOff(this);
super.dismiss();
}
@Override
public void buildDialog(XPopup.Builder builder) {
builder.moveUpToKeyboard(false);
}
@Override
public int bindLayoutId() {
if (isHome) {
return R.layout.dialog_home_search_sud_game;
} else {
return R.layout.dialog_search_sud_game;
}
}
@Override
protected void onCreate() {
super.onCreate();
Bus.getOn(this);
editSearch = findViewById(R.id.edit_search);
// listHistory = findViewById(R.id.list_history);
listRoom = findViewById(R.id.list_room);
history = findViewById(R.id.layout_history);
findViewById(R.id.layout_history_empty).setVisibility(GONE);
searchHistory = findViewById(R.id.search_history);
searchHistory.removeAllViews();
sudGameListAdapter = new SudHomeGameListAdapter(mContext, isHome);
listRoom.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
listRoom.setAdapter(sudGameListAdapter);
initHistoryData();
switchList(true);
editSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String value = s.toString();
if (!StringUtil.isEmpty(value)) {
search(value);
} else {
findViewById(R.id.layout_history_empty).setVisibility(GONE);
switchList(true);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.btn_back), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dialog.dismiss();
}
});
}
private List<String> historyList;
private void addHistoryData(String str) {
LinearLayout.LayoutParams layoutParams =
new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(15, 10, 15, 7);
TextView chip = new TextView(mContext);
chip.setText(str);
chip.setMaxEms(10);
chip.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
chip.setSingleLine();
if (isHome) {
chip.setBackgroundResource(R.drawable.bg_item_search_history);
chip.setTextColor(Color.parseColor("#FF999999"));
} else {
chip.setBackgroundResource(R.drawable.bg_item_home_search_history);
chip.setTextColor(Color.parseColor("#FFFFFF"));
}
chip.setLayoutParams(layoutParams);
searchHistory.addView(chip, layoutParams);
chip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editSearch.setText(str);
}
});
}
private void initHistoryData() {
searchHistory.removeAllViews();
String value = SpUtil.getStringValue(SP_HISTORY);
historyList = new ArrayList<>();
if (!StringUtil.isEmpty(value)) {
historyList = JSONArray.parseArray(value, String.class);
}
for (String str : historyList) {
addHistoryData(str);
}
}
private void search(String value) {
LiveNetManager.get(mContext)
.searchRoomList("0", "0,0", "0", value, 0, new HttpCallback<List<SudRoomListModel>>() {
@Override
public void onSuccess(List<SudRoomListModel> data) {
if (data.size() > 0) {
switchList(false);
sudGameListAdapter.setList(data);
findViewById(R.id.layout_history_empty).setVisibility(GONE);
boolean isValue = false;
for (String str : historyList) {
if (!isValue) {
isValue = TextUtils.equals(value, str);
}
}
if (!isValue) {
if (historyList.size() < 6) {
if (historyList.size() == 5) {
historyList.remove(0);
}
historyList.add(value);
SpUtil.setStringValue(SP_HISTORY, JSONArray.toJSONString(historyList));
searchHistory.removeAllViews();
for (String str : historyList) {
addHistoryData(str);
}
}
}
}else {
findViewById(R.id.layout_history_empty).setVisibility(VISIBLE);
listRoom.setVisibility(GONE);
history.setVisibility(GONE);
}
}
@Override
public void onError(String error) {
findViewById(R.id.layout_history_empty).setVisibility(VISIBLE);
switchList(false);
}
});
}
private void switchList(boolean isHistory) {
if (isHistory) {
history.setVisibility(VISIBLE);
listRoom.setVisibility(GONE);
} else {
listRoom.setVisibility(VISIBLE);
history.setVisibility(GONE);
}
}
@Override
protected void onDismiss() {
super.onDismiss();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSudGameListDissMissEvent(SudGameListDissMissEvent event) {
dialog.dismiss();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSudGameListEvent(SudRoomListModelEvent event) {
CreateSudRoomModel createSudRoomModel = new CreateSudRoomModel();
createSudRoomModel.setSudGameId(event.getModel().getSudGameId());
createSudRoomModel.setSudGameRoomId(event.getModel().getSudGameRoomId());
createSudRoomModel.setAvatar(event.getModel().getAvatar());
createSudRoomModel.setRoomName(event.getModel().getRoomName());
createSudRoomModel.setSudGameName(event.getModel().getSudGameName());
dialog.dismiss();
Bus.get().post(new LiveSudGamePopupShowOrHideEvent().setType(0).setCreateSudRoomModel(createSudRoomModel));
}
}

View File

@ -13,6 +13,7 @@ public class AllServerNotifyEvent extends BaseModel {
//礼物名称 //礼物名称
@SerializedName("giftname") @SerializedName("giftname")
private String giftName; private String giftName;
//盲盒名称 //盲盒名称
@SerializedName("box_type_name") @SerializedName("box_type_name")
private String boxTypeName; private String boxTypeName;

View File

@ -0,0 +1,30 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.sud.state.SudMGPMGState;
import java.util.ArrayList;
import java.util.List;
public class CheckRemainingBalanceEvent extends BaseModel {
public int seatIndex;
public List<SudMGPMGState.MGCommonGameSettle.PlayerResult> results = new ArrayList<>();
public List<SudMGPMGState.MGCommonGameSettle.PlayerResult> getResults() {
return results;
}
public CheckRemainingBalanceEvent setResults(List<SudMGPMGState.MGCommonGameSettle.PlayerResult> results) {
this.results = results;
return this;
}
public int getSeatIndex() {
return seatIndex;
}
public CheckRemainingBalanceEvent setSeatIndex(int seatIndex) {
this.seatIndex = seatIndex;
return this;
}
}

View File

@ -0,0 +1,38 @@
package com.yunbao.common.event;
import android.widget.TextView;
import com.yunbao.common.bean.BaseModel;
public class CreateSudGameEvent extends BaseModel {
private long interactionID = 0;
private String title;
private String id;
public String getId() {
return id;
}
public CreateSudGameEvent setId(String id) {
this.id = id;
return this;
}
public String getTitle() {
return title;
}
public CreateSudGameEvent setTitle(String title) {
this.title = title;
return this;
}
public long getInteractionID() {
return interactionID;
}
public CreateSudGameEvent setInteractionID(long interactionID) {
this.interactionID = interactionID;
return this;
}
}

View File

@ -1,6 +1,10 @@
package com.yunbao.common.event; package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel; import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.CustomSidebarChildModel;
import java.util.ArrayList;
import java.util.List;
public class CustomDrawerPopupEvent extends BaseModel { public class CustomDrawerPopupEvent extends BaseModel {
//是否关闭弹窗 //是否关闭弹窗
@ -28,6 +32,37 @@ public class CustomDrawerPopupEvent extends BaseModel {
//畫質選擇 //畫質選擇
private boolean qualitySelection = false; private boolean qualitySelection = false;
private boolean fontSize = false; private boolean fontSize = false;
private boolean interaction = false;
private long interactionID;
private List<CustomSidebarChildModel> child = new ArrayList<>();
public List<CustomSidebarChildModel> getChild() {
return child;
}
public CustomDrawerPopupEvent setChild(List<CustomSidebarChildModel> child) {
this.child = child;
return this;
}
public boolean isInteraction() {
return interaction;
}
public CustomDrawerPopupEvent setInteraction(boolean interaction) {
this.interaction = interaction;
return this;
}
public long getInteractionID() {
return interactionID;
}
public CustomDrawerPopupEvent setInteractionID(long interactionID) {
this.interactionID = interactionID;
return this;
}
public boolean isSmallWindow() { public boolean isSmallWindow() {
return smallWindow; return smallWindow;

View File

@ -0,0 +1,26 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
public class HideShowEvent extends BaseModel {
private boolean isClose = false;
private boolean hide = false;
public boolean isHide() {
return hide;
}
public HideShowEvent setHide(boolean hide) {
this.hide = hide;
return this;
}
public boolean isClose() {
return isClose;
}
public HideShowEvent setClose(boolean close) {
isClose = close;
return this;
}
}

View File

@ -0,0 +1,4 @@
package com.yunbao.common.event;
public class LiveNewRoleEvent {
}

View File

@ -0,0 +1,17 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.CreateSudRoomModel;
public class LiveOpenSudRoomEvent extends BaseModel {
private CreateSudRoomModel createSudRoomModel = null;
public CreateSudRoomModel getCreateSudRoomModel() {
return createSudRoomModel;
}
public LiveOpenSudRoomEvent setCreateSudRoomModel(CreateSudRoomModel createSudRoomModel) {
this.createSudRoomModel = createSudRoomModel;
return this;
}
}

View File

@ -0,0 +1,26 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.CreateSudRoomModel;
public class LiveSudGamePopupShowOrHideEvent {
private int type = 0;//0展示1hide隱藏2dismiss關閉
private CreateSudRoomModel createSudRoomModel;
public CreateSudRoomModel getCreateSudRoomModel() {
return createSudRoomModel;
}
public LiveSudGamePopupShowOrHideEvent setCreateSudRoomModel(CreateSudRoomModel createSudRoomModel) {
this.createSudRoomModel = createSudRoomModel;
return this;
}
public int getType() {
return type;
}
public LiveSudGamePopupShowOrHideEvent setType(int type) {
this.type = type;
return this;
}
}

View File

@ -0,0 +1,182 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.CustomSidebarChildModel;
import java.util.ArrayList;
import java.util.List;
public class NewRoleCustomDrawerPopupEvent extends BaseModel {
//是否关闭弹窗
private boolean isDisMiss = false;
//权益的名字
private String rightsInterests = "";
//活动的id
private int activityId = 0;
//跳转网页地址
private String htmlUrl;
//是否半屏展示
private boolean screen = false;
//系统消息
private boolean systemNotice = false;
//在线客服
private boolean online = false;
//举报
private boolean reportLayout = false;
//刷新
private boolean refresh = false;
//特效設置
private boolean effects = false;
//小窗播放
private boolean smallWindow = false;
//畫質選擇
private boolean qualitySelection = false;
private boolean fontSize = false;
private boolean interaction = false;
private long interactionID;
private List<CustomSidebarChildModel> child = new ArrayList<>();
public List<CustomSidebarChildModel> getChild() {
return child;
}
public NewRoleCustomDrawerPopupEvent setChild(List<CustomSidebarChildModel> child) {
this.child = child;
return this;
}
public boolean isInteraction() {
return interaction;
}
public NewRoleCustomDrawerPopupEvent setInteraction(boolean interaction) {
this.interaction = interaction;
return this;
}
public long getInteractionID() {
return interactionID;
}
public NewRoleCustomDrawerPopupEvent setInteractionID(long interactionID) {
this.interactionID = interactionID;
return this;
}
public boolean isSmallWindow() {
return smallWindow;
}
public NewRoleCustomDrawerPopupEvent setSmallWindow(boolean smallWindow) {
this.smallWindow = smallWindow;
return this;
}
public boolean isQualitySelection() {
return qualitySelection;
}
public NewRoleCustomDrawerPopupEvent setQualitySelection(boolean qualitySelection) {
this.qualitySelection = qualitySelection;
return this;
}
public boolean isRefresh() {
return refresh;
}
public NewRoleCustomDrawerPopupEvent setRefresh(boolean refresh) {
this.refresh = refresh;
return this;
}
public boolean isSystemNotice() {
return systemNotice;
}
public NewRoleCustomDrawerPopupEvent setSystemNotice(boolean systemNotice) {
this.systemNotice = systemNotice;
return this;
}
public boolean isOnline() {
return online;
}
public NewRoleCustomDrawerPopupEvent setOnline(boolean online) {
this.online = online;
return this;
}
public boolean isReportLayout() {
return reportLayout;
}
public NewRoleCustomDrawerPopupEvent setReportLayout(boolean reportLayout) {
this.reportLayout = reportLayout;
return this;
}
public String getHtmlUrl() {
return htmlUrl;
}
public NewRoleCustomDrawerPopupEvent setHtmlUrl(String htmlUrl) {
this.htmlUrl = htmlUrl;
return this;
}
public boolean isScreen() {
return screen;
}
public NewRoleCustomDrawerPopupEvent setScreen(boolean screen) {
this.screen = screen;
return this;
}
public int getActivityId() {
return activityId;
}
public NewRoleCustomDrawerPopupEvent setActivityId(int activityId) {
this.activityId = activityId;
return this;
}
public String getRightsInterests() {
return rightsInterests;
}
public NewRoleCustomDrawerPopupEvent setRightsInterests(String rightsInterests) {
this.rightsInterests = rightsInterests;
return this;
}
public boolean isDisMiss() {
return isDisMiss;
}
public NewRoleCustomDrawerPopupEvent setDisMiss(boolean disMiss) {
isDisMiss = disMiss;
return this;
}
public boolean isEffects() {
return effects;
}
public NewRoleCustomDrawerPopupEvent setEffects(boolean effects) {
this.effects = effects;
return this;
}
public boolean isFontSize() {
return fontSize;
}
public NewRoleCustomDrawerPopupEvent setFontSize(boolean fontSize) {
this.fontSize = fontSize;
return this;
}
}

View File

@ -0,0 +1,26 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
public class RoomHolderTypeEvent extends BaseModel {
private String roomHolderType;
private String roomHolderTypeName;
public String getRoomHolderType() {
return roomHolderType;
}
public RoomHolderTypeEvent setRoomHolderType(String roomHolderType) {
this.roomHolderType = roomHolderType;
return this;
}
public String getRoomHolderTypeName() {
return roomHolderTypeName;
}
public RoomHolderTypeEvent setRoomHolderTypeName(String roomHolderTypeName) {
this.roomHolderTypeName = roomHolderTypeName;
return this;
}
}

View File

@ -1,5 +1,7 @@
package com.yunbao.common.event; package com.yunbao.common.event;
import android.text.TextUtils;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import com.yunbao.common.bean.BaseModel; import com.yunbao.common.bean.BaseModel;
@ -21,6 +23,8 @@ public class SendBlindGiftEvent extends BaseModel {
private String totalcoin; private String totalcoin;
@SerializedName("giftname") @SerializedName("giftname")
private String giftname; private String giftname;
@SerializedName("giftname_en")
private String giftname_en;
@SerializedName("giftnameen") @SerializedName("giftnameen")
private String giftnameen; private String giftnameen;
@SerializedName("gifticon") @SerializedName("gifticon")
@ -69,6 +73,8 @@ public class SendBlindGiftEvent extends BaseModel {
private String needcoin; private String needcoin;
@SerializedName("gift_msg") @SerializedName("gift_msg")
private String giftMsg; private String giftMsg;
@SerializedName("gift_msg_en")
private String giftMsgen;
@SerializedName("gift_colour") @SerializedName("gift_colour")
private String giftColour; private String giftColour;
@SerializedName("box_type") @SerializedName("box_type")
@ -85,6 +91,8 @@ public class SendBlindGiftEvent extends BaseModel {
private Object dressId; private Object dressId;
@SerializedName("dress_name") @SerializedName("dress_name")
private String dressName; private String dressName;
@SerializedName("dress_nameen")
private String dress_nameen;
@SerializedName("display_src") @SerializedName("display_src")
private Object displaySrc; private Object displaySrc;
@SerializedName("effect_src") @SerializedName("effect_src")
@ -95,6 +103,8 @@ public class SendBlindGiftEvent extends BaseModel {
private Object nobleDress; private Object nobleDress;
@SerializedName("dress_msg") @SerializedName("dress_msg")
private String dressMsg; private String dressMsg;
@SerializedName("dress_msg_en")
private String dressMsgEN;
@SerializedName("dress_colour") @SerializedName("dress_colour")
private String dressColour; private String dressColour;
@SerializedName("dress_threshold_value") @SerializedName("dress_threshold_value")
@ -119,11 +129,29 @@ public class SendBlindGiftEvent extends BaseModel {
return this; return this;
} }
public String getGiftMsgen() {
return giftMsgen;
}
public SendBlindGiftEvent setGiftMsgen(String giftMsgen) {
this.giftMsgen = giftMsgen;
return this;
}
public SendBlindGiftEvent setUserNiceName(String userNiceName) { public SendBlindGiftEvent setUserNiceName(String userNiceName) {
this.userNiceName = userNiceName; this.userNiceName = userNiceName;
return this; return this;
} }
public String getDress_nameen() {
return dress_nameen;
}
public SendBlindGiftEvent setDress_nameen(String dress_nameen) {
this.dress_nameen = dress_nameen;
return this;
}
public String getUid() { public String getUid() {
return uid; return uid;
} }
@ -530,6 +558,15 @@ public class SendBlindGiftEvent extends BaseModel {
return this; return this;
} }
public String getDressMsgEN() {
return dressMsgEN;
}
public SendBlindGiftEvent setDressMsgEN(String dressMsgEN) {
this.dressMsgEN = dressMsgEN;
return this;
}
public String getDressColour() { public String getDressColour() {
return dressColour; return dressColour;
} }
@ -556,4 +593,13 @@ public class SendBlindGiftEvent extends BaseModel {
this.liveGiftNotify = liveGiftNotify; this.liveGiftNotify = liveGiftNotify;
return this; return this;
} }
public String getGiftname_en() {
return TextUtils.isEmpty(giftname_en)?giftnameen:giftname_en;
}
public SendBlindGiftEvent setGiftname_en(String giftname_en) {
this.giftname_en = giftname_en;
return this;
}
} }

View File

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

View File

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

View File

@ -0,0 +1,36 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
public class SudGameListEvent extends BaseModel {
private long interactionID = 0;
private String title;
private String id;
public String getId() {
return id;
}
public SudGameListEvent setId(String id) {
this.id = id;
return this;
}
public String getTitle() {
return title;
}
public SudGameListEvent setTitle(String title) {
this.title = title;
return this;
}
public long getInteractionID() {
return interactionID;
}
public SudGameListEvent setInteractionID(long interactionID) {
this.interactionID = interactionID;
return this;
}
}

View File

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

View File

@ -0,0 +1,26 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
public class SudGameListSillEvent extends BaseModel {
private String sillName;
private String sill;
public String getSillName() {
return sillName;
}
public SudGameListSillEvent setSillName(String sillName) {
this.sillName = sillName;
return this;
}
public String getSill() {
return sill;
}
public SudGameListSillEvent setSill(String sill) {
this.sill = sill;
return this;
}
}

View File

@ -0,0 +1,17 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.SudRoomListModel;
public class SudRoomListModelEvent extends BaseModel {
private SudRoomListModel model;
public SudRoomListModel getModel() {
return model;
}
public SudRoomListModelEvent setModel(SudRoomListModel model) {
this.model = model;
return this;
}
}

View File

@ -46,16 +46,16 @@ public class GoogleFragment extends Fragment {
public GoogleFragment() { public GoogleFragment() {
} }
@SuppressLint("ValidFragment")
public GoogleFragment(String urls) {
url = urls;
Log.e("google", "111aa");
}
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//通过参数中的布局填充获取对应布局 //通过参数中的布局填充获取对应布局
view = inflater.inflate(R.layout.activity_recharge, container, false); view = inflater.inflate(R.layout.activity_recharge, container, false);
assert getArguments() != null;
url = getArguments().getString("url");
if(StringUtil.isEmpty(url)){ if(StringUtil.isEmpty(url)){
Log.e(TAG, "URL为空" ); Log.e(TAG, "URL为空" );
return view; return view;

View File

@ -21,6 +21,7 @@ import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.HintCustomPopup; import com.yunbao.common.views.HintCustomPopup;
import com.yunbao.common.views.LiveNewWishGiftPopup; import com.yunbao.common.views.LiveNewWishGiftPopup;
import com.yunbao.common.views.weight.ViewClicksAntiShake; import com.yunbao.common.views.weight.ViewClicksAntiShake;
@ -82,7 +83,7 @@ public class LiveNewWishListFragment extends BaseFragment {
@Override @Override
public void onError(String error) { public void onError(String error) {
ToastUtil.show(R.string.net_error); ToastUtil.show(getActivity().getString(R.string.net_error));
} }
}); });
} }
@ -149,12 +150,12 @@ public class LiveNewWishListFragment extends BaseFragment {
setWishlistV2(type, gson.toJson(wishList2), new HttpCallback<String>() { setWishlistV2(type, gson.toJson(wishList2), new HttpCallback<String>() {
@Override @Override
public void onSuccess(String data) { public void onSuccess(String data) {
ToastUtil.show("修改成功"); ToastUtil.show(WordUtil.isNewZh()?"修改成功":"Success");
} }
@Override @Override
public void onError(String error) { public void onError(String error) {
ToastUtil.show(R.string.net_error); ToastUtil.show(WordUtil.isNewZh()?"抱歉!出錯了!":"i \\'m sorry! An error occurred");
} }
}); });
} else if (wishList2.size() == 1) { } else if (wishList2.size() == 1) {
@ -174,38 +175,38 @@ public class LiveNewWishListFragment extends BaseFragment {
public void onCancel() { public void onCancel() {
if (wishList2.size() > 10) { if (wishList2.size() > 10) {
ToastUtil.show(R.string.must_hint); ToastUtil.show(getActivity().getString(R.string.must_hint));
return; return;
} }
LiveNetManager.get(getContext()). LiveNetManager.get(getContext()).
setWishlistV2(type, gson.toJson(wishList2), new HttpCallback<String>() { setWishlistV2(type, gson.toJson(wishList2), new HttpCallback<String>() {
@Override @Override
public void onSuccess(String data) { public void onSuccess(String data) {
ToastUtil.show("修改成功"); ToastUtil.show(WordUtil.isNewZh()?"修改成功":"Success");
} }
@Override @Override
public void onError(String error) { public void onError(String error) {
ToastUtil.show(R.string.net_error); ToastUtil.show(WordUtil.isNewZh()?"抱歉!出錯了!":"i \\'m sorry! An error occurred");
} }
}); });
} }
})).show(); })).show();
} else { } else {
if (wishList2.size() > 10) { if (wishList2.size() > 10) {
ToastUtil.show(R.string.must_hint); ToastUtil.show(getContext().getString(R.string.must_hint));
return; return;
} }
LiveNetManager.get(getContext()). LiveNetManager.get(getContext()).
setWishlistV2(type, gson.toJson(wishList2), new HttpCallback<String>() { setWishlistV2(type, gson.toJson(wishList2), new HttpCallback<String>() {
@Override @Override
public void onSuccess(String data) { public void onSuccess(String data) {
ToastUtil.show("修改成功"); ToastUtil.show(WordUtil.isNewZh()?"修改成功":"Success");
} }
@Override @Override
public void onError(String error) { public void onError(String error) {
ToastUtil.show(R.string.net_error); ToastUtil.show(WordUtil.isNewZh()?"抱歉!出錯了!":"i \\'m sorry! An error occurred");
} }
}); });

View File

@ -81,20 +81,20 @@ public class ProcessFragment extends Fragment {
switch (permission) { switch (permission) {
case Manifest.permission.READ_EXTERNAL_STORAGE: case Manifest.permission.READ_EXTERNAL_STORAGE:
case Manifest.permission.WRITE_EXTERNAL_STORAGE: case Manifest.permission.WRITE_EXTERNAL_STORAGE:
ToastUtil.show(R.string.permission_storage_refused); ToastUtil.show(getActivity().getString(R.string.permission_storage_refused));
break; break;
case Manifest.permission.CAMERA: case Manifest.permission.CAMERA:
ToastUtil.show(R.string.permission_camera_refused); ToastUtil.show(getActivity().getString(R.string.permission_camera_refused));
break; break;
case Manifest.permission.RECORD_AUDIO: case Manifest.permission.RECORD_AUDIO:
ToastUtil.show(R.string.permission_record_audio_refused); ToastUtil.show(getActivity().getString(R.string.permission_record_audio_refused));
break; break;
case Manifest.permission.ACCESS_COARSE_LOCATION: case Manifest.permission.ACCESS_COARSE_LOCATION:
ToastUtil.show(R.string.permission_location_refused); ToastUtil.show(getActivity().getString(R.string.permission_location_refused));
CommonAppConfig.getInstance().clearLocationInfo(); CommonAppConfig.getInstance().clearLocationInfo();
break; break;
case Manifest.permission.READ_PHONE_STATE: case Manifest.permission.READ_PHONE_STATE:
ToastUtil.show(R.string.permission_read_phone_state_refused); ToastUtil.show(getActivity().getString(R.string.permission_read_phone_state_refused));
break; break;
} }
} }

View File

@ -26,24 +26,23 @@ public class WalletFragment extends Fragment {
private WebView rlWebview; private WebView rlWebview;
private String url; private String url;
private Activity mContext;
@SuppressLint("ValidFragment") public WalletFragment() {
public WalletFragment(Activity context, String urls) {
Log.e("google", "222aa");
url = urls;
mContext = context;
} }
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//通过参数中的布局填充获取对应布局 //通过参数中的布局填充获取对应布局
assert getArguments() != null;
url = getArguments().getString("url");
view = inflater.inflate(R.layout.activity_recharge, container, false); view = inflater.inflate(R.layout.activity_recharge, container, false);
rlWebview = (WebView) view.findViewById(R.id.rlWebview); rlWebview = (WebView) view.findViewById(R.id.rlWebview);
Log.e("ttt", url); Log.e("ttt", url);
rlWebview.loadUrl(url); rlWebview.loadUrl(url);
WebSettings webSettings = rlWebview.getSettings(); WebSettings webSettings = rlWebview.getSettings();
webSettings.setDomStorageEnabled(true); webSettings.setDomStorageEnabled(true);
@ -54,7 +53,7 @@ public class WalletFragment extends Fragment {
webSettings.setJavaScriptCanOpenWindowsAutomatically(true); // 是否允许JS打开新窗口 webSettings.setJavaScriptCanOpenWindowsAutomatically(true); // 是否允许JS打开新窗口
rlWebview.addJavascriptInterface(JavascriptInterfaceUtils.getInstance().setmContext(mContext, rlWebview).setPageClose(true), "androidObject"); rlWebview.addJavascriptInterface(JavascriptInterfaceUtils.getInstance().setmContext(getActivity(), rlWebview).setPageClose(true), "androidObject");
TestWebViewClient testWebViewClient = new TestWebViewClient(getActivity(), rlWebview); TestWebViewClient testWebViewClient = new TestWebViewClient(getActivity(), rlWebview);

View File

@ -13,6 +13,7 @@ import com.lzy.okgo.callback.StringCallback;
import com.lzy.okgo.model.Response; import com.lzy.okgo.model.Response;
import com.lzy.okgo.request.PostRequest; import com.lzy.okgo.request.PostRequest;
import com.yunbao.common.CommonAppConfig; import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.R; import com.yunbao.common.R;
import com.yunbao.common.activity.ErrorActivity; import com.yunbao.common.activity.ErrorActivity;
import com.yunbao.common.bean.ConfigBean; import com.yunbao.common.bean.ConfigBean;
@ -162,7 +163,7 @@ public class CommonHttpUtil {
} else { } else {
locale = IMLoginManager.get(context).getLocaleLanguage(); locale = IMLoginManager.get(context).getLocaleLanguage();
} }
if (locale.getLanguage().equals("zh")) { if (WordUtil.isNewZh()) {
lang = "chinese"; lang = "chinese";
} else { } else {
@ -260,6 +261,8 @@ public class CommonHttpUtil {
AppManager.getInstance().AppExit(); AppManager.getInstance().AppExit();
} }
}).build().show(); }).build().show();
} else {
ToastUtil.show(context.getString(R.string.net_error) + "code:" + code + " msg:" + msg);
} }
} }

View File

@ -8,10 +8,10 @@ import com.google.gson.Gson;
import com.lzy.okgo.callback.AbsCallback; import com.lzy.okgo.callback.AbsCallback;
import com.lzy.okgo.model.Response; import com.lzy.okgo.model.Response;
import com.lzy.okgo.request.base.Request; import com.lzy.okgo.request.base.Request;
import com.yunbao.common.R;
import com.yunbao.common.utils.L; import com.yunbao.common.utils.L;
import com.yunbao.common.utils.RouteUtil; import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import java.net.ConnectException; import java.net.ConnectException;
import java.net.SocketException; import java.net.SocketException;
@ -36,7 +36,7 @@ public abstract class HttpCallback extends AbsCallback<JsonBean> {
public void onSuccess(Response<JsonBean> response) { public void onSuccess(Response<JsonBean> response) {
JsonBean bean = response.body(); JsonBean bean = response.body();
String gson = new Gson().toJson(bean); String gson = new Gson().toJson(bean);
Log.e("onSuccess",gson); Log.e("onSuccess", gson);
if (bean != null) { if (bean != null) {
if (200 == bean.getRet()) { if (200 == bean.getRet()) {
Data data = bean.getData(); Data data = bean.getData();
@ -65,7 +65,7 @@ public abstract class HttpCallback extends AbsCallback<JsonBean> {
t.printStackTrace(); t.printStackTrace();
L.e("网络请求错误---->" + t.getClass() + " : " + t.getMessage()); L.e("网络请求错误---->" + t.getClass() + " : " + t.getMessage());
if (t instanceof SocketTimeoutException || t instanceof ConnectException || t instanceof UnknownHostException || t instanceof UnknownServiceException || t instanceof SocketException) { if (t instanceof SocketTimeoutException || t instanceof ConnectException || t instanceof UnknownHostException || t instanceof UnknownServiceException || t instanceof SocketException) {
ToastUtil.show(R.string.load_failure); ToastUtil.show(WordUtil.isNewZh() ? "網絡請求失敗" : "Network request failed");
} }
// if (showLoadingDialog() && mLoadingDialog != null) { // if (showLoadingDialog() && mLoadingDialog != null) {
// mLoadingDialog.dismiss(); // mLoadingDialog.dismiss();

View File

@ -6,10 +6,6 @@ import com.lzy.okgo.request.GetRequest;
import com.lzy.okgo.request.PostRequest; import com.lzy.okgo.request.PostRequest;
import com.yunbao.common.CommonAppConfig; import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext; import com.yunbao.common.CommonAppContext;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.HttpClient;
import com.yunbao.common.http.JsonBean;
import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.L; import com.yunbao.common.utils.L;
import com.yunbao.common.utils.MD5Util; import com.yunbao.common.utils.MD5Util;
@ -292,6 +288,7 @@ public class LiveHttpUtil {
/** /**
* 主播或管理员禁言 * 主播或管理员禁言
*
* @param time 禁言时间 * @param time 禁言时间
*/ */
public static void setShutUp(String liveUid, String stream, int type, String touid, String time, HttpCallback callback) { public static void setShutUp(String liveUid, String stream, int type, String touid, String time, HttpCallback callback) {
@ -619,17 +616,19 @@ public class LiveHttpUtil {
* 观众给主播送礼物 * 观众给主播送礼物
*/ */
public static void sendGift(String by, String liveUid, String stream, int giftId, String giftCount, HttpCallback callback) { public static void sendGift(String by, String liveUid, String stream, int giftId, String giftCount, HttpCallback callback) {
sendGift(by, liveUid, stream, giftId, giftCount, 0, false,callback); sendGift(by, liveUid, stream, giftId, giftCount, 0, false, callback);
} }
public static void sendGift(String by, String liveUid, String stream, int giftId, String giftCount, int isContactGift, HttpCallback callback) {
sendGift(by, liveUid, stream, giftId, giftCount, isContactGift, false,callback); public static void sendGift(String by, String liveUid, String stream, int giftId, String giftCount, int isContactGift, HttpCallback callback) {
sendGift(by, liveUid, stream, giftId, giftCount, isContactGift, false, callback);
} }
/** /**
* 观众给主播送礼物 * 观众给主播送礼物
* *
* @param isContactGift 是否为联系方式礼物 * @param isContactGift 是否为联系方式礼物
*/ */
public static void sendGift(String by, String liveUid, String stream, int giftId, String giftCount, int isContactGift, boolean isFansGroupGift,HttpCallback callback) { public static void sendGift(String by, String liveUid, String stream, int giftId, String giftCount, int isContactGift, boolean isFansGroupGift, HttpCallback callback) {
HttpClient.getInstance().get("Live.sendGift", LiveHttpConsts.SEND_GIFT) HttpClient.getInstance().get("Live.sendGift", LiveHttpConsts.SEND_GIFT)
.params("liveuid", liveUid) .params("liveuid", liveUid)
.params("stream", stream) .params("stream", stream)
@ -637,7 +636,20 @@ public class LiveHttpUtil {
.params("isContactGift", isContactGift) .params("isContactGift", isContactGift)
.params("giftcount", giftCount) .params("giftcount", giftCount)
.params("isprank", by) .params("isprank", by)
.params("fans_exclusive_pack",isFansGroupGift?"1":"0") .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)
.params("stream", stream)
.params("giftid", giftId)
.params("isContactGift", 0)
.params("giftcount", "1")
.params("isprank", by)
.params("fans_exclusive_pack", "0")
.params("appVersion", CommonAppConfig.getInstance().getVersion()) .params("appVersion", CommonAppConfig.getInstance().getVersion())
.execute(callback); .execute(callback);
} }
@ -955,6 +967,16 @@ public class LiveHttpUtil {
HttpClient.getInstance().get("Home.getFollow", "Home.getFollow") HttpClient.getInstance().get("Home.getFollow", "Home.getFollow")
.params("p", p) .params("p", p)
.execute(callback); .execute(callback);
} }
public static void getRoomList(String sudGameId, String threshold, String roomHolderType, String liveUid,int page,HttpCallback callback ) {
HttpClient.getInstance().get("Sudgameserver.getRoomList", "Sudgameserver.getRoomList")
.params("sud_game_id",sudGameId)
.params("threshold",threshold)
.params("room_holder_type",roomHolderType)
.params("liveuid",liveUid)
.params("page",page)
.execute(callback);
}
} }

View File

@ -7,7 +7,9 @@ import com.yunbao.common.bean.AnchorRecommendModel;
import com.yunbao.common.bean.BaseModel; import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.BlindBoxInfoModel; import com.yunbao.common.bean.BlindBoxInfoModel;
import com.yunbao.common.bean.CheckLiveModel; import com.yunbao.common.bean.CheckLiveModel;
import com.yunbao.common.bean.CheckRemainingBalance;
import com.yunbao.common.bean.ContributeModel; import com.yunbao.common.bean.ContributeModel;
import com.yunbao.common.bean.CreateSudRoomModel;
import com.yunbao.common.bean.CustomSidebarInfoModel; import com.yunbao.common.bean.CustomSidebarInfoModel;
import com.yunbao.common.bean.DiscountsModel; import com.yunbao.common.bean.DiscountsModel;
import com.yunbao.common.bean.EnterRoomNewModel; import com.yunbao.common.bean.EnterRoomNewModel;
@ -40,6 +42,7 @@ import com.yunbao.common.bean.MsgSwitchDetailModel;
import com.yunbao.common.bean.NewPeopleInfo; import com.yunbao.common.bean.NewPeopleInfo;
import com.yunbao.common.bean.NobleRankHideUserListModel; import com.yunbao.common.bean.NobleRankHideUserListModel;
import com.yunbao.common.bean.NobleTrumpetModel; import com.yunbao.common.bean.NobleTrumpetModel;
import com.yunbao.common.bean.OpenAdModel;
import com.yunbao.common.bean.PkRankBean; import com.yunbao.common.bean.PkRankBean;
import com.yunbao.common.bean.PrankGiftBean; import com.yunbao.common.bean.PrankGiftBean;
import com.yunbao.common.bean.PrankHttpTurntableBean; import com.yunbao.common.bean.PrankHttpTurntableBean;
@ -53,6 +56,8 @@ import com.yunbao.common.bean.SearchModel;
import com.yunbao.common.bean.SetAttentsModel; import com.yunbao.common.bean.SetAttentsModel;
import com.yunbao.common.bean.SlideInBannerModel; import com.yunbao.common.bean.SlideInBannerModel;
import com.yunbao.common.bean.StarChallengeStatusModel; import com.yunbao.common.bean.StarChallengeStatusModel;
import com.yunbao.common.bean.SudRoomListModel;
import com.yunbao.common.bean.SudgameCodeModel;
import com.yunbao.common.bean.UserAreaBean; import com.yunbao.common.bean.UserAreaBean;
import com.yunbao.common.bean.UserAvatarSelectBean; import com.yunbao.common.bean.UserAvatarSelectBean;
import com.yunbao.common.bean.VipModel; import com.yunbao.common.bean.VipModel;
@ -158,18 +163,23 @@ public interface PDLiveApi {
* @param num 请求数量 * @param num 请求数量
* @return * @return
*/ */
@GET("/api/public/?service=Home.anchorRecommend ") @GET("/api/public/?service=Home.anchorRecommend")
Observable<ResponseModel<AnchorRecommendModel>> anchorRecommend( Observable<ResponseModel<AnchorRecommendModel>> anchorRecommend(
@Query("num") String num @Query("num") String num
); );
@GET("/api/public/?service=Home.anchorRecommend")
Observable<ResponseModel<AnchorRecommendModel>> anchorRecommend(
@QueryMap Map<String, Object> map
);
/** /**
* 直播间上下滚动列表 * 直播间上下滚动列表
* *
* @param num 请求数量 * @param num 请求数量
* @return * @return
*/ */
@GET("/api/public/?service=Home.anchorRecommend ") @GET("/api/public/?service=Home.anchorRecommend")
Observable<ResponseModel<AnchorRecommendModel>> anchorRecommend( Observable<ResponseModel<AnchorRecommendModel>> anchorRecommend(
@Query("num") String num, @Query("type") String type @Query("num") String num, @Query("type") String type
); );
@ -182,7 +192,7 @@ public interface PDLiveApi {
*/ */
@GET("/api/public/?service=Live.getLiveInfo") @GET("/api/public/?service=Live.getLiveInfo")
Observable<ResponseModel<List<LiveInfoModel>>> getLiveInfo( Observable<ResponseModel<List<LiveInfoModel>>> getLiveInfo(
@Query("liveuid") String liveuid @Query("liveuid") String liveui
); );
/** /**
@ -296,7 +306,7 @@ public interface PDLiveApi {
* 新侧边栏请求 * 新侧边栏请求
*/ */
@GET("/api/public/?service=Live.getCustomSidebarInfo") @GET("/api/public/?service=Live.getCustomSidebarInfo")
Observable<ResponseModel<List<CustomSidebarInfoModel>>> getCustomSidebarInfo(); Observable<ResponseModel<List<CustomSidebarInfoModel>>> getCustomSidebarInfo(@Query("type") String type);
/** /**
* 任务领取接口 * 任务领取接口
@ -766,18 +776,19 @@ public interface PDLiveApi {
/** /**
* 获取盲盒礼物当前数据 * 创建红包
*/ */
@GET("/api/public/?service=Live.createRedPacket") @GET("/api/public/?service=Live.createRedPacket")
Observable<ResponseModel<Object>> createRedPacket( Observable<ResponseModel<Object>> createRedPacket(
@Query("liveuid") String liveUid, @Query("liveuid") String liveUid,
@Query("is_fans") int needFansGroup,
@Query("red_packet_money") String redPacketMoney, @Query("red_packet_money") String redPacketMoney,
@Query("red_packet_quantity") String redPacketQuantity, @Query("red_packet_quantity") String redPacketQuantity,
@Query("conditions") String conditions @Query("conditions") String conditions
); );
/** /**
* 获取盲盒礼物当前数据 * 获取红包数据
*/ */
@GET("/api/public/?service=Live.redPacketInfo") @GET("/api/public/?service=Live.redPacketInfo")
Observable<ResponseModel<RedPacketInfoModel>> redPacketInfo( Observable<ResponseModel<RedPacketInfoModel>> redPacketInfo(
@ -968,5 +979,74 @@ public interface PDLiveApi {
@GET("/api/public/?service=gift.getGiftNamingInfo") @GET("/api/public/?service=gift.getGiftNamingInfo")
Observable<ResponseModel<GiftNamingInfoModel>> getGiftNamingInfo(@Query("gift_id") String giftId); Observable<ResponseModel<GiftNamingInfoModel>> getGiftNamingInfo(@Query("gift_id") String giftId);
/**
* 获取游戏code
*
* @return
*/
@GET("/api/public/?service=Sudgame.getCode")
Observable<ResponseModel<List<SudgameCodeModel>>> getCode();
/**
* 创建游戏房
*
* @return
*/
@GET("/api/public/?service=Sudgameserver.createSudRoom")
Observable<ResponseModel<CreateSudRoomModel>> createSudRoom(
@Query("room_name") String roomName,
@Query("golden_bean_number") String goldenBeanNumber,
@Query("game_id") String gameId);
/**
* 获取游戏房列表
*
* @return
*/
@GET("/api/public/?service=Sudgameserver.getRoomList")
Observable<ResponseModel<List<SudRoomListModel>>> getRoomList(
@Query("sud_game_id") String sudGameId,
@Query("threshold") String threshold,
@Query("room_holder_type") String roomHolderType,
@Query("liveuid") String liveUid,
@Query("page") int page
);
/**
* 获取游戏房列表 - 搜索
*/
@GET("/api/public/?service=Sudgameserver.getRoomList")
Observable<ResponseModel<List<SudRoomListModel>>> searchRoomList(
@Query("sud_game_id") String sudGameId,
@Query("threshold") String threshold,
@Query("room_holder_type") String roomHolderType,
@Query("liveuid") String liveUid,
@Query("search") String search,
@Query("page") int page
);
@GET("/api/public/?service=Sudgameserver.checkRemainingBalance")
Observable<ResponseModel<CheckRemainingBalance>> checkRemainingBalance(
@Query("room_id") String roomId
);
@GET("/api/public/?service=Sudgameserver.randomRoom")
Observable<ResponseModel<CreateSudRoomModel>> randomRoom(
@Query("sud_game_id") String sudGameId,
@Query("threshold") String threshold,
@Query("room_holder_type") String roomHolderType
);
@GET("/api/public/?service=Sudgameserver.checkRoomStatus")
Observable<ResponseModel<CreateSudRoomModel>> checkRoomStatus(
@Query("room_id") String roomId
);
/**
* 活动弹窗
*/
@GET("/api/public/?service=Home.activityPopup")
Observable<ResponseModel<List<OpenAdModel>>> activityPopup();
} }

View File

@ -10,6 +10,8 @@ import com.yunbao.common.bean.ActiveModel;
import com.yunbao.common.bean.BaseModel; import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.BlindBoxInfoModel; import com.yunbao.common.bean.BlindBoxInfoModel;
import com.yunbao.common.bean.CheckLiveModel; import com.yunbao.common.bean.CheckLiveModel;
import com.yunbao.common.bean.CheckRemainingBalance;
import com.yunbao.common.bean.CreateSudRoomModel;
import com.yunbao.common.bean.CustomSidebarInfoModel; import com.yunbao.common.bean.CustomSidebarInfoModel;
import com.yunbao.common.bean.DiscountsModel; import com.yunbao.common.bean.DiscountsModel;
import com.yunbao.common.bean.EnterRoomNewModel; import com.yunbao.common.bean.EnterRoomNewModel;
@ -29,7 +31,6 @@ import com.yunbao.common.bean.LiveAiRobotBean;
import com.yunbao.common.bean.LiveAnchorCallMeModel; import com.yunbao.common.bean.LiveAnchorCallMeModel;
import com.yunbao.common.bean.LiveAnchorSayModel; import com.yunbao.common.bean.LiveAnchorSayModel;
import com.yunbao.common.bean.LiveDataInfoModel; import com.yunbao.common.bean.LiveDataInfoModel;
import com.yunbao.common.bean.LiveGiftBean;
import com.yunbao.common.bean.LiveInfoModel; import com.yunbao.common.bean.LiveInfoModel;
import com.yunbao.common.bean.LiveRoomActivityBanner; import com.yunbao.common.bean.LiveRoomActivityBanner;
import com.yunbao.common.bean.LiveRoomVoteModel; import com.yunbao.common.bean.LiveRoomVoteModel;
@ -39,6 +40,7 @@ import com.yunbao.common.bean.LiveUserMailBoxModel;
import com.yunbao.common.bean.MedalAchievementModel; import com.yunbao.common.bean.MedalAchievementModel;
import com.yunbao.common.bean.NobleRankHideUserListModel; import com.yunbao.common.bean.NobleRankHideUserListModel;
import com.yunbao.common.bean.NobleTrumpetModel; import com.yunbao.common.bean.NobleTrumpetModel;
import com.yunbao.common.bean.OpenAdModel;
import com.yunbao.common.bean.PkRankBean; import com.yunbao.common.bean.PkRankBean;
import com.yunbao.common.bean.PrankGiftBean; import com.yunbao.common.bean.PrankGiftBean;
import com.yunbao.common.bean.PrankHttpTurntableBean; import com.yunbao.common.bean.PrankHttpTurntableBean;
@ -50,6 +52,8 @@ import com.yunbao.common.bean.RedPacketInfoModel;
import com.yunbao.common.bean.RedPacketListBean; import com.yunbao.common.bean.RedPacketListBean;
import com.yunbao.common.bean.SetAttentsModel; import com.yunbao.common.bean.SetAttentsModel;
import com.yunbao.common.bean.StarChallengeStatusModel; import com.yunbao.common.bean.StarChallengeStatusModel;
import com.yunbao.common.bean.SudRoomListModel;
import com.yunbao.common.bean.SudgameCodeModel;
import com.yunbao.common.bean.UserAreaBean; import com.yunbao.common.bean.UserAreaBean;
import com.yunbao.common.bean.UserAvatarSelectBean; import com.yunbao.common.bean.UserAvatarSelectBean;
import com.yunbao.common.bean.VipModel; import com.yunbao.common.bean.VipModel;
@ -314,9 +318,9 @@ public class LiveNetManager {
* *
* @param callback * @param callback
*/ */
public void getCustomSidebarInfo(HttpCallback<List<CustomSidebarInfoModel>> callback) { public void getCustomSidebarInfo(String type, HttpCallback<List<CustomSidebarInfoModel>> callback) {
API.get().pdLiveApi(mContext) API.get().pdLiveApi(mContext)
.getCustomSidebarInfo() .getCustomSidebarInfo(type)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(listResponseModel -> callback.onSuccess(listResponseModel.getData().getInfo()), throwable -> { .subscribe(listResponseModel -> callback.onSuccess(listResponseModel.getData().getInfo()), throwable -> {
@ -1631,10 +1635,11 @@ public class LiveNetManager {
* @param redPacketMoney 红包金额 * @param redPacketMoney 红包金额
* @param redPacketQuantity 红包数量 * @param redPacketQuantity 红包数量
* @param conditions 红包领取条件 0. 1.关注主播 * @param conditions 红包领取条件 0. 1.关注主播
* @param needFansGroup 是否需要加入粉丝团条件
*/ */
public void createRedPacket(String liveUid, String redPacketMoney, String redPacketQuantity, String conditions, HttpCallback<String> callback) { public void createRedPacket(String liveUid, String redPacketMoney, String redPacketQuantity, String conditions, boolean needFansGroup, HttpCallback<String> callback) {
API.get().pdLiveApi(mContext) API.get().pdLiveApi(mContext)
.createRedPacket(liveUid, redPacketMoney, redPacketQuantity, conditions) .createRedPacket(liveUid, needFansGroup ? 1 : 0, redPacketMoney, redPacketQuantity, conditions)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<Object>>() { .subscribe(new Consumer<ResponseModel<Object>>() {
@ -1931,7 +1936,7 @@ public class LiveNetManager {
public void giftDetail(String liveUid, String giftId, String toUid, HttpCallback<GiftWallGiftDetail> callback) { public void giftDetail(String liveUid, String giftId, String toUid, HttpCallback<GiftWallGiftDetail> callback) {
API.get().pdLiveApi(mContext) API.get().pdLiveApi(mContext)
.giftDetail(liveUid, giftId,toUid) .giftDetail(liveUid, giftId, toUid)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<GiftWallGiftDetail>>() { .subscribe(new Consumer<ResponseModel<GiftWallGiftDetail>>() {
@ -2171,7 +2176,7 @@ public class LiveNetManager {
}).isDisposed(); }).isDisposed();
} }
public void getGiftNamingInfo(String giftId,HttpCallback<GiftNamingInfoModel> callback) { public void getGiftNamingInfo(String giftId, HttpCallback<GiftNamingInfoModel> callback) {
API.get().pdLiveApi(mContext) API.get().pdLiveApi(mContext)
.getGiftNamingInfo(giftId) .getGiftNamingInfo(giftId)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
@ -2179,7 +2184,7 @@ public class LiveNetManager {
.subscribe(new Consumer<ResponseModel<GiftNamingInfoModel>>() { .subscribe(new Consumer<ResponseModel<GiftNamingInfoModel>>() {
@Override @Override
public void accept(ResponseModel<GiftNamingInfoModel> liveGiftBeanResponseModel) throws Exception { public void accept(ResponseModel<GiftNamingInfoModel> liveGiftBeanResponseModel) throws Exception {
if (callback!=null){ if (callback != null) {
callback.onSuccess(liveGiftBeanResponseModel.getData().getInfo()); callback.onSuccess(liveGiftBeanResponseModel.getData().getInfo());
} }
} }
@ -2193,6 +2198,190 @@ public class LiveNetManager {
}).isDisposed(); }).isDisposed();
} }
public void activityPopup(HttpCallback<List<OpenAdModel>> callback) {
API.get().pdLiveApi(mContext)
.activityPopup()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<OpenAdModel>>>() {
@Override
public void accept(ResponseModel<List<OpenAdModel>> 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 getCode(HttpCallback<List<SudgameCodeModel>> callback) {
API.get().pdLiveApi(mContext)
.getCode()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<SudgameCodeModel>>>() {
@Override
public void accept(ResponseModel<List<SudgameCodeModel>> listResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(listResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void createSudRoom(String roomName, String goldenBeanNumber, String gameId, HttpCallback<CreateSudRoomModel> callback) {
API.get().pdLiveApi(mContext)
.createSudRoom(roomName, goldenBeanNumber, gameId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<CreateSudRoomModel>>() {
@Override
public void accept(ResponseModel<CreateSudRoomModel> createSudRoomModelResponseModel) throws Exception {
if (callback != null) {
if (createSudRoomModelResponseModel.getData().getCode() == 0) {
callback.onSuccess(createSudRoomModelResponseModel.getData().getInfo());
} else {
callback.onError(createSudRoomModelResponseModel.getData().getMsg());
}
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void randomRoom(String sudGameId, String threshold, String roomHolderType, HttpCallback<CreateSudRoomModel> callback) {
API.get().pdLiveApi(mContext)
.randomRoom(sudGameId, threshold, roomHolderType)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<CreateSudRoomModel>>() {
@Override
public void accept(ResponseModel<CreateSudRoomModel> createSudRoomModelResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(createSudRoomModelResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void checkRoomStatus(String roomId, HttpCallback<CreateSudRoomModel> callback) {
API.get().pdLiveApi(mContext)
.checkRoomStatus(roomId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<CreateSudRoomModel>>() {
@Override
public void accept(ResponseModel<CreateSudRoomModel> createSudRoomModelResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(createSudRoomModelResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void getRoomList(String sudGameId, String threshold, String roomHolderType, String liveUid, int page, HttpCallback<List<SudRoomListModel>> callback) {
API.get().pdLiveApi(mContext)
.getRoomList(sudGameId, threshold, roomHolderType, liveUid, page)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<SudRoomListModel>>>() {
@Override
public void accept(ResponseModel<List<SudRoomListModel>> listResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(listResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void searchRoomList(String sudGameId, String threshold, String roomHolderType, String search, int page, HttpCallback<List<SudRoomListModel>> callback) {
API.get().pdLiveApi(mContext)
.searchRoomList(sudGameId, threshold, roomHolderType, "0", search, page)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<SudRoomListModel>>>() {
@Override
public void accept(ResponseModel<List<SudRoomListModel>> 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 checkRemainingBalance(String roomId, HttpCallback<CheckRemainingBalance> callback) {
API.get().pdLiveApi(mContext)
.checkRemainingBalance(roomId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<CheckRemainingBalance>>() {
@Override
public void accept(ResponseModel<CheckRemainingBalance> checkRemainingBalanceResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(checkRemainingBalanceResponseModel.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();
}
/** /**
* 直播间取消网络请求 * 直播间取消网络请求
*/ */

View File

@ -14,7 +14,9 @@ import com.yunbao.common.http.ResponseData;
import com.yunbao.common.http.ResponseModel; import com.yunbao.common.http.ResponseModel;
import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.base.HttpCallback;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer; import io.reactivex.functions.Consumer;
@ -115,6 +117,22 @@ public class MainNetManager {
}).isDisposed(); }).isDisposed();
} }
public void anchorRecommend(Map<String, Object> map, HttpCallback<AnchorRecommendModel> httpCallback) {
API.get().pdLiveApi(mContext).anchorRecommend(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(anchorRecommendModelResponseModel -> {
if (httpCallback != null) {
AnchorRecommendModel model = anchorRecommendModelResponseModel.getData().getInfo();
httpCallback.onSuccess(model);
}
}, throwable -> {
if (httpCallback != null) {
httpCallback.onError(throwable.getMessage());
}
}).isDisposed();
}
/** /**
* 猜你喜欢 * 猜你喜欢
* *
@ -122,7 +140,11 @@ public class MainNetManager {
* @return * @return
*/ */
public void anchorRecommendType(String num, HttpCallback<AnchorRecommendModel> httpCallback) { public void anchorRecommendType(String num, HttpCallback<AnchorRecommendModel> httpCallback) {
API.get().pdLiveApi(mContext).anchorRecommend(num, "1") Map<String, Object> map = new HashMap<>();
map.put("num", num);
map.put("live_recommend", "slide");
map.put("type", "1");
API.get().pdLiveApi(mContext).anchorRecommend(map)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(anchorRecommendModelResponseModel -> { .subscribe(anchorRecommendModelResponseModel -> {
@ -266,6 +288,7 @@ public class MainNetManager {
} }
}).isDisposed(); }).isDisposed();
} }
/** /**
* 获取直播间上下滑动红包集合 * 获取直播间上下滑动红包集合
*/ */

View File

@ -10,6 +10,7 @@ import androidx.annotation.NonNull;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.lzf.easyfloat.EasyFloat; import com.lzf.easyfloat.EasyFloat;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.CommonAppContext; import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.IMLoginModel; import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.event.DataUserInfoEvent; import com.yunbao.common.event.DataUserInfoEvent;
@ -50,6 +51,32 @@ public class IMLoginManager extends BaseCacheManager {
private final String LIVE_NOTIFY_SETTINGS = "liveNotifySettings";//开播通知 private final String LIVE_NOTIFY_SETTINGS = "liveNotifySettings";//开播通知
private final String KEY_LANGUAGE = "language"; private final String KEY_LANGUAGE = "language";
private final String KEY_GAME = "key_game";
public void setRedPoint() {
put("RedPoint", "1");
}
public boolean getRedPoint() {
return !TextUtils.isEmpty(getString("RedPoint")) && !TextUtils.equals(getString("RedPoint"), "1");
}
public void setSudGameMin() {
put("SudGameMin", "0");
}
public boolean getSudGameMin() {
return !TextUtils.isEmpty(getString("SudGameMin")) && !TextUtils.equals(getString("SudGameMin"), "1");
}
public void setSudGame(String sudGameJson) {
put(KEY_GAME, sudGameJson);
}
public String getSudGame() {
return getString(KEY_GAME);
}
public void setLanguage(boolean isEnglish) { public void setLanguage(boolean isEnglish) {
put(KEY_LANGUAGE, isEnglish); put(KEY_LANGUAGE, isEnglish);
@ -301,6 +328,8 @@ public class IMLoginManager extends BaseCacheManager {
* @param model * @param model
*/ */
public void setupLoginUser(@NonNull IMLoginModel model) { public void setupLoginUser(@NonNull IMLoginModel model) {
//当用户使用自有账号登录时可以这样统计
MobclickAgent.onProfileSignIn(String.valueOf(model.getId()));
this.userInfo = model; this.userInfo = model;
if (userInfo != null && !TextUtils.isEmpty(userInfo.getToken())) { if (userInfo != null && !TextUtils.isEmpty(userInfo.getToken())) {
token = userInfo.getToken(); token = userInfo.getToken();
@ -430,6 +459,8 @@ public class IMLoginManager extends BaseCacheManager {
// IMCenter.getInstance().clearConversations(null, Conversation.ConversationType.PRIVATE); // IMCenter.getInstance().clearConversations(null, Conversation.ConversationType.PRIVATE);
RongcloudIMManager.logoutIM(); RongcloudIMManager.logoutIM();
MessageIMManager.get(activity).logout(); MessageIMManager.get(activity).logout();
//登出
MobclickAgent.onProfileSignOff();
put(IS_HINT, 0); put(IS_HINT, 0);
APPEasyFloat.getInstance().dismiss(activity); APPEasyFloat.getInstance().dismiss(activity);
if (EasyFloat.isShow("LiveFloatView")) { if (EasyFloat.isShow("LiveFloatView")) {

View File

@ -6,6 +6,7 @@ import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -100,7 +101,11 @@ public class IMRTCManager {
public void onSuccess() { public void onSuccess() {
callback.onSuccess(); callback.onSuccess();
if (!RandomPkManager.getInstance().isRandomModel()) { if (!RandomPkManager.getInstance().isRandomModel()) {
ToastUtil.show("发起邀请成功"); if(WordUtil.isNewZh()) {
ToastUtil.show("发起邀请成功");
}else{
ToastUtil.show("successful");
}
} }
requestUid.add(liveUid); requestUid.add(liveUid);
startRequestTimeoutTask(liveUid); startRequestTimeoutTask(liveUid);
@ -109,7 +114,11 @@ public class IMRTCManager {
@Override @Override
public void onFailed(RTCErrorCode errorCode) { public void onFailed(RTCErrorCode errorCode) {
if (!RandomPkManager.getInstance().isRandomModel()) { if (!RandomPkManager.getInstance().isRandomModel()) {
ToastUtil.show("邀请失败 " + errorCode.getValue()); if(WordUtil.isNewZh()) {
ToastUtil.show("邀请失败 " + errorCode.getValue());
}else{
ToastUtil.show("invite failed:" +errorCode.getValue());
}
} }
if (RandomPkManager.getInstance().isRequestPk()) { if (RandomPkManager.getInstance().isRequestPk()) {
RandomPkManager.getInstance().setPkStatus(RandomPkManager.PK_STATUS_REFUSE); RandomPkManager.getInstance().setPkStatus(RandomPkManager.PK_STATUS_REFUSE);

View File

@ -0,0 +1,98 @@
package com.yunbao.common.manager;
import android.content.Context;
import android.text.TextUtils;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.reflect.TypeToken;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.manager.base.BaseCacheManager;
import java.util.ArrayList;
import java.util.List;
/**
* 连麦用户申请列表维护
*/
public class MicUserManager extends BaseCacheManager {
private String micKey = "TYPE_MIC_REQUEST";
private List<UserBean> micUsers = new ArrayList<>();
private static MicUserManager manager;
public MicUserManager(Context context) {
super(context);
}
public static MicUserManager get() {
if (null == manager) {
manager = new MicUserManager(CommonAppContext.sInstance.getBaseContext());
}
return manager;
}
public void upDataMicUser(JSONObject map) {
boolean isHave = false;
for (int i = 0; i < micUsers.size(); i++) {
if (TextUtils.equals(micUsers.get(i).getId(), map.getString("uid"))) {
isHave = true;
}
}
if (!isHave){
UserBean userModel = new UserBean();
UserBean.DressBean dressAvatar = null;
if (!TextUtils.isEmpty(map.getString("dress_avatar"))) {
dressAvatar = new UserBean.DressBean();
dressAvatar.setAvatar_frame(map.getString("dress_avatar"));
}
userModel.setAvatar(map.getString("avatar"));
userModel.setId(map.getString("uid"));
userModel.setUserNiceName(map.getString("uname"));
userModel.setDress(dressAvatar);
userModel.setSex(map.getIntValue("sex"));
userModel.setLevel(map.getIntValue("level"));
userModel.setTypeMic(2);
micUsers.add(userModel);
put(micKey, micUsers);
}
}
public List<UserBean> getMicUserList() {
if (micUsers.size() < 1) {
micUsers = getList(micKey, new TypeToken<List<UserBean>>() {
}.getType());
}
return micUsers;
}
public void removeMiscUser(JSONObject map) {
micUsers = getMicUserList();
if (micUsers == null) return;
for (int i = 0; i < micUsers.size(); i++) {
if (TextUtils.equals(micUsers.get(i).getId(), map.getString("uid"))) {
micUsers.remove(i);
}
}
put(micKey, micUsers);
}
public void removeMiscUser(String uid) {
micUsers = getMicUserList();
if (micUsers == null) return;
for (int i = 0; i < micUsers.size(); i++) {
if (TextUtils.equals(micUsers.get(i).getId(), uid)) {
micUsers.remove(i);
}
}
put(micKey, micUsers);
}
public void removeAllMicUserList() {
deleteByKey(micKey);
micUsers.clear();
}
}

View File

@ -0,0 +1,90 @@
package com.yunbao.common.manager;
import android.content.Context;
import android.text.TextUtils;
import com.google.gson.reflect.TypeToken;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.LinkMicUserBean;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.manager.base.BaseCacheManager;
import java.util.ArrayList;
import java.util.List;
/**
* 处于连麦中的人员维护列表
*/
public class MicedUserManager extends BaseCacheManager {
private String micKey = "TYPE_MIC_LIST";
private List<UserBean> micUsers = new ArrayList<>();
public MicedUserManager(Context context) {
super(context);
}
private static MicedUserManager manager;
public static MicedUserManager get() {
if (null == manager) {
manager = new MicedUserManager(CommonAppContext.sInstance.getBaseContext());
}
return manager;
}
public void upDataMicUserList(List<LinkMicUserBean> list) {
micUsers.clear();
if (list == null || list.size() < 1) return;
for (LinkMicUserBean linkMicUserBean : list) {
if (!TextUtils.equals(linkMicUserBean.getId(),
String.valueOf(IMLoginManager.get(
CommonAppContext.sInstance.getBaseContext()).
getUserInfo().getId()))) {
UserBean userModel = new UserBean();
UserBean.DressBean dressAvatar = null;
if (!TextUtils.isEmpty(linkMicUserBean.getDressAvatar())) {
dressAvatar = new UserBean.DressBean();
dressAvatar.setAvatar_frame(linkMicUserBean.getDressAvatar());
}
userModel.setAvatar(linkMicUserBean.getAvatar());
userModel.setId(linkMicUserBean.getId());
userModel.setUserNiceName(linkMicUserBean.getUserNicename());
userModel.setSex(linkMicUserBean.getSex());
userModel.setDress(dressAvatar);
userModel.setLevel(linkMicUserBean.getLevel());
userModel.setTypeMic(1);
micUsers.add(userModel);
}
}
put(micKey, micUsers);
}
public void removeMiscUser(String uid) {
micUsers = getMicUserList();
if (micUsers == null) return;
for (int i = 0; i < micUsers.size(); i++) {
if (TextUtils.equals(micUsers.get(i).getId(), uid)) {
micUsers.remove(i);
}
}
put(micKey, micUsers);
}
public List<UserBean> getMicUserList() {
if (micUsers.size() < 1) {
micUsers = getList(micKey, new TypeToken<List<UserBean>>() {
}.getType());
}
return micUsers;
}
public void removeAllMicUserList() {
deleteByKey(micKey);
micUsers.clear();
}
}

View File

@ -0,0 +1,178 @@
package com.yunbao.common.manager;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.OpenAdModel;
import com.yunbao.common.dialog.OpenAdBottomDialogPopup;
import com.yunbao.common.dialog.OpenAdCenterDialogPopup;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.ToastUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
public class OpenAdManager {
public static final int TYPE_HOME = 1;
public static final int TYPE_LIVE = 2;
private static final String TAG = "-----弹窗-----";
private Map<Integer, Boolean> showMap;
private List<OpenAdModel> list = null;
private Handler handler = new Handler(Looper.getMainLooper());
private Map<Integer, AdRunnable> runnableMap = new HashMap<>();
private int showType;
private OpenAdManager() {
showMap = new HashMap<>();
init(false);
}
public void reset() {
dismiss();
runnableMap.clear();
showMap.clear();
list.clear();
}
private static final class MInstanceHolder {
static final OpenAdManager mInstance = new OpenAdManager();
}
public static OpenAdManager getInstance() {
return MInstanceHolder.mInstance;
}
private void init(boolean isShow) {
if (list != null && list.isEmpty()) {
return;
}
Context context = CommonAppContext.getTopActivity();
if (context == null) {
context = CommonAppContext.sInstance;
}
if (context == null) {
return;
}
LiveNetManager.get(context).activityPopup(new HttpCallback<List<OpenAdModel>>() {
@Override
public void onSuccess(List<OpenAdModel> data) {
if (data == null || data.isEmpty()) {
Log.i(TAG, "onSuccess: 没有数据");
list = new ArrayList<>();
return;
}
list = data;
if (isShow) {
show(TYPE_HOME, false);
}
}
@Override
public void onError(String error) {
System.err.println("弹框列表:" + error);
}
});
}
public synchronized void show(int type, boolean isGuard) {
if (list == null) {
init(true);
return;
}
showType = type;
for (OpenAdModel model : list) {
if (model.getType() == type) {
if (type == OpenAdModel.TYPE_LIVE && !model.userIsPermission(isGuard)) {
continue;
}
if (runnableMap.containsKey(model.getId())) {
AdRunnable runnable = runnableMap.get(model.getId());
if (runnable != null) {
Log.d(TAG, "reset: " + model);
handler.removeCallbacks(runnable);
runnableMap.remove(model.getId());
}
}
if (!isShow(model)) {
Log.i(TAG, "show: " + model);
handler.postDelayed(new AdRunnable(model), model.getDelayShowTime());
} else {
Log.i(TAG, "notshow: " + model);
}
}
}
Log.i(TAG, "------------------------------");
}
public synchronized void dismiss() {
Log.d(TAG, "准备dismiss:" + runnableMap.size());
for (Integer model : runnableMap.keySet()) {
AdRunnable runnable = runnableMap.get(model);
Log.d(TAG, "dismiss:" + runnable);
if (runnable != null) {
runnable.dismiss();
handler.removeCallbacks(runnable);
}
}
runnableMap.clear();
}
private synchronized boolean isShow(OpenAdModel type) {
if (showMap.containsKey(type.getId()) && showMap.get(type.getId()) != null) {
return Boolean.TRUE.equals(showMap.get(type.getId()));
}
return false;
}
private class AdRunnable implements Runnable {
OpenAdModel model;
public AdRunnable(OpenAdModel model) {
this.model = model;
runnableMap.put(model.getId(), this);
}
public void dismiss() {
Log.e(TAG, "dismiss: " + model);
}
@Override
public synchronized void run() {
Log.i(TAG, "run: " + model);
if (model == null) {
ToastUtil.showDebug("model为空");
return;
}
if (!model.isInTime()) {
ToastUtil.showDebug("不在展示时间内:" + model.getStartTime() + "|" + model.getEndTime());
return;
}
if (isShow(model)) {
ToastUtil.showDebug(model.getId() + "|model展示过了");
return;
}
if (model.getType() != showType) {
return;
}
showMap.put(model.getId(), true);
if (model.getModel() == OpenAdModel.MODEL_BOTTOM) {
new OpenAdBottomDialogPopup(CommonAppContext.getTopActivity(), model).setListener((bean, position) -> {
}).showDialog();
} else {
new OpenAdCenterDialogPopup(CommonAppContext.getTopActivity(), model).setListener((bean, position) -> {
}).showDialog();
}
}
}
}

View File

@ -10,6 +10,7 @@ import com.yunbao.common.bean.RankPkInfoBean;
import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -342,7 +343,7 @@ public class RandomPkManager {
@Override @Override
public void onError(String error) { public void onError(String error) {
ToastUtil.show(R.string.net_error); ToastUtil.show(WordUtil.isNewZh()?"抱歉!出錯了!":"i \\'m sorry! An error occurred");
} }
}); });
} }

View File

@ -1,11 +1,11 @@
package com.yunbao.common.pay; package com.yunbao.common.pay;
import android.app.Activity; import android.app.Activity;
import androidx.annotation.NonNull;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import androidx.annotation.NonNull;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.android.billingclient.api.Purchase; import com.android.billingclient.api.Purchase;
@ -18,13 +18,14 @@ import com.yunbao.common.bean.UserBean;
import com.yunbao.common.event.CoinChangeEvent; import com.yunbao.common.event.CoinChangeEvent;
import com.yunbao.common.http.CommonHttpUtil; import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback; import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.pay.ali.AliPayBuilder;
import com.yunbao.common.pay.wx.WxPayBuilder; import com.yunbao.common.pay.wx.WxPayBuilder;
import com.yunbao.common.utils.GoogleBillingUtil; import com.yunbao.common.utils.GoogleBillingUtil;
import com.yunbao.common.utils.OnGoogleBillingListener; import com.yunbao.common.utils.OnGoogleBillingListener;
import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ToastUtil;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -48,16 +49,16 @@ public class PayPresenter {
private GoogleBillingUtil googleBillingUtil; private GoogleBillingUtil googleBillingUtil;
private String TAG="PayPresenter"; private String TAG = "PayPresenter";
private String [] arrPro = {"1"}; private String[] arrPro = {"1"};
private String mOrderid; private String mOrderid;
public PayPresenter(Activity activity) { public PayPresenter(Activity activity) {
mActivity = new WeakReference<>(activity).get(); mActivity = new WeakReference<>(activity).get();
} }
public void setPayCallback(PayCallback callback){ public void setPayCallback(PayCallback callback) {
mPayCallback=callback; mPayCallback = callback;
} }
public long getBalanceValue() { public long getBalanceValue() {
@ -96,9 +97,10 @@ public class PayPresenter {
public void setAliCallbackUrl(String aliCallbackUrl) { public void setAliCallbackUrl(String aliCallbackUrl) {
mAliCallbackUrl = aliCallbackUrl; mAliCallbackUrl = aliCallbackUrl;
} }
public void pay(String payType, String money, String goodsName, String orderParams) { public void pay(String payType, String money, String goodsName, String orderParams) {
if (TextUtils.isEmpty(payType)) { if (TextUtils.isEmpty(payType)) {
ToastUtil.show(R.string.wallet_tip_5); ToastUtil.show(mActivity.getString(R.string.wallet_tip_5));
return; return;
} }
//L.e("《==》支付按钮4--->" +payType); //L.e("《==》支付按钮4--->" +payType);
@ -128,40 +130,42 @@ public class PayPresenter {
case Constants.PAY_TYPE_GOOGLE://google支付 case Constants.PAY_TYPE_GOOGLE://google支付
googlePay(orderParams); googlePay(orderParams);
break; break;
default: default:
otherPay(orderParams,payType); otherPay(orderParams, payType);
break; break;
} }
} }
//谷歌支付 //谷歌支付
private void googlePay(String orderParams) { private void googlePay(String orderParams) {
mOrderid="1"; mOrderid = "1";
String pid="2"; String pid = "2";
if (pid != null && !pid.isEmpty()){ if (pid != null && !pid.isEmpty()) {
arrPro[0]=pid; arrPro[0] = pid;
initGooglePay(); initGooglePay();
} }
String newParm= StringUtil.contact("Charge.getGoogleOrder",orderParams,"&type=android", String newParm = StringUtil.contact("Charge.getGoogleOrder", orderParams, "&type=android",
"&appname=",mActivity.getString(R.string.app_name), "&appname=", mActivity.getString(R.string.app_name),
"&desc="+mActivity.getPackageName()+"&source=android" "&desc=" + mActivity.getPackageName() + "&source=android"
); );
CommonHttpUtil.getWxH5Order(newParm, new HttpCallback() { CommonHttpUtil.getWxH5Order(newParm, new HttpCallback() {
@Override @Override
public void onSuccess(int code, String msg, String[] info) { public void onSuccess(int code, String msg, String[] info) {
if(code==0){ if (code == 0) {
try { try {
ToastUtil.show("开始支付,请稍后"); ToastUtil.show("开始支付,请稍后");
org.json.JSONObject jsonObject=new org.json.JSONObject(info[0]); org.json.JSONObject jsonObject = new org.json.JSONObject(info[0]);
mOrderid=jsonObject.getString("orderid"); mOrderid = jsonObject.getString("orderid");
String pid=jsonObject.getString("pid"); String pid = jsonObject.getString("pid");
if (pid != null && !pid.isEmpty()){ if (pid != null && !pid.isEmpty()) {
arrPro[0]=pid; arrPro[0] = pid;
initGooglePay(); initGooglePay();
} }
}catch (Exception e){ e.printStackTrace(); } } catch (Exception e) {
}else { e.printStackTrace();
}
} else {
ToastUtil.show("无法支付,请联系客服"); ToastUtil.show("无法支付,请联系客服");
} }
@ -171,7 +175,7 @@ public class PayPresenter {
private void initGooglePay() { private void initGooglePay() {
GoogleBillingUtil.isDebug(true); GoogleBillingUtil.isDebug(true);
GoogleBillingUtil.setSkus(arrPro,null); GoogleBillingUtil.setSkus(arrPro, null);
GoogleBillingUtil.setIsAutoAcknowledgePurchase(true);//设置自动确认购买 GoogleBillingUtil.setIsAutoAcknowledgePurchase(true);//设置自动确认购买
googleBillingUtil = GoogleBillingUtil.getInstance() googleBillingUtil = GoogleBillingUtil.getInstance()
.addOnGoogleBillingListener(mActivity, mOnMyGoogleBillingListener) .addOnGoogleBillingListener(mActivity, mOnMyGoogleBillingListener)
@ -179,35 +183,35 @@ public class PayPresenter {
} }
private void paypalPay(String orderParams) { private void paypalPay(String orderParams) {
String url1="/index.php?m=App&a=paypal" +orderParams +"&source=android"; String url1 = "/index.php?m=App&a=paypal" + orderParams + "&source=android";
String url2= CommonAppConfig.HOST+url1; String url2 = CommonAppConfig.HOST + url1;
open(url2); open(url2);
} }
private void payssionPay(String orderParams) { private void payssionPay(String orderParams) {
String url1="/index.php?m=App&a=pay" +orderParams +"&source=android"; String url1 = "/index.php?m=App&a=pay" + orderParams + "&source=android";
String url2= CommonAppConfig.HOST+url1; String url2 = CommonAppConfig.HOST + url1;
open(url2); open(url2);
} }
private void yunquPay(String orderParams) { private void yunquPay(String orderParams) {
String newParm= StringUtil.contact("Charge.getYunquOrder",orderParams,"&type=android", String newParm = StringUtil.contact("Charge.getYunquOrder", orderParams, "&type=android",
"&appname=",mActivity.getString(R.string.app_name), "&appname=", mActivity.getString(R.string.app_name),
"&desc="+mActivity.getPackageName()+"&source=android" "&desc=" + mActivity.getPackageName() + "&source=android"
); );
//L.e("《==》支付URL--->" +newParm); //L.e("《==》支付URL--->" +newParm);
CommonHttpUtil.getWxH5Order(newParm, new HttpCallback() { CommonHttpUtil.getWxH5Order(newParm, new HttpCallback() {
@Override @Override
public void onSuccess(int code, String msg, String[] info) { public void onSuccess(int code, String msg, String[] info) {
if(code==0){ if (code == 0) {
try { try {
org.json.JSONObject jsonObject=new org.json.JSONObject(info[0]); org.json.JSONObject jsonObject = new org.json.JSONObject(info[0]);
String payment_url=jsonObject.getString("payment_url"); String payment_url = jsonObject.getString("payment_url");
open(payment_url); open(payment_url);
// L.e("《==》支付URL--->" +payment_url); // L.e("《==》支付URL--->" +payment_url);
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -216,20 +220,20 @@ public class PayPresenter {
} }
private void hfbPay(String orderParams) { private void hfbPay(String orderParams) {
String newParm= StringUtil.contact("Charge.getWxH5Order",orderParams,"&type=android", String newParm = StringUtil.contact("Charge.getWxH5Order", orderParams, "&type=android",
"&appname=",mActivity.getString(R.string.app_name), "&appname=", mActivity.getString(R.string.app_name),
"&desc="+mActivity.getPackageName() "&desc=" + mActivity.getPackageName()
); );
CommonHttpUtil.getCashierOrder(newParm, new HttpCallback() { CommonHttpUtil.getCashierOrder(newParm, new HttpCallback() {
@Override @Override
public void onSuccess(int code, String msg, String[] info) { public void onSuccess(int code, String msg, String[] info) {
if(code==0){ if (code == 0) {
try { try {
org.json.JSONObject jsonObject=new org.json.JSONObject(info[0]); org.json.JSONObject jsonObject = new org.json.JSONObject(info[0]);
String redirectUrl=jsonObject.getString("redirectUrl"); String redirectUrl = jsonObject.getString("redirectUrl");
open(redirectUrl); open(redirectUrl);
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -237,66 +241,68 @@ public class PayPresenter {
}); });
} }
public void open(String url){ public void open(String url) {
//支付时内部跳转 false要添加 //支付时内部跳转 false要添加
WebViewActivity.forward(mActivity,url,false,false); WebViewActivity.forward(mActivity, url, false, false);
} }
private void hwPay(String orderParams) { private void hwPay(String orderParams) {
String newParm= StringUtil.contact("Charge.getCashierOrder",orderParams,"&type=android", String newParm = StringUtil.contact("Charge.getCashierOrder", orderParams, "&type=android",
"&appname=",mActivity.getString(R.string.app_name), "&appname=", mActivity.getString(R.string.app_name),
"&desc="+mActivity.getPackageName()+"&source=android" "&desc=" + mActivity.getPackageName() + "&source=android"
); );
//L.e("《==》支付URL--->" +newParm); //L.e("《==》支付URL--->" +newParm);
CommonHttpUtil.getWxH5Order(newParm, new HttpCallback() { CommonHttpUtil.getWxH5Order(newParm, new HttpCallback() {
@Override @Override
public void onSuccess(int code, String msg, String[] info) { public void onSuccess(int code, String msg, String[] info) {
if(code==0){ if (code == 0) {
try { try {
org.json.JSONObject jsonObject=new org.json.JSONObject(info[0]); org.json.JSONObject jsonObject = new org.json.JSONObject(info[0]);
String payment_url=jsonObject.getString("payment_url"); String payment_url = jsonObject.getString("payment_url");
open(payment_url); open(payment_url);
// L.e("《==》支付URL--->" +payment_url); // L.e("《==》支付URL--->" +payment_url);
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
}); });
} }
private void otherPay(String orderParams,String payType) {
String newParm= StringUtil.contact("Charge.getOtherPayOrder",orderParams,"&type=android", private void otherPay(String orderParams, String payType) {
"&appname=",mActivity.getString(R.string.app_name), String newParm = StringUtil.contact("Charge.getOtherPayOrder", orderParams, "&type=android",
"&desc="+mActivity.getPackageName()+"&source=android&payType="+payType "&appname=", mActivity.getString(R.string.app_name),
"&desc=" + mActivity.getPackageName() + "&source=android&payType=" + payType
); );
CommonHttpUtil.getWxH5Order(newParm, new HttpCallback() { CommonHttpUtil.getWxH5Order(newParm, new HttpCallback() {
@Override @Override
public void onSuccess(int code, String msg, String[] info) { public void onSuccess(int code, String msg, String[] info) {
if(code==0){ if (code == 0) {
try { try {
org.json.JSONObject jsonObject=new org.json.JSONObject(info[0]); org.json.JSONObject jsonObject = new org.json.JSONObject(info[0]);
String payment_url=jsonObject.getString("payment_url"); String payment_url = jsonObject.getString("payment_url");
open(payment_url); open(payment_url);
// L.e("《==》支付URL--->" +payment_url); // L.e("《==》支付URL--->" +payment_url);
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
}); });
} }
/** /**
* 支付宝支付 * 支付宝支付
*/ */
private void aliPay(String money, String goodsName, String orderParams) { private void aliPay(String money, String goodsName, String orderParams) {
if (mActivity == null || TextUtils.isEmpty(mServiceNameAli)|| TextUtils.isEmpty(mAliCallbackUrl)) { if (mActivity == null || TextUtils.isEmpty(mServiceNameAli) || TextUtils.isEmpty(mAliCallbackUrl)) {
return; return;
} }
// if (!CommonAppConfig.isAppExist(Constants.PACKAGE_NAME_ALI)) { // if (!CommonAppConfig.isAppExist(Constants.PACKAGE_NAME_ALI)) {
// ToastUtil.show(R.string.coin_ali_not_install); // ToastUtil.show(mContext.getString(R.string.coin_ali_not_install);
// return; // return;
// } // }
if (TextUtils.isEmpty(mAliPartner) || TextUtils.isEmpty(mAliSellerId) || TextUtils.isEmpty(mAliPrivateKey)) { if (TextUtils.isEmpty(mAliPartner) || TextUtils.isEmpty(mAliSellerId) || TextUtils.isEmpty(mAliPrivateKey)) {
@ -321,7 +327,7 @@ public class PayPresenter {
return; return;
} }
if (!CommonAppConfig.isAppExist(Constants.PACKAGE_NAME_WX)) { if (!CommonAppConfig.isAppExist(Constants.PACKAGE_NAME_WX)) {
ToastUtil.show(R.string.coin_wx_not_install); ToastUtil.show(mActivity.getString(R.string.coin_wx_not_install));
return; return;
} }
if (TextUtils.isEmpty(mWxAppID)) { if (TextUtils.isEmpty(mWxAppID)) {
@ -351,12 +357,12 @@ public class PayPresenter {
long goldValue = Long.parseLong(goldCoin); long goldValue = Long.parseLong(goldCoin);
if (balanceValue > mBalanceValue) { if (balanceValue > mBalanceValue) {
mBalanceValue = balanceValue; mBalanceValue = balanceValue;
ToastUtil.show(R.string.coin_charge_success); ToastUtil.show(mActivity.getString(R.string.coin_charge_success));
UserBean u = CommonAppConfig.getInstance().getUserBean(); UserBean u = CommonAppConfig.getInstance().getUserBean();
if (u != null) { if (u != null) {
u.setCoin(coin); u.setCoin(coin);
} }
EventBus.getDefault().post(new CoinChangeEvent(coin,goldCoin, true)); EventBus.getDefault().post(new CoinChangeEvent(coin, goldCoin, true));
} }
} }
} }
@ -364,11 +370,11 @@ public class PayPresenter {
} }
private OnGoogleBillingListener mOnMyGoogleBillingListener=new OnGoogleBillingListener(){ private OnGoogleBillingListener mOnMyGoogleBillingListener = new OnGoogleBillingListener() {
@Override @Override
public void onSetupSuccess(boolean isSelf) { public void onSetupSuccess(boolean isSelf) {
super.onSetupSuccess(isSelf); super.onSetupSuccess(isSelf);
Log.d(TAG,"内购服务初始化完成"); Log.d(TAG, "内购服务初始化完成");
checkSubs(); checkSubs();
} }
@ -393,30 +399,30 @@ public class PayPresenter {
// } // }
// googleBillingUtil.purchaseInApp(mActivity,"zs640"); // googleBillingUtil.purchaseInApp(mActivity,"zs640");
googleBillingUtil.purchaseInApp(mActivity,googleBillingUtil.getInAppSkuByPosition(0)); googleBillingUtil.purchaseInApp(mActivity, googleBillingUtil.getInAppSkuByPosition(0));
// Log.d(TAG,tempBuffer.toString()); // Log.d(TAG,tempBuffer.toString());
} }
@Override @Override
public boolean onPurchaseSuccess(@NonNull Purchase purchase, boolean isSelf) { public boolean onPurchaseSuccess(@NonNull Purchase purchase, boolean isSelf) {
StringBuffer tempBuffer =new StringBuffer(); StringBuffer tempBuffer = new StringBuffer();
if(purchase.getPurchaseState()==Purchase.PurchaseState.PURCHASED){ if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
tempBuffer.append("购买成功:"); tempBuffer.append("购买成功:");
//通知自己服务器 //通知自己服务器
if (mOrderid == null || purchase.getOrderId() == null){ if (mOrderid == null || purchase.getOrderId() == null) {
return false; return false;
} }
String allData=""; String allData = "";
allData="OrderId=" +purchase.getOrderId()+ allData = "OrderId=" + purchase.getOrderId() +
",PackageName="+purchase.getPackageName() + ",PackageName=" + purchase.getPackageName() +
",Sku=" +"purchase.getSku()"+ ",Sku=" + "purchase.getSku()" +
",PurchaseTime=" +purchase.getPurchaseTime()+ ",PurchaseTime=" + purchase.getPurchaseTime() +
",PurchaseToken=" +purchase.getPurchaseToken()+ ",PurchaseToken=" + purchase.getPurchaseToken() +
",DeveloperPayload=" +purchase.getDeveloperPayload()+ ",DeveloperPayload=" + purchase.getDeveloperPayload() +
",OriginalJson=" +purchase.getOriginalJson()+ ",OriginalJson=" + purchase.getOriginalJson() +
",PurchaseState=" +purchase.getPurchaseState()+ ",PurchaseState=" + purchase.getPurchaseState() +
",Signature="+purchase.getSignature(); ",Signature=" + purchase.getSignature();
// CommonHttpUtil.notifyGoogle("1",mOrderid,purchase.getOrderId(),allData, new HttpCallback() { // CommonHttpUtil.notifyGoogle("1",mOrderid,purchase.getOrderId(),allData, new HttpCallback() {
// @Override // @Override
// public void onSuccess(int code, String msg, String[] info) { // public void onSuccess(int code, String msg, String[] info) {
@ -433,22 +439,21 @@ public class PayPresenter {
// }); // });
}else{ } else {
tempBuffer.append("暂未支付:"); tempBuffer.append("暂未支付:");
} }
String details = String.format(Locale.getDefault(),"%s \n"," purchase.getSku()"); String details = String.format(Locale.getDefault(), "%s \n", " purchase.getSku()");
tempBuffer.append(details); tempBuffer.append(details);
Log.d(TAG,tempBuffer.toString()); Log.d(TAG, tempBuffer.toString());
return true ;//自动消耗(只有当isSelf为true,并且支付状态为PURCHASED时该值才会生效) return true;//自动消耗(只有当isSelf为true,并且支付状态为PURCHASED时该值才会生效)
} }
@Override @Override
public boolean onRecheck(@NonNull String skuType, @NonNull Purchase purchase, boolean isSelf) { public boolean onRecheck(@NonNull String skuType, @NonNull Purchase purchase, boolean isSelf) {
StringBuffer tempBuffer =new StringBuffer(); StringBuffer tempBuffer = new StringBuffer();
tempBuffer.append("检测到未处理的订单($skuType):${purchase.sku}()"); tempBuffer.append("检测到未处理的订单($skuType):${purchase.sku}()");
Log.d(TAG,tempBuffer.toString()); Log.d(TAG, tempBuffer.toString());
return true; return true;
} }
@ -459,43 +464,43 @@ public class PayPresenter {
@Override @Override
public void onConsumeSuccess(@NonNull String purchaseToken, boolean isSelf) { public void onConsumeSuccess(@NonNull String purchaseToken, boolean isSelf) {
Log.d(TAG,"消耗商品成功:$purchaseToken"); Log.d(TAG, "消耗商品成功:$purchaseToken");
} }
@Override @Override
public void onAcknowledgePurchaseSuccess(boolean isSelf) { public void onAcknowledgePurchaseSuccess(boolean isSelf) {
Log.d(TAG,"确认购买商品成功"); Log.d(TAG, "确认购买商品成功");
} }
@Override @Override
public void onFail(@NonNull GoogleBillingUtil.GoogleBillingListenerTag tag, int responseCode, boolean isSelf) { public void onFail(@NonNull GoogleBillingUtil.GoogleBillingListenerTag tag, int responseCode, boolean isSelf) {
Log.d(TAG,"操作失败:tag=${" + tag.name() + "responseCode=" + responseCode); Log.d(TAG, "操作失败:tag=${" + tag.name() + "responseCode=" + responseCode);
} }
@Override @Override
public void onError(@NonNull GoogleBillingUtil.GoogleBillingListenerTag tag, boolean isSelf) { public void onError(@NonNull GoogleBillingUtil.GoogleBillingListenerTag tag, boolean isSelf) {
Log.d(TAG,"发生错误:tag="+tag.name()); Log.d(TAG, "发生错误:tag=" + tag.name());
} }
}; };
private void checkSubs() { private void checkSubs() {
int size = googleBillingUtil.getPurchasesSizeSubs(mActivity); int size = googleBillingUtil.getPurchasesSizeSubs(mActivity);
switch (size){ switch (size) {
case 0: case 0:
//不具备有效订阅 //不具备有效订阅
Log.d(TAG,"有效订阅数:0(无有效订阅)"); Log.d(TAG, "有效订阅数:0(无有效订阅)");
break; break;
case -1: case -1:
//查询失败 //查询失败
Log.d(TAG,"有效订阅数:-1(查询失败)"); Log.d(TAG, "有效订阅数:-1(查询失败)");
break; break;
default: default:
//具有有效订阅 //具有有效订阅
Log.d(TAG,"有效订阅数:$size(具备有效订阅)"); Log.d(TAG, "有效订阅数:$size(具备有效订阅)");
break; break;
} }
} }
@ -504,7 +509,7 @@ public class PayPresenter {
mActivity = null; mActivity = null;
mPayCallback = null; mPayCallback = null;
if (googleBillingUtil != null){ if (googleBillingUtil != null) {
googleBillingUtil.onDestroy(mActivity); googleBillingUtil.onDestroy(mActivity);
//退出程序的时候可以调用(实验性) //退出程序的时候可以调用(实验性)
GoogleBillingUtil.endConnection(); GoogleBillingUtil.endConnection();

View File

@ -80,12 +80,12 @@ public class WxPayBuilder {
// req.sign = sign; // req.sign = sign;
// IWXAPI wxApi = WxApiWrapper.getInstance().getWxApi(); // IWXAPI wxApi = WxApiWrapper.getInstance().getWxApi();
// if (wxApi == null) { // if (wxApi == null) {
// ToastUtil.show(R.string.coin_charge_failed); // ToastUtil.show(mContext.getString(R.string.coin_charge_failed);
// return; // return;
// } // }
// boolean result = wxApi.sendReq(req); // boolean result = wxApi.sendReq(req);
// if (!result) { // if (!result) {
// ToastUtil.show(R.string.coin_charge_failed); // ToastUtil.show(mContext.getString(R.string.coin_charge_failed);
// } // }
} }
} }

View File

@ -0,0 +1,450 @@
package com.yunbao.common.sud;
import android.app.Activity;
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.Toast;
import com.yunbao.common.sud.decorator.SudFSMMGCache;
import com.yunbao.common.sud.decorator.SudFSMMGDecorator;
import com.yunbao.common.sud.decorator.SudFSMMGListener;
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.SudJsonUtils;
import tech.sud.mgp.core.ISudFSMStateHandle;
import tech.sud.mgp.core.ISudFSTAPP;
import tech.sud.mgp.core.ISudListenerInitSDK;
import tech.sud.mgp.core.SudMGP;
/**
* 游戏业务逻辑抽象类
* 1.定自义ViewModel继承此类实现对应方法(注意onAddGameView()与onRemoveGameView()与页面有交互)
* 2.外部调用switchGame()方法启动游戏
* 3.页面销毁时调用onDestroy()
*/
public abstract class BaseGameViewModel implements SudFSMMGListener {
private String gameRoomId; // 游戏房间id
private long playingGameId; // 当前使用的游戏id
public final SudFSTAPPDecorator sudFSTAPPDecorator = new SudFSTAPPDecorator(); // app调用sdk的封装类
private final SudFSMMGDecorator sudFSMMGDecorator = new SudFSMMGDecorator(); // 用于处理游戏SDK部分回调业务
private boolean isRunning = true; // 业务是否还在运行
public View gameView; // 游戏View
public GameConfigModel gameConfigModel = new GameConfigModel(); // 游戏配置
protected final Handler handler = new Handler(Looper.getMainLooper());
/**
* 外部调用切换游戏传不同的gameId即可加载不同的游戏
* gameId传0 等同于关闭游戏
*
* @param activity 游戏所在页面用作于生命周期判断
* @param gameRoomId 游戏房间id房间隔离同一房间才能一起游戏
* @param gameId 游戏id传入不同的游戏id即可加载不同的游戏传0等同于关闭游戏
*/
public void switchGame(Activity activity, String gameRoomId, long gameId) {
if (TextUtils.isEmpty(gameRoomId)) {
Toast.makeText(activity, "gameRoomId can not be empty", Toast.LENGTH_LONG).show();
return;
}
if (!isRunning) {
return;
}
if (playingGameId == gameId && gameRoomId.equals(this.gameRoomId)) {
return;
}
destroyMG();
this.gameRoomId = gameRoomId;
playingGameId = gameId;
login(activity, gameId);
}
/**
* 第1步获取短期令牌code用于换取游戏Server访问APP Server的长期ssToken
* 接入方客户端 调用 接入方服务端 login 获取 短期令牌code
* 参考文档时序图sud-mgp-doc(https://docs.sud.tech/zh-CN/app/Client/StartUp-Android.html)
*
* @param activity 游戏所在页面
* @param gameId 游戏id
*/
private void login(Activity activity, long gameId) {
if (activity.isDestroyed() || gameId <= 0) {
return;
}
// 请求登录code
getCode(activity, getUserId(), getAppId(), new GameGetCodeListener() {
@Override
public void onSuccess(String code) {
if (!isRunning || gameId != playingGameId) {
return;
}
initSdk(activity, gameId, code);
}
@Override
public void onFailed() {
delayLoadGame(activity, gameId);
}
});
}
/**
* 第2步初始化SudMGP sdk
*
* @param activity 游戏所在页面
* @param gameId 游戏id
* @param code 令牌
*/
private void initSdk(Activity activity, long gameId, String code) {
String appId = getAppId();
String appKey = getAppKey();
boolean testEnv = isTestEnv();
// 初始化sdk
SudMGP.initSDK(activity, appId, appKey,testEnv, new ISudListenerInitSDK() {
@Override
public void onSuccess() {
loadGame(activity, code, gameId);
}
@Override
public void onFailure(int errCode, String errMsg) {
// TODO: 2022/6/13 下面toast可以根据业务需要决定是否保留
if (isTestEnv()) {
Toast.makeText(activity, "initSDK onFailure:" + errMsg + "(" + errCode + ")", Toast.LENGTH_LONG).show();
}
delayLoadGame(activity, gameId);
}
});
}
/**
* 第3步加载游戏
* APP和游戏的相互调用
* ISudFSTAPPAPP调用游戏的接口
* ISudFSMMG游戏调APP的响应回调
*
* @param activity 游戏所在页面
* @param code 登录令牌
* @param gameId 游戏id
*/
private void loadGame(Activity activity, String code, long gameId) {
if (activity.isDestroyed() || !isRunning || gameId != playingGameId) {
return;
}
// 给装饰类设置回调
sudFSMMGDecorator.setSudFSMMGListener(this);
// 调用游戏sdk加载游戏
ISudFSTAPP iSudFSTAPP = SudMGP.loadMG(activity, getUserId(), gameRoomId, code, gameId, getLanguageCode(), sudFSMMGDecorator);
// 如果返回空则代表参数问题或者非主线程
if (iSudFSTAPP == null) {
Toast.makeText(activity, "loadMG params error", Toast.LENGTH_LONG).show();
delayLoadGame(activity, gameId);
return;
}
// APP调用游戏接口的装饰类设置
sudFSTAPPDecorator.setISudFSTAPP(iSudFSTAPP);
// 获取游戏视图将其抛回Activity进行展示
// Activity调用gameContainer.addView(view, FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
gameView = iSudFSTAPP.getGameView();
onAddGameView(gameView);
}
/**
* 游戏加载失败的时候延迟一会再重新加载
*
* @param activity 游戏所在页面
* @param gameId 游戏id
*/
private void delayLoadGame(Activity activity, long gameId) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
login(activity, gameId);
}
}, 5000);
}
// region 生命周期相关
/**
* 页面销毁的时候调用
*/
public void onDestroy() {
isRunning = false;
destroyMG();
}
// endregion 生命周期相关
/**
* 销毁游戏
*/
private void destroyMG() {
if (playingGameId > 0) {
sudFSTAPPDecorator.destroyMG();
sudFSMMGDecorator.destroyMG();
playingGameId = 0;
gameView = null;
onRemoveGameView();
}
}
/**
* 获取当前游戏房id
*/
public String getGameRoomId() {
return gameRoomId;
}
// region 子类需要实现的方法
/**
* 向接入方服务器获取code
*/
protected abstract void getCode(Activity activity, String userId, String appId, GameGetCodeListener listener);
/**
* 设置当前用户id(接入方定义)
*
* @return 返回用户id
*/
protected abstract String getUserId();
/**
* 设置游戏所用的appId
*
* @return 返回游戏服务appId
*/
protected abstract String getAppId();
/**
* 设置游戏所用的appKey
*
* @return 返回游戏服务appKey
*/
protected abstract String getAppKey();
/**
* 设置游戏的语言代码
* 参考文档https://docs.sud.tech/zh-CN/app/Client/Languages/
*
* @return 返回语言代码
*/
protected abstract String getLanguageCode();
/**
* 设置游戏的安全操作区域
*
* @param gameViewInfoModel 游戏视图大小
*/
protected abstract void getGameRect(GameViewInfoModel gameViewInfoModel);
/**
* true 加载游戏时为测试环境
* false 加载游戏时为生产环境
*/
protected abstract boolean isTestEnv();
/**
* 将游戏View添加到页面中
*
* @param gameView
*/
protected abstract void onAddGameView(View gameView);
/**
* 将页面中的游戏View移除
*/
protected abstract void onRemoveGameView();
// endregion 子类需要实现的方法
// region 游戏侧回调
/**
* 游戏日志
* 最低版本v1.1.30.xx
*/
@Override
public void onGameLog(String str) {
SudFSMMGListener.super.onGameLog(str);
}
/**
* 游戏开始
* 最低版本v1.1.30.xx
*/
@Override
public void onGameStarted() {
}
/**
* 游戏销毁
* 最低版本v1.1.30.xx
*/
@Override
public void onGameDestroyed() {
}
/**
* Code过期需要实现
* APP接入方需要调用handle.success或handle.fail
*
* @param dataJson {"code":"value"}
*/
@Override
public void onExpireCode(ISudFSMStateHandle handle, String dataJson) {
processOnExpireCode(sudFSTAPPDecorator, handle);
}
/**
* 获取游戏View信息需要实现
* APP接入方需要调用handle.success或handle.fail
*
* @param handle handle
* @param dataJson {}
*/
@Override
public void onGetGameViewInfo(ISudFSMStateHandle handle, String dataJson) {
processOnGetGameViewInfo(gameView, handle);
}
/**
* 获取游戏Config需要实现
* APP接入方需要调用handle.success或handle.fail
*
* @param handle handle
* @param dataJson {}
* 最低版本v1.1.30.xx
*/
@Override
public void onGetGameCfg(ISudFSMStateHandle handle, String dataJson) {
processOnGetGameCfg(handle, dataJson);
}
// endregion 游戏侧回调
/**
* 处理code过期
*/
public void processOnExpireCode(SudFSTAPPDecorator sudFSTAPPDecorator, ISudFSMStateHandle handle) {
// code过期刷新code
getCode(null, getUserId(), getAppId(), new GameGetCodeListener() {
@Override
public void onSuccess(String code) {
if (!isRunning) return;
MGStateResponse mgStateResponse = new MGStateResponse();
mgStateResponse.ret_code = MGStateResponse.SUCCESS;
sudFSTAPPDecorator.updateCode(code, null);
handle.success(SudJsonUtils.toJson(mgStateResponse));
}
@Override
public void onFailed() {
MGStateResponse mgStateResponse = new MGStateResponse();
mgStateResponse.ret_code = -1;
handle.failure(SudJsonUtils.toJson(mgStateResponse));
}
});
}
/**
* 处理游戏视图信息(游戏安全区)
* 文档https://docs.sud.tech/zh-CN/app/Client/API/ISudFSMMG/onGetGameViewInfo.html
*/
public void processOnGetGameViewInfo(View gameView, ISudFSMStateHandle handle) {
//拿到游戏View的宽高
int gameViewWidth = gameView.getMeasuredWidth();
int gameViewHeight = gameView.getMeasuredHeight();
if (gameViewWidth > 0 && gameViewHeight > 0) {
notifyGameViewInfo(handle, gameViewWidth, gameViewHeight);
return;
}
//如果游戏View未加载完成则监听加载完成时回调
gameView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
gameView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
int width = gameView.getMeasuredWidth();
int height = gameView.getMeasuredHeight();
notifyGameViewInfo(handle, width, height);
}
});
}
/**
* 通知游戏游戏视图信息
*/
private void notifyGameViewInfo(ISudFSMStateHandle handle, int gameViewWidth, int gameViewHeight) {
GameViewInfoModel gameViewInfoModel = new GameViewInfoModel();
gameViewInfoModel.ret_code = 0;
// 游戏View大小
gameViewInfoModel.view_size.width = gameViewWidth;
gameViewInfoModel.view_size.height = gameViewHeight;
gameViewInfoModel.view_game_rect.bottom = gameViewHeight / 10;
// 游戏安全操作区域
getGameRect(gameViewInfoModel);
// 给游戏侧进行返回
String json = SudJsonUtils.toJson(gameViewInfoModel);
// 如果设置安全区有疑问可将下面的日志打印出来分析json数据
// 正确的格式为{"ret_code":0,"view_game_rect":{"bottom":156,"left":0,"right":0,"top":196},"view_size":{"height":1920,"width":1080}}
// 如果发生debug版本游戏正常release版本游戏不正常请检查是否混淆了GameViewInfoModel类导致json序列化类的成员发生了变化
// Log.d("SudBaseGameViewModel", "notifyGameViewInfo:" + json);
handle.success(json);
}
public void onPause() {
// playMG和pauseMG要配对
sudFSTAPPDecorator.pauseMG();
}
public void onResume() {
// playMG和pauseMG要配对
sudFSTAPPDecorator.playMG();
}
/**
* 处理游戏配置
* 文档https://docs.sud.tech/zh-CN/app/Client/API/ISudFSMMG/onGetGameCfg.html
*/
public void processOnGetGameCfg(ISudFSMStateHandle handle, String dataJson) {
handle.success(SudJsonUtils.toJson(gameConfigModel));
}
/**
* 游戏login(getCode)监听
*/
public interface GameGetCodeListener {
/**
* 成功
*/
void onSuccess(String code);
/**
* 失败
*/
void onFailed();
}
/**
* 获取游戏状态缓存
*/
public SudFSMMGCache getSudFSMMGCache() {
return sudFSMMGDecorator.getSudFSMMGCache();
}
}

View File

@ -0,0 +1,257 @@
package com.yunbao.common.sud;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import androidx.lifecycle.MutableLiveData;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.SudgameCodeModel;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.sud.model.GameConfigModel;
import com.yunbao.common.sud.model.GameViewInfoModel;
import com.yunbao.common.sud.state.SudMGPMGState;
import java.util.List;
import java.util.Locale;
import tech.sud.mgp.core.ISudFSMMG;
import tech.sud.mgp.core.ISudFSMStateHandle;
/**
* 游戏业务逻辑
* 1.自定义ViewModel继承此类实现对应方法(注意onAddGameView()与onRemoveGameView()与页面有交互)
* 2.外部调用switchGame(activity,gameRoomId,gameId)方法启动游戏参数定义可查看方法注释
* 3.页面销毁时调用onDestroy()
*/
public class QuickStartGameViewModel extends BaseGameViewModel {
/**
* Sud平台申请的appId
*/
public static String SudMGP_APP_ID = "1701178631292395522";
/**
* Sud平台申请的appKey
*/
public static String SudMGP_APP_KEY = "E3Eokfq58ZklwR8fM7iKWYGzarbIOkyh";
/**
* true 加载游戏时为测试环境 false 加载游戏时为生产环境
*/
/**
* 使用的UserId这里随机生成作演示开发者将其修改为业务使用的唯一userId
*/
public static String userId = QuickStartUtils.genUserID(CommonAppContext.sInstance.getApplicationContext());
/**
* 游戏自定义安全操作区域
*/
public GameViewInfoModel.GameViewRectModel gameViewRectModel;
/**
* 游戏的语言代码
*/
public String languageCode = "zh-CN";
public final MutableLiveData<View> gameViewLiveData = new MutableLiveData<>(); // 游戏View回调
/**
* 向接入方服务器获取code
*/
@Override
protected void getCode(Activity activity, String userId, String appId, GameGetCodeListener listener) {
if (IMLoginManager.get(activity).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
languageCode = "zh-CN";
}else {
languageCode = "en-US";
}
// TODO: 2022/6/10 注意这里是演示使用OkHttpClient请求hello-sud服务
// TODO: 2022/6/10 开发者在与后端联调时需将其改成自己的网络请求方式向自己的服务器获取code
LiveNetManager.get(activity)
.getCode(new HttpCallback<List<SudgameCodeModel>>() {
@Override
public void onSuccess(List<SudgameCodeModel> data) {
listener.onSuccess(data.get(0).getCode());
}
@Override
public void onError(String error) {
listener.onFailed();
}
});
// OkHttpClient client = new OkHttpClient();
// String req;
// try {
// JSONObject reqJsonObj = new JSONObject();
// reqJsonObj.put("user_id", userId);
// req = reqJsonObj.toString();
// } catch (Exception e) {
// e.printStackTrace();
// req = "";
// }
//
// RequestBody body = RequestBody.create(req, MediaType.get("application/json; charset=utf-8"));
// Request request = new Request.Builder()
// .url("https://mgp-hello.sudden.ltd/login/v3")
// .post(body)
// .build();
// client.newCall(request).enqueue(new Callback() {
// @Override
// public void onFailure(Call call, IOException e) {
// handler.post(new Runnable() {
// @Override
// public void run() {
// listener.onFailed();
// }
// });
// }
//
// @Override
// public void onResponse(Call call, Response response) {
// try {
// String dataJson = Objects.requireNonNull(response.body()).string();
// JSONObject jsonObject = new JSONObject(dataJson);
// int ret_code = jsonObject.getInt("ret_code");
// JSONObject dataObject = jsonObject.getJSONObject("data");
// String code = dataObject.getString("code");
// handler.post(new Runnable() {
// @Override
// public void run() {
// if (ret_code == MGStateResponse.SUCCESS) {
// listener.onSuccess(code);
// } else {
// listener.onFailed();
// }
// }
// });
// } catch (Exception e) {
// e.printStackTrace();
// handler.post(new Runnable() {
// @Override
// public void run() {
// listener.onFailed();
// }
// });
// }
// }
// });
}
/**
* 设置当前用户id(接入方定义)
*/
@Override
protected String getUserId() {
return userId;
}
/**
* 设置Sud平台申请的appId
*/
@Override
protected String getAppId() {
return SudMGP_APP_ID;
}
/**
* 设置Sud平台申请的appKey
*/
@Override
protected String getAppKey() {
return SudMGP_APP_KEY;
}
/**
* 设置游戏的语言代码
*/
@Override
protected String getLanguageCode() {
return languageCode;
}
/**
* 设置游戏的安全操作区域{@link ISudFSMMG}.onGetGameViewInfo()的实现
* 参考文档https://docs.sud.tech/zh-CN/app/Client/API/ISudFSMMG/onGetGameViewInfo.html
*
* @param gameViewInfoModel 游戏视图模型
*/
@Override
protected void getGameRect(GameViewInfoModel gameViewInfoModel) {
// 相对于view_size边框偏移单位像素
// 开发者可自定义gameViewRectModel来控制安全区域
if (gameViewRectModel != null) {
gameViewInfoModel.view_game_rect = gameViewRectModel;
}
}
/**
* 获取游戏配置对象{@link ISudFSMMG}.onGetGameCfg()的实现
* 参考文档https://docs.sud.tech/zh-CN/app/Client/API/ISudFSMMG/onGetGameCfg.html
* 开发者拿到此对象之后可修改自己需要的配置
* 注意在加载游戏之前配置才有效
*
* @return 游戏配置对象
*/
public GameConfigModel getGameConfigModel() {
return gameConfigModel;
}
/**
* true 加载游戏时为测试环境
* false 加载游戏时为生产环境
*/
@Override
protected boolean isTestEnv() {
return CommonAppConfig.HOST.contains("ceshi");
}
/**
* 将游戏View添加到页面中
*/
@Override
protected void onAddGameView(View gameView) {
gameViewLiveData.setValue(gameView);
}
/**
* 将页面中的游戏View移除
*/
@Override
protected void onRemoveGameView() {
gameViewLiveData.setValue(null);
}
// ************ 上面是基础能力以及必要配置下面讲解状态交互
// ************ 主要有1.App向游戏发送状态2.游戏向App回调状态
/**
* 1.App向游戏发送状态
* 这里演示的是发送1. 加入状态
* 开发者可自由定义方法能发送的状态都封装在{@link SudFSTAPPDecorator}
* 参考文档https://docs.sud.tech/zh-CN/app/Client/APPFST/
* 注意
* 1App向游戏发送状态因为需要走网络所以向游戏发送状态之后不能马上销毁游戏或者finish Activity否则状态无法发送成功
* 2要保证状态能到达可以发送之后delay 500ms再销毁游戏或者finish Activity
*/
public void notifyAPPCommonSelfIn(boolean isIn, int seatIndex, boolean isSeatRandom, int teamId) {
sudFSTAPPDecorator.notifyAPPCommonSelfIn(isIn, seatIndex, isSeatRandom, teamId);
}
/**
* 2.游戏向App回调状态
* 这里演示的是接收游戏回调状态10. 游戏状态 mg_common_game_state
* 游戏回调的每个状态都对应着一个方法方法定义在{@link SudFSMMGListener}
*/
@Override
public void onGameMGCommonGameState(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameState model) {
super.onGameMGCommonGameState(handle, model);
Log.e("QuickStartGameViewModel",model.toString());
}
}

View File

@ -0,0 +1,35 @@
package com.yunbao.common.sud;
import android.content.Context;
import com.yunbao.common.manager.IMLoginManager;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class QuickStartUtils {
/**
* 随机生成一个userId用于演示
*/
public static String genUserID(Context mContext) {
return md5Hex8(String.valueOf(IMLoginManager.get(mContext).getUserInfo().getId()));
}
public static String md5Hex8(String plainText) {
byte[] secretBytes;
try {
secretBytes = MessageDigest.getInstance("md5").digest(plainText.getBytes());
} catch (NoSuchAlgorithmException e) {
return plainText;
}
String md5code = new BigInteger(1, secretBytes).toString(16);
for (int i = 0; i < 32 - md5code.length(); i++) {
md5code = String.format("0%s", md5code);
}
return md5code.substring(8, 16);
}
}

View File

@ -0,0 +1,151 @@
/*
* Copyright © Sud.Tech
* https://sud.tech
*/
package com.yunbao.common.sud.decorator;
import com.yunbao.common.sud.state.SudMGPMGState;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Objects;
/**
* 游戏回调数据缓存
*/
public class SudFSMMGCache {
private String captainUserId; // 记录当前队长的用户id
private SudMGPMGState.MGCommonGameState mgCommonGameStateModel; // 全局游戏状态
private boolean isHitBomb = false; // 是否数字炸弹
private final HashSet<String> playerInSet = new HashSet<>(); // 记录已经加入了游戏的玩家
private final HashSet<String> playerReadySet = new HashSet<>(); // 记录已经准备好的游戏玩家
private final HashMap<String, SudMGPMGState.MGCommonPlayerPlaying> playerPlayingMap = new HashMap<>(); // 记录玩家的游戏状态
// 队长状态 处理
public void onPlayerMGCommonPlayerCaptain(String userId, SudMGPMGState.MGCommonPlayerCaptain model) {
if (model != null) {
if (model.isCaptain) {
captainUserId = userId;
} else {
if (Objects.equals(captainUserId, userId)) {
captainUserId = null;
}
}
}
}
// 游戏状态 处理
public void onGameMGCommonGameState(SudMGPMGState.MGCommonGameState model) {
mgCommonGameStateModel = model;
}
// 玩家加入状态处理
public void onPlayerMGCommonPlayerIn(String userId, SudMGPMGState.MGCommonPlayerIn model) {
if (model != null) {
if (model.isIn) {
playerInSet.add(userId);
} else {
playerInSet.remove(userId);
playerReadySet.remove(userId);
}
}
}
// 玩家准备状态
public void onPlayerMGCommonPlayerReady(String userId, SudMGPMGState.MGCommonPlayerReady model) {
if (model != null) {
if (model.isReady) {
playerReadySet.add(userId);
} else {
playerReadySet.remove(userId);
}
}
}
// 玩家游戏状态
public void onPlayerMGCommonPlayerPlaying(String userId, SudMGPMGState.MGCommonPlayerPlaying model) {
if (model != null) {
playerPlayingMap.put(userId, model);
}
}
// 关键词状态
public void onGameMGCommonKeyWordToHit(SudMGPMGState.MGCommonKeyWordToHit model) {
if (model != null) {
isHitBomb = model.wordType.equals("number");
}
}
// 返回该玩家是否正在游戏中
public boolean playerIsPlaying(String userId) {
SudMGPMGState.MGCommonPlayerPlaying mgCommonPlayerPlaying = playerPlayingMap.get(userId);
if (mgCommonPlayerPlaying != null) {
return mgCommonPlayerPlaying.isPlaying;
}
return false;
}
// 返回该玩家是否已准备
public boolean playerIsReady(String userId) {
return playerReadySet.contains(userId);
}
// 返回该玩家是否已加入了游戏
public boolean playerIsIn(String userId) {
return playerInSet.contains(userId);
}
// 获取当前游戏中的人数
public int getPlayerInNumber() {
return playerInSet.size();
}
// 是否数字炸弹
public boolean isHitBomb() {
return isHitBomb;
}
// 销毁游戏
public void destroyMG() {
captainUserId = null;
mgCommonGameStateModel = null;
isHitBomb = false;
playerInSet.clear();
playerReadySet.clear();
playerPlayingMap.clear();
}
/** 获取队长userId */
public String getCaptainUserId() {
return captainUserId;
}
/** 获取当前已加入游戏的玩家集合 */
public HashSet<String> getPlayerInSet() {
return new HashSet<>(playerInSet);
}
/** 获取当前已准备的玩家集合 */
public HashSet<String> getPlayerReadySet() {
return new HashSet<>(playerReadySet);
}
/** 获取玩家游戏状态集合 */
public HashMap<String, SudMGPMGState.MGCommonPlayerPlaying> getPlayerPlayingMap() {
return new HashMap<>(playerPlayingMap);
}
/**
* 返回当前游戏的状态数值参数{@link SudMGPMGState.MGCommonGameState}
*/
public int getGameState() {
if (mgCommonGameStateModel != null) {
return mgCommonGameStateModel.gameState;
}
return SudMGPMGState.MGCommonGameState.UNKNOW;
}
}

File diff suppressed because it is too large Load Diff

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