Merge branch '6.8.2' into dev_poyo_6.8.3
# Conflicts: # app/src/main/java/com/shayu/phonelive/activity/LauncherActivity.java # app/src/main/res/mipmap-hdpi/ic_launcher.png # app/src/main/res/mipmap-mdpi/ic_launcher.png # app/src/main/res/mipmap-xhdpi/ic_launcher.png # app/src/main/res/mipmap-xxhdpi/ic_launcher.png # app/src/main/res/mipmap-xxxhdpi/ic_launcher.png # app/src/samsung_test/google-services.json # common/src/main/java/com/yunbao/common/utils/MicStatusManager.java # common/src/main/java/com/yunbao/common/utils/RouteUtil.java # common/src/main/res/mipmap-hdpi/face_001.webp # common/src/main/res/mipmap-hdpi/face_002.webp # common/src/main/res/mipmap-hdpi/face_003.webp # common/src/main/res/mipmap-hdpi/face_004.webp # common/src/main/res/mipmap-hdpi/face_005.webp # common/src/main/res/mipmap-hdpi/face_006.webp # common/src/main/res/mipmap-hdpi/face_007.webp # common/src/main/res/mipmap-hdpi/face_008.webp # common/src/main/res/mipmap-hdpi/face_009.webp # common/src/main/res/mipmap-hdpi/face_010.webp # common/src/main/res/mipmap-hdpi/face_011.webp # common/src/main/res/mipmap-hdpi/face_012.webp # common/src/main/res/mipmap-hdpi/face_013.webp # common/src/main/res/mipmap-hdpi/face_014.webp # common/src/main/res/mipmap-hdpi/face_015.webp # common/src/main/res/mipmap-hdpi/face_016.webp # common/src/main/res/mipmap-hdpi/face_017.webp # common/src/main/res/mipmap-hdpi/face_018.webp # common/src/main/res/mipmap-hdpi/face_019.webp # common/src/main/res/mipmap-hdpi/face_020.webp # common/src/main/res/mipmap-hdpi/face_021.webp # common/src/main/res/mipmap-hdpi/face_022.webp # common/src/main/res/mipmap-hdpi/face_023.webp # common/src/main/res/mipmap-hdpi/face_024.webp # common/src/main/res/mipmap-hdpi/face_025.webp # common/src/main/res/mipmap-hdpi/face_026.webp # common/src/main/res/mipmap-hdpi/face_027.webp # common/src/main/res/mipmap-hdpi/face_028.webp # common/src/main/res/mipmap-hdpi/face_029.webp # common/src/main/res/mipmap-hdpi/face_030.webp # common/src/main/res/mipmap-hdpi/face_031.webp # common/src/main/res/mipmap-hdpi/face_032.webp # common/src/main/res/mipmap-hdpi/face_033.webp # common/src/main/res/mipmap-hdpi/face_034.webp # common/src/main/res/mipmap-hdpi/face_035.webp # common/src/main/res/mipmap-hdpi/face_036.webp # common/src/main/res/mipmap-hdpi/face_037.webp # common/src/main/res/mipmap-hdpi/face_038.webp # common/src/main/res/mipmap-hdpi/face_039.webp # common/src/main/res/mipmap-hdpi/face_040.webp # common/src/main/res/mipmap-hdpi/face_041.webp # common/src/main/res/mipmap-hdpi/face_042.webp # common/src/main/res/mipmap-hdpi/face_043.webp # common/src/main/res/mipmap-hdpi/face_044.webp # common/src/main/res/mipmap-hdpi/face_045.webp # common/src/main/res/mipmap-hdpi/face_046.webp # common/src/main/res/mipmap-hdpi/face_047.webp # common/src/main/res/mipmap-hdpi/face_048.webp # common/src/main/res/mipmap-hdpi/face_049.webp # common/src/main/res/mipmap-hdpi/face_050.webp # common/src/main/res/mipmap-hdpi/face_051.webp # common/src/main/res/mipmap-hdpi/face_052.webp # common/src/main/res/mipmap-hdpi/face_053.webp # common/src/main/res/mipmap-hdpi/face_054.webp # common/src/main/res/mipmap-hdpi/face_055.webp # common/src/main/res/mipmap-hdpi/face_056.webp # common/src/main/res/mipmap-hdpi/face_057.webp # common/src/main/res/mipmap-hdpi/face_058.webp # common/src/main/res/mipmap-hdpi/face_059.webp # common/src/main/res/mipmap-hdpi/face_060.webp # common/src/main/res/mipmap-hdpi/face_061.webp # common/src/main/res/mipmap-hdpi/face_062.webp # common/src/main/res/mipmap-hdpi/face_063.webp # common/src/main/res/mipmap-hdpi/face_064.webp # common/src/main/res/mipmap-hdpi/face_065.webp # common/src/main/res/mipmap-hdpi/face_066.webp # common/src/main/res/mipmap-hdpi/face_067.webp # common/src/main/res/mipmap-hdpi/face_068.webp # common/src/main/res/mipmap-hdpi/face_069.webp # common/src/main/res/mipmap-hdpi/face_070.webp # common/src/main/res/mipmap-hdpi/face_071.webp # common/src/main/res/mipmap-hdpi/face_072.webp # common/src/main/res/mipmap-hdpi/face_073.webp # common/src/main/res/mipmap-hdpi/face_074.webp # common/src/main/res/mipmap-hdpi/face_075.webp # common/src/main/res/mipmap-hdpi/face_076.webp # common/src/main/res/mipmap-hdpi/face_077.webp # common/src/main/res/mipmap-hdpi/face_078.webp # common/src/main/res/mipmap-hdpi/face_079.webp # common/src/main/res/mipmap-hdpi/face_080.webp # common/src/main/res/mipmap-hdpi/face_081.webp # common/src/main/res/mipmap-hdpi/face_082.webp # common/src/main/res/mipmap-hdpi/face_083.webp # common/src/main/res/mipmap-hdpi/face_084.webp # common/src/main/res/mipmap-hdpi/face_085.webp # common/src/main/res/mipmap-hdpi/face_086.webp # common/src/main/res/mipmap-hdpi/face_087.webp # common/src/main/res/mipmap-hdpi/face_088.webp # common/src/main/res/mipmap-hdpi/face_089.webp # common/src/main/res/mipmap-hdpi/face_090.webp # common/src/main/res/mipmap-hdpi/face_091.webp # common/src/main/res/mipmap-hdpi/face_092.webp # common/src/main/res/mipmap-hdpi/face_093.webp # common/src/main/res/mipmap-hdpi/face_094.webp # common/src/main/res/mipmap-hdpi/face_095.webp # common/src/main/res/mipmap-hdpi/face_096.webp # common/src/main/res/mipmap-hdpi/face_097.webp # common/src/main/res/mipmap-hdpi/face_098.webp # common/src/main/res/mipmap-hdpi/face_099.webp # common/src/main/res/mipmap-hdpi/face_100.webp # common/src/main/res/mipmap-hdpi/face_101.webp # common/src/main/res/mipmap-hdpi/face_102.webp # common/src/main/res/mipmap-hdpi/face_103.webp # common/src/main/res/mipmap-hdpi/icon_microphone.webp # common/src/main/res/mipmap-hdpi/icon_pd_pao.webp # common/src/main/res/mipmap-xhdpi/sub_1.webp # common/src/main/res/mipmap-xhdpi/sub_2.webp # common/src/main/res/mipmap-xhdpi/sub_3.webp # common/src/main/res/mipmap-xhdpi/sub_again_en.webp # common/src/main/res/mipmap-xhdpi/sub_again_zh.webp # common/src/main/res/mipmap-xhdpi/sub_bg.webp # common/src/main/res/mipmap-xhdpi/sub_bg2.webp # common/src/main/res/mipmap-xhdpi/sub_draw_en.webp # common/src/main/res/mipmap-xhdpi/sub_draw_zh.webp # common/src/main/res/mipmap-xhdpi/sub_leave_en.webp # common/src/main/res/mipmap-xhdpi/sub_leave_zh.webp # common/src/main/res/mipmap-xhdpi/sub_loss_en.webp # common/src/main/res/mipmap-xhdpi/sub_loss_zh.webp # common/src/main/res/mipmap-xhdpi/sub_over_en.webp # common/src/main/res/mipmap-xhdpi/sub_over_zh.webp # common/src/main/res/mipmap-xhdpi/sub_vs.webp # common/src/main/res/mipmap-xhdpi/sub_win_en.webp # common/src/main/res/mipmap-xhdpi/sub_win_hat.webp # common/src/main/res/mipmap-xhdpi/sub_win_zh.webp # common/src/main/res/mipmap-xhdpi/sud_load_bg_double.webp # common/src/main/res/mipmap-xhdpi/sud_load_bg_multiple.webp # common/src/main/res/mipmap-xhdpi/sud_load_double.webp # common/src/main/res/mipmap-xhdpi/sud_load_en.webp # common/src/main/res/mipmap-xhdpi/sud_load_multiple.webp # common/src/main/res/mipmap-xhdpi/sud_load_skip_en.webp # common/src/main/res/mipmap-xhdpi/sud_load_skip_zh.webp # common/src/main/res/mipmap-xhdpi/sud_load_zh.webp # common/src/main/res/mipmap-xxhdpi/back_slice_367.webp # common/src/main/res/mipmap-xxhdpi/backgroud_sud_game_small_window.webp # common/src/main/res/mipmap-xxhdpi/background_all_server_notify_god_zh.webp # common/src/main/res/mipmap-xxhdpi/background_all_server_notify_king_en.webp # common/src/main/res/mipmap-xxhdpi/background_all_server_notify_king_zh.webp # common/src/main/res/mipmap-xxhdpi/background_all_server_notify_sgod_en.webp # common/src/main/res/mipmap-xxhdpi/background_all_server_notify_star_en.webp # common/src/main/res/mipmap-xxhdpi/background_all_server_notify_star_zh.webp # common/src/main/res/mipmap-xxhdpi/background_dragon_rule.webp # common/src/main/res/mipmap-xxhdpi/background_dragon_sends_money.webp # common/src/main/res/mipmap-xxhdpi/background_gift_already_wall.webp # common/src/main/res/mipmap-xxhdpi/background_gift_wall.webp # common/src/main/res/mipmap-xxhdpi/background_gift_wall_item.webp # common/src/main/res/mipmap-xxhdpi/background_gift_wall_lock.webp # common/src/main/res/mipmap-xxhdpi/background_gift_wall_masking.webp # common/src/main/res/mipmap-xxhdpi/background_gift_without_wall.webp # common/src/main/res/mipmap-xxhdpi/background_guard_upgrade.webp # common/src/main/res/mipmap-xxhdpi/background_guarding_the_anchor.webp # common/src/main/res/mipmap-xxhdpi/background_home_sud_game_list.webp # common/src/main/res/mipmap-xxhdpi/background_live_gift_gift_itle.webp # common/src/main/res/mipmap-xxhdpi/background_medal_achievement.webp # common/src/main/res/mipmap-xxhdpi/background_quick_gift_reminder.webp # common/src/main/res/mipmap-xxhdpi/background_sud_game_float.webp # common/src/main/res/mipmap-xxhdpi/background_sud_game_list.webp # common/src/main/res/mipmap-xxhdpi/background_sud_history.webp # common/src/main/res/mipmap-xxhdpi/background_view_dragon_send_money_list.webp # common/src/main/res/mipmap-xxhdpi/background_wish_item.webp # common/src/main/res/mipmap-xxhdpi/bg_blind_bottom.webp # common/src/main/res/mipmap-xxhdpi/bg_day_wish.webp # common/src/main/res/mipmap-xxhdpi/bg_dialog_battlepass_btn.webp # common/src/main/res/mipmap-xxhdpi/bg_dialog_battlepass_exchange.webp # common/src/main/res/mipmap-xxhdpi/bg_dialog_gift_wall_main_tab1_tips.webp # common/src/main/res/mipmap-xxhdpi/bg_float_red_packet.webp # common/src/main/res/mipmap-xxhdpi/bg_game_list_activity_top.webp # common/src/main/res/mipmap-xxhdpi/bg_gift_completely.webp # common/src/main/res/mipmap-xxhdpi/bg_gift_wall_main_achievement.webp # common/src/main/res/mipmap-xxhdpi/bg_gift_wall_main_root.webp # common/src/main/res/mipmap-xxhdpi/bg_gift_wall_main_root2.webp # common/src/main/res/mipmap-xxhdpi/bg_live_sign.webp # common/src/main/res/mipmap-xxhdpi/bg_live_sud_game_back_new2.webp # common/src/main/res/mipmap-xxhdpi/bg_lunar_wish.webp # common/src/main/res/mipmap-xxhdpi/bg_lwhqz.webp # common/src/main/res/mipmap-xxhdpi/bg_main_item_bottom.webp # common/src/main/res/mipmap-xxhdpi/bg_seasonal_wish.webp # common/src/main/res/mipmap-xxhdpi/bg_trickery_top.webp # common/src/main/res/mipmap-xxhdpi/bg_xyd_button.webp # common/src/main/res/mipmap-xxhdpi/bg_zg.webp # common/src/main/res/mipmap-xxhdpi/btn_god_guard.webp # common/src/main/res/mipmap-xxhdpi/btn_god_guard_onlookers.webp # common/src/main/res/mipmap-xxhdpi/btn_golive.webp # common/src/main/res/mipmap-xxhdpi/btn_icon_quit.webp # common/src/main/res/mipmap-xxhdpi/btn_king_guard.webp # common/src/main/res/mipmap-xxhdpi/btn_king_guard_onlookers.webp # common/src/main/res/mipmap-xxhdpi/btn_more_black.webp # common/src/main/res/mipmap-xxhdpi/btn_star_guard.webp # common/src/main/res/mipmap-xxhdpi/btn_star_guard_onlookers.webp # common/src/main/res/mipmap-xxhdpi/button_buying_experience.webp # common/src/main/res/mipmap-xxhdpi/button_enjoy.webp # common/src/main/res/mipmap-xxhdpi/button_liberal_battle_cancel.webp # common/src/main/res/mipmap-xxhdpi/button_liberal_battle_sure.webp # common/src/main/res/mipmap-xxhdpi/button_quintessence.webp # common/src/main/res/mipmap-xxhdpi/button_war_order.webp # common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve.webp # common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve_top_bg.webp # common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve_top_icon.webp # common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve_wear_bg.webp # common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve_wear_cancel.webp # common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve_wear_item_bg.webp # common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve_wear_item_unlock.webp # common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_back.webp # common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_more.webp # common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_tab2_list2_bg.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_gift_info_bg.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_gift_info_botton.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_gift_info_light.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_gift_info_list_time.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_hide.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_main_item_bg.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_main_item_bg1.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_main_item_select.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_main_item_select1.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_main_item_unselect.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_main_item_unselect1.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_main_list_bottom.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_main_list_top.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_main_tab1_down_bg.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_main_tab1_down_ic.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_avatar1.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_avatar2.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_bg.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_bg_one.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_bg_three.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_bg_two.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_one.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_star.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_three.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_tips.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_twwo.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_item_bg1.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_item_bg2.webp # common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_item_icon1.webp # common/src/main/res/mipmap-xxhdpi/guard_buy_tips_cancel_bg.webp # common/src/main/res/mipmap-xxhdpi/ic_custom_share.webp # common/src/main/res/mipmap-xxhdpi/ic_game_activity_rank_coin.webp # common/src/main/res/mipmap-xxhdpi/ic_game_ticket.webp # common/src/main/res/mipmap-xxhdpi/ic_gift_wall_time.webp # common/src/main/res/mipmap-xxhdpi/ic_gift_wall_time2.webp # common/src/main/res/mipmap-xxhdpi/ic_home_game_search.webp # common/src/main/res/mipmap-xxhdpi/ic_integral.webp # common/src/main/res/mipmap-xxhdpi/ic_live_fun_anchor_letter.webp # common/src/main/res/mipmap-xxhdpi/ic_live_fun_anchor_say.webp # common/src/main/res/mipmap-xxhdpi/ic_prank_gift_add_gift_to.webp # common/src/main/res/mipmap-xxhdpi/ic_prank_gift_del.webp # common/src/main/res/mipmap-xxhdpi/ic_prank_gift_switch.webp # common/src/main/res/mipmap-xxhdpi/ic_zl_rule.webp # common/src/main/res/mipmap-xxhdpi/icon_012x.webp # common/src/main/res/mipmap-xxhdpi/icon_013x.webp # common/src/main/res/mipmap-xxhdpi/icon_022x.webp # common/src/main/res/mipmap-xxhdpi/icon_032x.webp # common/src/main/res/mipmap-xxhdpi/icon_042x.webp # common/src/main/res/mipmap-xxhdpi/icon_052x.webp # common/src/main/res/mipmap-xxhdpi/icon_activate_the_elite_battle_order.webp # common/src/main/res/mipmap-xxhdpi/icon_aristocrat_tip.webp # common/src/main/res/mipmap-xxhdpi/icon_attention_noanchor.webp # common/src/main/res/mipmap-xxhdpi/icon_bfsz.webp # common/src/main/res/mipmap-xxhdpi/icon_bg_king_guard_open.webp # common/src/main/res/mipmap-xxhdpi/icon_bg_star_guard_open.webp # common/src/main/res/mipmap-xxhdpi/icon_cancel.webp # common/src/main/res/mipmap-xxhdpi/icon_change.webp # common/src/main/res/mipmap-xxhdpi/icon_close.webp # common/src/main/res/mipmap-xxhdpi/icon_close_tip.webp # common/src/main/res/mipmap-xxhdpi/icon_collectibles.webp # common/src/main/res/mipmap-xxhdpi/icon_combo.webp # common/src/main/res/mipmap-xxhdpi/icon_create_sud_game.webp # common/src/main/res/mipmap-xxhdpi/icon_cry_face.webp # common/src/main/res/mipmap-xxhdpi/icon_diamond.webp # common/src/main/res/mipmap-xxhdpi/icon_diamond2.webp # common/src/main/res/mipmap-xxhdpi/icon_dragon_close.webp # common/src/main/res/mipmap-xxhdpi/icon_dragon_rule.webp # common/src/main/res/mipmap-xxhdpi/icon_empty_parcel.webp # common/src/main/res/mipmap-xxhdpi/icon_enjoy_image.webp # common/src/main/res/mipmap-xxhdpi/icon_established_nobility.webp # common/src/main/res/mipmap-xxhdpi/icon_female_default.webp # common/src/main/res/mipmap-xxhdpi/icon_female_highlight.webp # common/src/main/res/mipmap-xxhdpi/icon_fhd.webp # common/src/main/res/mipmap-xxhdpi/icon_game_close_wheat.webp # common/src/main/res/mipmap-xxhdpi/icon_game_close_wheat_mute.webp # common/src/main/res/mipmap-xxhdpi/icon_game_hang_up.webp # common/src/main/res/mipmap-xxhdpi/icon_game_hang_up_en.webp # common/src/main/res/mipmap-xxhdpi/icon_game_open_wheat.webp # common/src/main/res/mipmap-xxhdpi/icon_game_review_input.webp # common/src/main/res/mipmap-xxhdpi/icon_game_seat.webp # common/src/main/res/mipmap-xxhdpi/icon_game_seat_en.webp # common/src/main/res/mipmap-xxhdpi/icon_game_status.webp # common/src/main/res/mipmap-xxhdpi/icon_general_message.webp # common/src/main/res/mipmap-xxhdpi/icon_general_message_p.webp # common/src/main/res/mipmap-xxhdpi/icon_gift_wall.webp # common/src/main/res/mipmap-xxhdpi/icon_gift_wall_main_switch_full.webp # common/src/main/res/mipmap-xxhdpi/icon_gift_wall_main_switch_main.webp # common/src/main/res/mipmap-xxhdpi/icon_gift_wall_main_tips.webp # common/src/main/res/mipmap-xxhdpi/icon_gift_wall_main_tips2.webp # common/src/main/res/mipmap-xxhdpi/icon_god_guard_open.webp # common/src/main/res/mipmap-xxhdpi/icon_grade_angle_mark.webp # common/src/main/res/mipmap-xxhdpi/icon_guard_rule.webp # common/src/main/res/mipmap-xxhdpi/icon_guardian_task.webp # common/src/main/res/mipmap-xxhdpi/icon_hd.webp # common/src/main/res/mipmap-xxhdpi/icon_home_interactive_game_add.webp # common/src/main/res/mipmap-xxhdpi/icon_home_interactive_game_arrow.webp # common/src/main/res/mipmap-xxhdpi/icon_home_interactive_game_ranking.webp # common/src/main/res/mipmap-xxhdpi/icon_home_interactive_game_search.webp # common/src/main/res/mipmap-xxhdpi/icon_horizontally.webp # common/src/main/res/mipmap-xxhdpi/icon_interactive_game__add.webp # common/src/main/res/mipmap-xxhdpi/icon_interactive_game__ranking.webp # common/src/main/res/mipmap-xxhdpi/icon_interactive_game__search.webp # common/src/main/res/mipmap-xxhdpi/icon_interactive_game_arrow.webp # common/src/main/res/mipmap-xxhdpi/icon_interactive_game_create_room_back.webp # common/src/main/res/mipmap-xxhdpi/icon_interactive_game_create_room_seats.webp # common/src/main/res/mipmap-xxhdpi/icon_interactive_game_room_random_start.webp # common/src/main/res/mipmap-xxhdpi/icon_leave_p.webp # common/src/main/res/mipmap-xxhdpi/icon_live.webp # common/src/main/res/mipmap-xxhdpi/icon_live_dragon_money.webp # common/src/main/res/mipmap-xxhdpi/icon_live_gift_2.webp # common/src/main/res/mipmap-xxhdpi/icon_live_gift_gift_itle.webp # common/src/main/res/mipmap-xxhdpi/icon_live_gift_gift_itle_en.webp # common/src/main/res/mipmap-xxhdpi/icon_live_random_pk.webp # common/src/main/res/mipmap-xxhdpi/icon_live_type_normal_1.webp # common/src/main/res/mipmap-xxhdpi/icon_live_type_normal_2.webp # common/src/main/res/mipmap-xxhdpi/icon_live_type_pay_1.webp # common/src/main/res/mipmap-xxhdpi/icon_live_type_pay_2.webp # common/src/main/res/mipmap-xxhdpi/icon_live_type_pwd_1.webp # common/src/main/res/mipmap-xxhdpi/icon_live_type_pwd_2.webp # common/src/main/res/mipmap-xxhdpi/icon_live_type_time_1.webp # common/src/main/res/mipmap-xxhdpi/icon_live_type_time_2.webp # common/src/main/res/mipmap-xxhdpi/icon_love.webp # common/src/main/res/mipmap-xxhdpi/icon_love_message.webp # common/src/main/res/mipmap-xxhdpi/icon_male_default.webp # common/src/main/res/mipmap-xxhdpi/icon_male_highlighted.webp # common/src/main/res/mipmap-xxhdpi/icon_message_copy.webp # common/src/main/res/mipmap-xxhdpi/icon_message_quote.webp # common/src/main/res/mipmap-xxhdpi/icon_message_withdraw.webp # common/src/main/res/mipmap-xxhdpi/icon_min_game.webp # common/src/main/res/mipmap-xxhdpi/icon_min_game_new.webp # common/src/main/res/mipmap-xxhdpi/icon_more.webp # common/src/main/res/mipmap-xxhdpi/icon_more_01.webp # common/src/main/res/mipmap-xxhdpi/icon_more_02.webp # common/src/main/res/mipmap-xxhdpi/icon_more_down.webp # common/src/main/res/mipmap-xxhdpi/icon_more_open.webp # common/src/main/res/mipmap-xxhdpi/icon_more_up.webp # common/src/main/res/mipmap-xxhdpi/icon_new_game.webp # common/src/main/res/mipmap-xxhdpi/icon_open_chaohuang.webp # common/src/main/res/mipmap-xxhdpi/icon_open_gongjue.webp # common/src/main/res/mipmap-xxhdpi/icon_open_guowang.webp # common/src/main/res/mipmap-xxhdpi/icon_open_houjue.webp # common/src/main/res/mipmap-xxhdpi/icon_open_huangdi.webp # common/src/main/res/mipmap-xxhdpi/icon_open_nanjue.webp # common/src/main/res/mipmap-xxhdpi/icon_open_zijue.webp # common/src/main/res/mipmap-xxhdpi/icon_order_rule.webp # common/src/main/res/mipmap-xxhdpi/icon_order_rule_close.webp # common/src/main/res/mipmap-xxhdpi/icon_order_score.webp # common/src/main/res/mipmap-xxhdpi/icon_participate.webp # common/src/main/res/mipmap-xxhdpi/icon_popup_screen.webp # common/src/main/res/mipmap-xxhdpi/icon_popup_screen_p.webp # common/src/main/res/mipmap-xxhdpi/icon_protocol_check.webp # common/src/main/res/mipmap-xxhdpi/icon_protocol_uncheck.webp # common/src/main/res/mipmap-xxhdpi/icon_red_packet_float_text_en.webp # common/src/main/res/mipmap-xxhdpi/icon_red_packet_float_text_zh.webp # common/src/main/res/mipmap-xxhdpi/icon_regular_black.webp # common/src/main/res/mipmap-xxhdpi/icon_right.webp # common/src/main/res/mipmap-xxhdpi/icon_robot.webp # common/src/main/res/mipmap-xxhdpi/icon_sd.webp # common/src/main/res/mipmap-xxhdpi/icon_selected.webp # common/src/main/res/mipmap-xxhdpi/icon_send_benefits.webp # common/src/main/res/mipmap-xxhdpi/icon_send_game.webp # common/src/main/res/mipmap-xxhdpi/icon_sex_man.webp # common/src/main/res/mipmap-xxhdpi/icon_sex_woman.webp # common/src/main/res/mipmap-xxhdpi/icon_slice_368.webp # common/src/main/res/mipmap-xxhdpi/icon_smiling_face.webp # common/src/main/res/mipmap-xxhdpi/icon_ssssbbbbbsd.webp # common/src/main/res/mipmap-xxhdpi/icon_star_guardian_medal_grey.webp # common/src/main/res/mipmap-xxhdpi/icon_start.webp # common/src/main/res/mipmap-xxhdpi/icon_start_number.webp # common/src/main/res/mipmap-xxhdpi/icon_sud_game_min.webp # common/src/main/res/mipmap-xxhdpi/icon_sud_history.webp # common/src/main/res/mipmap-xxhdpi/icon_sud_history_back.webp # common/src/main/res/mipmap-xxhdpi/icon_sud_history_live.webp # common/src/main/res/mipmap-xxhdpi/icon_sud_history_live2.webp # common/src/main/res/mipmap-xxhdpi/icon_sud_history_live_new.webp # common/src/main/res/mipmap-xxhdpi/icon_sud_no_data.webp # common/src/main/res/mipmap-xxhdpi/icon_sud_rule.webp # common/src/main/res/mipmap-xxhdpi/icon_sud_rule_bottom.webp # common/src/main/res/mipmap-xxhdpi/icon_sud_rule_close.webp # common/src/main/res/mipmap-xxhdpi/icon_sud_rule_close_bottom.webp # common/src/main/res/mipmap-xxhdpi/icon_tip.webp # common/src/main/res/mipmap-xxhdpi/icon_user_card_t1.webp # common/src/main/res/mipmap-xxhdpi/icon_user_card_t2.webp # common/src/main/res/mipmap-xxhdpi/icon_user_game_living.webp # common/src/main/res/mipmap-xxhdpi/icon_user_home_edit.webp # common/src/main/res/mipmap-xxhdpi/icon_vacancy_sud_game.webp # common/src/main/res/mipmap-xxhdpi/icon_vacant_position_awaits.webp # common/src/main/res/mipmap-xxhdpi/icon_voice.webp # common/src/main/res/mipmap-xxhdpi/icon_war_order_diamond.webp # common/src/main/res/mipmap-xxhdpi/icon_war_order_gift.webp # common/src/main/res/mipmap-xxhdpi/icon_weekstar.webp # common/src/main/res/mipmap-xxhdpi/icon_what.webp # common/src/main/res/mipmap-xxhdpi/icon_wish_anchor.webp # common/src/main/res/mipmap-xxhdpi/icon_wish_live.webp # common/src/main/res/mipmap-xxhdpi/icon_withdraw.webp # common/src/main/res/mipmap-xxhdpi/icon_world_horn.webp # common/src/main/res/mipmap-xxhdpi/icon_world_horn_p.webp # common/src/main/res/mipmap-xxhdpi/icon_xinyuandan.webp # common/src/main/res/mipmap-xxhdpi/icon_zhenggu.webp # common/src/main/res/mipmap-xxhdpi/img_aristocrat_chaohuang.webp # common/src/main/res/mipmap-xxhdpi/img_aristocrat_gongjue.webp # common/src/main/res/mipmap-xxhdpi/img_aristocrat_guowang.webp # common/src/main/res/mipmap-xxhdpi/img_aristocrat_houjue.webp # common/src/main/res/mipmap-xxhdpi/img_aristocrat_huangdi.webp # common/src/main/res/mipmap-xxhdpi/img_aristocrat_nanjue.webp # common/src/main/res/mipmap-xxhdpi/img_aristocrat_notopen.webp # common/src/main/res/mipmap-xxhdpi/img_aristocrat_zijue.webp # common/src/main/res/mipmap-xxhdpi/img_chaohuang.webp # common/src/main/res/mipmap-xxhdpi/img_fans_default.webp # common/src/main/res/mipmap-xxhdpi/img_honor_default.webp # common/src/main/res/mipmap-xxhdpi/img_huangdi.webp # common/src/main/res/mipmap-xxhdpi/img_lu_bg.webp # common/src/main/res/mipmap-xxhdpi/img_mess.webp # common/src/main/res/mipmap-xxhdpi/img_no_anchor.webp # common/src/main/res/mipmap-xxhdpi/img_no_anchor0.webp # common/src/main/res/mipmap-xxhdpi/imng_guowang.webp # common/src/main/res/mipmap-xxhdpi/live_bg.webp # common/src/main/res/mipmap-xxhdpi/live_dialog_top_game_icon.webp # common/src/main/res/mipmap-xxhdpi/live_icon_data.webp # common/src/main/res/mipmap-xxhdpi/live_icon_news.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_aristocrat.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_connect.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_connect_new.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_events.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_fans.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_fenestrule.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_fenestrule_new.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_guard.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_hd.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_moods.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_report.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_robot.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_service.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_sliding_new.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_special.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_special_new.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_system.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_task.webp # common/src/main/res/mipmap-xxhdpi/live_more_icon_zhouxinglist.webp # common/src/main/res/mipmap-xxhdpi/loading.webp # common/src/main/res/mipmap-xxhdpi/special_icon_off.webp # common/src/main/res/mipmap-xxhdpi/special_icon_on.webp # common/src/main/res/mipmap-xxhdpi/start_level.webp # common/src/main/res/mipmap-xxhdpi/sub_1.webp # common/src/main/res/mipmap-xxhdpi/sub_2.webp # common/src/main/res/mipmap-xxhdpi/sub_3.webp # common/src/main/res/mipmap-xxhdpi/sub_again_en.webp # common/src/main/res/mipmap-xxhdpi/sub_again_zh.webp # common/src/main/res/mipmap-xxhdpi/sub_bg.webp # common/src/main/res/mipmap-xxhdpi/sub_bg2.webp # common/src/main/res/mipmap-xxhdpi/sub_draw_en.webp # common/src/main/res/mipmap-xxhdpi/sub_draw_zh.webp # common/src/main/res/mipmap-xxhdpi/sub_leave_en.webp # common/src/main/res/mipmap-xxhdpi/sub_leave_zh.webp # common/src/main/res/mipmap-xxhdpi/sub_loss_en.webp # common/src/main/res/mipmap-xxhdpi/sub_loss_zh.webp # common/src/main/res/mipmap-xxhdpi/sub_over_en.webp # common/src/main/res/mipmap-xxhdpi/sub_over_zh.webp # common/src/main/res/mipmap-xxhdpi/sub_vs.webp # common/src/main/res/mipmap-xxhdpi/sub_win_en.webp # common/src/main/res/mipmap-xxhdpi/sub_win_hat.webp # common/src/main/res/mipmap-xxhdpi/sub_win_zh.webp # common/src/main/res/mipmap-xxhdpi/sud_load_bg_double.webp # common/src/main/res/mipmap-xxhdpi/sud_load_bg_multiple.webp # common/src/main/res/mipmap-xxhdpi/sud_load_double.webp # common/src/main/res/mipmap-xxhdpi/sud_load_en.webp # common/src/main/res/mipmap-xxhdpi/sud_load_multiple.webp # common/src/main/res/mipmap-xxhdpi/sud_load_skip_en.webp # common/src/main/res/mipmap-xxhdpi/sud_load_skip_zh.webp # common/src/main/res/mipmap-xxhdpi/sud_load_zh.webp # common/src/main/res/mipmap-xxhdpi/tab_recommend.webp # common/src/main/res/mipmap-xxhdpi/tequan_1.webp # common/src/main/res/mipmap-xxhdpi/tip_box.webp # common/src/main/res/mipmap-xxhdpi/top_zhidao_bg.webp # common/src/main/res/mipmap-xxhdpi/update_tip_box.webp # common/src/main/res/mipmap-xxxhdpi/backgroud_tickets_plus_minus.webp # common/src/main/res/mipmap-xxxhdpi/background_cinema_ticket.webp # common/src/main/res/mipmap-xxxhdpi/backgroundn_cinema_ticket_exchange.webp # common/src/main/res/mipmap-xxxhdpi/bg_main_home_sub_game.webp # common/src/main/res/mipmap-xxxhdpi/icon_cinema_ticket.webp # common/src/main/res/mipmap-xxxhdpi/icon_cinema_ticket_close.webp # common/src/main/res/mipmap-xxxhdpi/icon_cinema_ticket_title.webp # common/src/main/res/mipmap-xxxhdpi/icon_collectibles2.webp # common/src/main/res/mipmap-xxxhdpi/iconlive_tool_game.webp # common/src/main/res/mipmap-zh/background_quick_gift_reminder.webp # common/src/main/res/mipmap-zh/backgroundn_cinema_ticket_exchange.webp # common/src/main/res/mipmap-zh/bg_xyd_button.webp # common/src/main/res/mipmap-zh/dialog_gift_wall_achieve_top_icon.webp # common/src/main/res/mipmap-zh/gift_wall_tab2_classic_info_tips.webp # common/src/main/res/mipmap-zh/ic_guard_not.webp # common/src/main/res/mipmap-zh/icon_activate_the_elite_battle_order.webp # common/src/main/res/mipmap-zh/icon_cinema_ticket_title.webp # common/src/main/res/mipmap-zh/icon_enjoy_image.webp # common/src/main/res/mipmap-zh/icon_order_rule.webp # common/src/main/res/mipmap-zh/icon_user_game_living.webp # common/src/main/res/values-zh/strings.xml # common/src/main/res/values/colors.xml # common/src/main/res/values/strings.xml # config.gradle # live/src/main/java/com/yunbao/live/activity/LiveReportActivity.java # live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java # live/src/main/java/com/yunbao/live/http/ImHttpUtil.java # live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java # live/src/main/java/com/yunbao/live/socket/SocketRyClient.java # live/src/main/java/com/yunbao/live/socket/SocketRyLinkMicPkUtil.java # live/src/main/java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java # live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java # live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java # live/src/main/res/drawable/guard_buy_center_bg.webp # live/src/main/res/drawable/guard_buy_top_bg.webp # live/src/main/res/mipmap-mdpi/address_choice.webp # live/src/main/res/mipmap-mdpi/annual_bg.webp # live/src/main/res/mipmap-mdpi/backdrop_luck.webp # live/src/main/res/mipmap-mdpi/beauty_jingbai.webp # live/src/main/res/mipmap-mdpi/beauty_keai.webp # live/src/main/res/mipmap-mdpi/beauty_nvshen.webp # live/src/main/res/mipmap-mdpi/beauty_ziran.webp # live/src/main/res/mipmap-mdpi/bg_chat_active.webp # live/src/main/res/mipmap-mdpi/bg_dragon_notify.webp # live/src/main/res/mipmap-mdpi/bg_gift_list.webp # live/src/main/res/mipmap-mdpi/bg_guard_buy_top_1.webp # live/src/main/res/mipmap-mdpi/bg_guard_buy_top_2.webp # live/src/main/res/mipmap-mdpi/bg_kirin_notify.webp # live/src/main/res/mipmap-mdpi/bg_phoenix_notify.webp # live/src/main/res/mipmap-mdpi/bg_pk_black_bg.webp # live/src/main/res/mipmap-mdpi/bg_time_box.webp # live/src/main/res/mipmap-mdpi/bg_wishlist_audience.webp # live/src/main/res/mipmap-mdpi/bixin.webp # live/src/main/res/mipmap-mdpi/box.webp # live/src/main/res/mipmap-mdpi/bright_eyes.webp # live/src/main/res/mipmap-mdpi/btn_big_blue.webp # live/src/main/res/mipmap-mdpi/btn_joinfans.webp # live/src/main/res/mipmap-mdpi/btn_login.webp # live/src/main/res/mipmap-mdpi/btn_openprotection.webp # live/src/main/res/mipmap-mdpi/btn_openvip.webp # live/src/main/res/mipmap-mdpi/btn_purple.webp # live/src/main/res/mipmap-mdpi/btn_reg.webp # live/src/main/res/mipmap-mdpi/btn_white.webp # live/src/main/res/mipmap-mdpi/chin.webp # live/src/main/res/mipmap-mdpi/day_list_no_1.webp # live/src/main/res/mipmap-mdpi/day_list_no_2.webp # live/src/main/res/mipmap-mdpi/day_list_no_3.webp # live/src/main/res/mipmap-mdpi/filter_baixixx.webp # live/src/main/res/mipmap-mdpi/filter_fugu.webp # live/src/main/res/mipmap-mdpi/filter_heibai.webp # live/src/main/res/mipmap-mdpi/filter_huaxiang.webp # live/src/main/res/mipmap-mdpi/filter_mingliang.webp # live/src/main/res/mipmap-mdpi/filter_nuanguang.webp # live/src/main/res/mipmap-mdpi/filter_qingyang.webp # live/src/main/res/mipmap-mdpi/filter_rii.webp # live/src/main/res/mipmap-mdpi/filter_rouhe.webp # live/src/main/res/mipmap-mdpi/filter_shenhai.webp # live/src/main/res/mipmap-mdpi/filter_xianming.webp # live/src/main/res/mipmap-mdpi/filter_xiyang.webp # live/src/main/res/mipmap-mdpi/filter_yuanqi.webp # live/src/main/res/mipmap-mdpi/filter_zhiyu.webp # live/src/main/res/mipmap-mdpi/filter_ziran.webp # live/src/main/res/mipmap-mdpi/fuul.webp # live/src/main/res/mipmap-mdpi/gif_rose.webp # live/src/main/res/mipmap-mdpi/gift_naming_icon.webp # live/src/main/res/mipmap-mdpi/grayicon.webp # live/src/main/res/mipmap-mdpi/guard_bg.webp # live/src/main/res/mipmap-mdpi/guard_notice.webp # live/src/main/res/mipmap-mdpi/guardstar.webp # live/src/main/res/mipmap-mdpi/ic_guard_not.webp # live/src/main/res/mipmap-mdpi/ic_live_anchor_say_hide.webp # live/src/main/res/mipmap-mdpi/ic_live_anchor_say_show.webp # live/src/main/res/mipmap-mdpi/ic_live_float_call_me.webp # live/src/main/res/mipmap-mdpi/ic_live_ready_channel.webp # live/src/main/res/mipmap-mdpi/ic_live_ready_letter.webp # live/src/main/res/mipmap-mdpi/ic_live_ready_say.webp # live/src/main/res/mipmap-mdpi/ic_live_ready_xjd.webp # live/src/main/res/mipmap-mdpi/ic_live_user_mailbox.webp # live/src/main/res/mipmap-mdpi/ico_si.webp # live/src/main/res/mipmap-mdpi/icon_arrow_right_3.webp # live/src/main/res/mipmap-mdpi/icon_arrow_right_more.webp # live/src/main/res/mipmap-mdpi/icon_beans.webp # live/src/main/res/mipmap-mdpi/icon_blind_box_headlines.webp # live/src/main/res/mipmap-mdpi/icon_blue_mvp.webp # live/src/main/res/mipmap-mdpi/icon_blue_no1.webp # live/src/main/res/mipmap-mdpi/icon_blue_no2.webp # live/src/main/res/mipmap-mdpi/icon_blue_no3.webp # live/src/main/res/mipmap-mdpi/icon_blue_smvp.webp # live/src/main/res/mipmap-mdpi/icon_cancel.webp # live/src/main/res/mipmap-mdpi/icon_collectibles.webp # live/src/main/res/mipmap-mdpi/icon_crystal_1.webp # live/src/main/res/mipmap-mdpi/icon_crystal_2.webp # live/src/main/res/mipmap-mdpi/icon_crystal_3.webp # live/src/main/res/mipmap-mdpi/icon_gift_luck_1.webp # live/src/main/res/mipmap-mdpi/icon_gift_prize_pool_2.webp # live/src/main/res/mipmap-mdpi/icon_gift_prize_pool_4.webp # live/src/main/res/mipmap-mdpi/icon_gift_prize_pool_5.webp # live/src/main/res/mipmap-mdpi/icon_gift_prize_pool_6.webp # live/src/main/res/mipmap-mdpi/icon_gongjue.webp # live/src/main/res/mipmap-mdpi/icon_guard_buy_0_0.webp # live/src/main/res/mipmap-mdpi/icon_guard_buy_0_1.webp # live/src/main/res/mipmap-mdpi/icon_guard_top_0.webp # live/src/main/res/mipmap-mdpi/icon_guard_top_1.webp # live/src/main/res/mipmap-mdpi/icon_guard_top_11.webp # live/src/main/res/mipmap-mdpi/icon_guard_type_0.webp # live/src/main/res/mipmap-mdpi/icon_guard_type_1.webp # live/src/main/res/mipmap-mdpi/icon_guard_type_2.webp # live/src/main/res/mipmap-mdpi/icon_guowang.webp # live/src/main/res/mipmap-mdpi/icon_head_1.webp # live/src/main/res/mipmap-mdpi/icon_houjue.webp # live/src/main/res/mipmap-mdpi/icon_huangdi.webp # live/src/main/res/mipmap-mdpi/icon_line_x.webp # live/src/main/res/mipmap-mdpi/icon_live_admin_delete.webp # live/src/main/res/mipmap-mdpi/icon_live_beauty_1.webp # live/src/main/res/mipmap-mdpi/icon_live_chat.webp # live/src/main/res/mipmap-mdpi/icon_live_chat_guard_1.webp # live/src/main/res/mipmap-mdpi/icon_live_chat_guard_2.webp # live/src/main/res/mipmap-mdpi/icon_live_chat_liang.webp # live/src/main/res/mipmap-mdpi/icon_live_chat_m.webp # live/src/main/res/mipmap-mdpi/icon_live_chat_vip.webp # live/src/main/res/mipmap-mdpi/icon_live_close.webp # live/src/main/res/mipmap-mdpi/icon_live_close_2.webp # live/src/main/res/mipmap-mdpi/icon_live_close_3.webp # live/src/main/res/mipmap-mdpi/icon_live_danmu_0.webp # live/src/main/res/mipmap-mdpi/icon_live_danmu_1.webp # live/src/main/res/mipmap-mdpi/icon_live_func_1.webp # live/src/main/res/mipmap-mdpi/icon_live_func_beauty.webp # live/src/main/res/mipmap-mdpi/icon_live_func_camera.webp # live/src/main/res/mipmap-mdpi/icon_live_func_flash.webp # live/src/main/res/mipmap-mdpi/icon_live_func_flash_1.webp # live/src/main/res/mipmap-mdpi/icon_live_func_game.webp # live/src/main/res/mipmap-mdpi/icon_live_func_lm.webp # live/src/main/res/mipmap-mdpi/icon_live_func_music.webp # live/src/main/res/mipmap-mdpi/icon_live_func_rp.webp # live/src/main/res/mipmap-mdpi/icon_live_func_share.webp # live/src/main/res/mipmap-mdpi/icon_live_gift.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_1.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_3.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_anim_11.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_anim_3.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_anim_7.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_count_1.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_count_4.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_count_5.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_count_7.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_guard.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_hao.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_hot.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_lian_0.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_lian_1.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_luck.webp # live/src/main/res/mipmap-mdpi/icon_live_gift_weekstar.webp # live/src/main/res/mipmap-mdpi/icon_live_light_1.webp # live/src/main/res/mipmap-mdpi/icon_live_light_2.webp # live/src/main/res/mipmap-mdpi/icon_live_light_3.webp # live/src/main/res/mipmap-mdpi/icon_live_light_4.webp # live/src/main/res/mipmap-mdpi/icon_live_light_5.webp # live/src/main/res/mipmap-mdpi/icon_live_light_6.webp # live/src/main/res/mipmap-mdpi/icon_live_link_mic.webp # live/src/main/res/mipmap-mdpi/icon_live_link_mic_1.webp # live/src/main/res/mipmap-mdpi/icon_live_more.webp # live/src/main/res/mipmap-mdpi/icon_live_msg.webp # live/src/main/res/mipmap-mdpi/icon_live_pk.webp # live/src/main/res/mipmap-mdpi/icon_live_ready_close.webp # live/src/main/res/mipmap-mdpi/icon_live_ready_location_0.webp # live/src/main/res/mipmap-mdpi/icon_live_ready_location_1.webp # live/src/main/res/mipmap-mdpi/icon_live_ready_room_type.webp # live/src/main/res/mipmap-mdpi/icon_live_red_pack.webp # live/src/main/res/mipmap-mdpi/icon_live_room_msg.webp # live/src/main/res/mipmap-mdpi/icon_live_search.webp # live/src/main/res/mipmap-mdpi/icon_live_search_back.webp # live/src/main/res/mipmap-mdpi/icon_live_send_0.webp # live/src/main/res/mipmap-mdpi/icon_live_send_1.webp # live/src/main/res/mipmap-mdpi/icon_live_share.webp # live/src/main/res/mipmap-mdpi/icon_live_star.webp # live/src/main/res/mipmap-mdpi/icon_live_title_laba.webp # live/src/main/res/mipmap-mdpi/icon_live_user_3.webp # live/src/main/res/mipmap-mdpi/icon_live_user_5.webp # live/src/main/res/mipmap-mdpi/icon_live_user_6.webp # live/src/main/res/mipmap-mdpi/icon_live_user_7.webp # live/src/main/res/mipmap-mdpi/icon_live_user_8.webp # live/src/main/res/mipmap-mdpi/icon_live_user_list_1.webp # live/src/main/res/mipmap-mdpi/icon_live_user_list_2.webp # live/src/main/res/mipmap-mdpi/icon_live_user_list_3.webp # live/src/main/res/mipmap-mdpi/icon_live_usercard_setting.webp # live/src/main/res/mipmap-mdpi/icon_lollipop.webp # live/src/main/res/mipmap-mdpi/icon_luck.webp # live/src/main/res/mipmap-mdpi/icon_msg_sys_gift.webp # live/src/main/res/mipmap-mdpi/icon_msg_sys_gifted.webp # live/src/main/res/mipmap-mdpi/icon_nanjue.webp # live/src/main/res/mipmap-mdpi/icon_new.webp # live/src/main/res/mipmap-mdpi/icon_no1.webp # live/src/main/res/mipmap-mdpi/icon_no2.webp # live/src/main/res/mipmap-mdpi/icon_no3.webp # live/src/main/res/mipmap-mdpi/icon_no4.webp # live/src/main/res/mipmap-mdpi/icon_no5.webp # live/src/main/res/mipmap-mdpi/icon_pk_lose.webp # live/src/main/res/mipmap-mdpi/icon_pk_tie.webp # live/src/main/res/mipmap-mdpi/icon_public.webp # live/src/main/res/mipmap-mdpi/icon_red_mvp.webp # live/src/main/res/mipmap-mdpi/icon_red_no1.webp # live/src/main/res/mipmap-mdpi/icon_red_no2.webp # live/src/main/res/mipmap-mdpi/icon_red_no3.webp # live/src/main/res/mipmap-mdpi/icon_red_pack_2.webp # live/src/main/res/mipmap-mdpi/icon_red_pack_3.webp # live/src/main/res/mipmap-mdpi/icon_red_pack_4.webp # live/src/main/res/mipmap-mdpi/icon_red_pack_5.webp # live/src/main/res/mipmap-mdpi/icon_red_pack_7.webp # live/src/main/res/mipmap-mdpi/icon_red_pack_btn_0.webp # live/src/main/res/mipmap-mdpi/icon_red_pack_btn_1.webp # live/src/main/res/mipmap-mdpi/icon_red_smvp.webp # live/src/main/res/mipmap-mdpi/icon_rosebouquet.webp # live/src/main/res/mipmap-mdpi/icon_share_link.webp # live/src/main/res/mipmap-mdpi/icon_sofa_blue.webp # live/src/main/res/mipmap-mdpi/icon_sofa_red.webp # live/src/main/res/mipmap-mdpi/icon_sys_receive.webp # live/src/main/res/mipmap-mdpi/icon_sys_received.webp # live/src/main/res/mipmap-mdpi/icon_user_card_follow.webp # live/src/main/res/mipmap-mdpi/icon_wechat_x.webp # live/src/main/res/mipmap-mdpi/icon_whatsapp_x.webp # live/src/main/res/mipmap-mdpi/icon_wish_live.webp # live/src/main/res/mipmap-mdpi/icon_zijue.webp # live/src/main/res/mipmap-mdpi/iconhot.webp # live/src/main/res/mipmap-mdpi/img_bg.webp # live/src/main/res/mipmap-mdpi/img_guardian_empty.webp # live/src/main/res/mipmap-mdpi/lianmai.webp # live/src/main/res/mipmap-mdpi/lip_size.webp # live/src/main/res/mipmap-mdpi/live_close.webp # live/src/main/res/mipmap-mdpi/live_icon_vacancy.webp # live/src/main/res/mipmap-mdpi/live_pk.webp # live/src/main/res/mipmap-mdpi/live_user_more.webp # live/src/main/res/mipmap-mdpi/live_users_more.webp # live/src/main/res/mipmap-mdpi/live_xyd.webp # live/src/main/res/mipmap-mdpi/login_input.webp # live/src/main/res/mipmap-mdpi/lw_ico.webp # live/src/main/res/mipmap-mdpi/meiyan_icon_close.webp # live/src/main/res/mipmap-mdpi/momo_dy.webp # live/src/main/res/mipmap-mdpi/momo_mb.webp # live/src/main/res/mipmap-mdpi/momo_mp.webp # live/src/main/res/mipmap-mdpi/momo_sl.webp # live/src/main/res/mipmap-mdpi/momo_xl.webp # live/src/main/res/mipmap-mdpi/nope.webp # live/src/main/res/mipmap-mdpi/nose_size.webp # live/src/main/res/mipmap-mdpi/one_one.webp # live/src/main/res/mipmap-mdpi/one_th.webp # live/src/main/res/mipmap-mdpi/one_two.webp # live/src/main/res/mipmap-mdpi/originalss.webp # live/src/main/res/mipmap-mdpi/refresh.webp # live/src/main/res/mipmap-mdpi/ruddy.webp # live/src/main/res/mipmap-mdpi/shuijing_box.webp # live/src/main/res/mipmap-mdpi/super_notice.webp # live/src/main/res/mipmap-mdpi/title_back.webp # live/src/main/res/mipmap-mdpi/user_info_bg.webp # live/src/main/res/mipmap-mdpi/vip_notice.webp # live/src/main/res/mipmap-mdpi/white_teeth.webp # live/src/main/res/mipmap-mdpi/wrap_empty.webp # live/src/main/res/mipmap-xhdpi/background_red_packet.webp # live/src/main/res/mipmap-xhdpi/bg_god_guard.webp # live/src/main/res/mipmap-xhdpi/bg_god_guard_en.webp # live/src/main/res/mipmap-xhdpi/bg_king_guard.webp # live/src/main/res/mipmap-xhdpi/bg_king_guard_en.webp # live/src/main/res/mipmap-xhdpi/bg_main_item_bottom.webp # live/src/main/res/mipmap-xhdpi/bg_star_guard.webp # live/src/main/res/mipmap-xhdpi/bg_star_guard_en.webp # live/src/main/res/mipmap-xhdpi/black_bg.webp # live/src/main/res/mipmap-xhdpi/black_tip_bg.webp # live/src/main/res/mipmap-xhdpi/bottom_icon.webp # live/src/main/res/mipmap-xhdpi/btn_more_black.webp # live/src/main/res/mipmap-xhdpi/btn_morefeatures.webp # live/src/main/res/mipmap-xhdpi/btn_sand.webp # live/src/main/res/mipmap-xhdpi/btn_sand1.webp # live/src/main/res/mipmap-xhdpi/dialog_task_hot.webp # live/src/main/res/mipmap-xhdpi/dialog_task_info.webp # live/src/main/res/mipmap-xhdpi/dialog_task_new_star.webp # live/src/main/res/mipmap-xhdpi/dialog_task_star.webp # live/src/main/res/mipmap-xhdpi/exp_box.webp # live/src/main/res/mipmap-xhdpi/ffsx.webp # live/src/main/res/mipmap-xhdpi/freegift_box.webp # live/src/main/res/mipmap-xhdpi/guard_btn_buy_first_icon.webp # live/src/main/res/mipmap-xhdpi/hot_back.webp # live/src/main/res/mipmap-xhdpi/ic_contact_details_back.webp # live/src/main/res/mipmap-xhdpi/ic_live_anchor_edit_call_me_edit.webp # live/src/main/res/mipmap-xhdpi/ic_live_anchor_edit_call_me_r.webp # live/src/main/res/mipmap-xhdpi/ic_live_fans_group_info_colse.webp # live/src/main/res/mipmap-xhdpi/ic_random_pk_like.webp # live/src/main/res/mipmap-xhdpi/ic_random_pk_pk.webp # live/src/main/res/mipmap-xhdpi/ic_random_pk_pk_unselect.webp # live/src/main/res/mipmap-xhdpi/ic_random_pk_search.webp # live/src/main/res/mipmap-xhdpi/icon_big_mic.webp # live/src/main/res/mipmap-xhdpi/icon_camera.webp # live/src/main/res/mipmap-xhdpi/icon_cash_ali.webp # live/src/main/res/mipmap-xhdpi/icon_cash_bank.webp # live/src/main/res/mipmap-xhdpi/icon_cash_wx.webp # live/src/main/res/mipmap-xhdpi/icon_change.webp # live/src/main/res/mipmap-xhdpi/icon_comments.webp # live/src/main/res/mipmap-xhdpi/icon_ellipse.webp # live/src/main/res/mipmap-xhdpi/icon_fans_danmu_avatar.webp # live/src/main/res/mipmap-xhdpi/icon_free_pk_waring.webp # live/src/main/res/mipmap-xhdpi/icon_god_guardian_medal.webp # live/src/main/res/mipmap-xhdpi/icon_god_guardian_medal_grey.webp # live/src/main/res/mipmap-xhdpi/icon_grieved_red_packet.webp # live/src/main/res/mipmap-xhdpi/icon_guize.webp # live/src/main/res/mipmap-xhdpi/icon_king_guardian_medal.webp # live/src/main/res/mipmap-xhdpi/icon_king_guardian_medal_grey.webp # live/src/main/res/mipmap-xhdpi/icon_live_beans.webp # live/src/main/res/mipmap-xhdpi/icon_live_exp.webp # live/src/main/res/mipmap-xhdpi/icon_live_prank_gift_item_close.webp # live/src/main/res/mipmap-xhdpi/icon_live_room_sud_close.webp # live/src/main/res/mipmap-xhdpi/icon_main_live_num.webp # live/src/main/res/mipmap-xhdpi/icon_main_live_type_0.webp # live/src/main/res/mipmap-xhdpi/icon_main_live_type_1.webp # live/src/main/res/mipmap-xhdpi/icon_main_live_type_2.webp # live/src/main/res/mipmap-xhdpi/icon_main_live_type_3.webp # live/src/main/res/mipmap-xhdpi/icon_main_rest_spot.webp # live/src/main/res/mipmap-xhdpi/icon_main_rest_work.webp # live/src/main/res/mipmap-xhdpi/icon_messagelist_read.webp # live/src/main/res/mipmap-xhdpi/icon_photo.webp # live/src/main/res/mipmap-xhdpi/icon_selected.webp # live/src/main/res/mipmap-xhdpi/icon_star_guardian_medal.webp # live/src/main/res/mipmap-xhdpi/icon_star_guardian_medal_grey.webp # live/src/main/res/mipmap-xhdpi/icon_uncheck.webp # live/src/main/res/mipmap-xhdpi/icon_video.webp # live/src/main/res/mipmap-xhdpi/icon_zhuansi.webp # live/src/main/res/mipmap-xhdpi/img_buoy.webp # live/src/main/res/mipmap-xhdpi/img_buoy2.webp # live/src/main/res/mipmap-xhdpi/instructors.webp # live/src/main/res/mipmap-xhdpi/item_frame_gift_naming_bg.webp # live/src/main/res/mipmap-xhdpi/ixon_attention.webp # live/src/main/res/mipmap-xhdpi/jindou_box.webp # live/src/main/res/mipmap-xhdpi/live_gift_light_bg.webp # live/src/main/res/mipmap-xhdpi/live_icon_role.webp # live/src/main/res/mipmap-xhdpi/live_icon_role_en.webp # live/src/main/res/mipmap-xhdpi/live_mission_box.webp # live/src/main/res/mipmap-xhdpi/live_new_tip.webp # live/src/main/res/mipmap-xhdpi/live_room_sud_hint_icon.webp # live/src/main/res/mipmap-xhdpi/live_zt.webp # live/src/main/res/mipmap-xhdpi/monster_1.webp # live/src/main/res/mipmap-xhdpi/monster_2.webp # live/src/main/res/mipmap-xhdpi/monster_3.webp # live/src/main/res/mipmap-xhdpi/monster_4.webp # live/src/main/res/mipmap-xhdpi/monster_5.webp # live/src/main/res/mipmap-xhdpi/monster_6.webp # live/src/main/res/mipmap-xhdpi/monster_7.webp # live/src/main/res/mipmap-xhdpi/monster_8.webp # live/src/main/res/mipmap-xhdpi/multiplayerpk.webp # live/src/main/res/mipmap-xhdpi/prank_icon.webp # live/src/main/res/mipmap-xhdpi/turntable_icon.webp # live/src/main/res/mipmap-xhdpi/voice.webp # live/src/main/res/mipmap-xxxhdpi/background_full_service_notice_new.webp # live/src/main/res/mipmap-xxxhdpi/background_gift_wall_title.webp # live/src/main/res/mipmap-xxxhdpi/background_giftwall_tab.webp # live/src/main/res/mipmap-xxxhdpi/background_regular_title.webp # live/src/main/res/mipmap-xxxhdpi/bg_dragon.webp # live/src/main/res/mipmap-xxxhdpi/bg_dragon_expire.webp # live/src/main/res/mipmap-xxxhdpi/bg_fans_group_buy_dialog.webp # live/src/main/res/mipmap-xxxhdpi/bg_funs_group_send_dialog_item.webp # live/src/main/res/mipmap-xxxhdpi/bg_funs_live_anchor_start.webp # live/src/main/res/mipmap-xxxhdpi/bg_funs_live_go_start.webp # live/src/main/res/mipmap-xxxhdpi/bg_kirin.webp # live/src/main/res/mipmap-xxxhdpi/bg_live_user_mailbox.webp # live/src/main/res/mipmap-xxxhdpi/bg_live_user_mailbox_top.webp # live/src/main/res/mipmap-xxxhdpi/bg_live_user_mailbox_top2.webp # live/src/main/res/mipmap-xxxhdpi/bg_phoenix.webp # live/src/main/res/mipmap-xxxhdpi/bg_red_packet_info_en.webp # live/src/main/res/mipmap-xxxhdpi/bg_red_packet_info_zh.webp # live/src/main/res/mipmap-xxxhdpi/bg_xyd.webp # live/src/main/res/mipmap-xxxhdpi/bottom_icon.webp # live/src/main/res/mipmap-xxxhdpi/btn_attention.webp # live/src/main/res/mipmap-xxxhdpi/btn_guard_open.webp # live/src/main/res/mipmap-xxxhdpi/dialog_live_buy_guard_bg.webp # live/src/main/res/mipmap-xxxhdpi/emperor_rom.webp # live/src/main/res/mipmap-xxxhdpi/emphasis_cn.webp # live/src/main/res/mipmap-xxxhdpi/emphasis_en.webp # live/src/main/res/mipmap-xxxhdpi/full_service_notice_new_tmp_bg.webp # live/src/main/res/mipmap-xxxhdpi/full_service_notice_new_tmp_icon.webp # live/src/main/res/mipmap-xxxhdpi/guard_btn_buy_icon.webp # live/src/main/res/mipmap-xxxhdpi/guardian_img_wings.png # live/src/main/res/mipmap-xxxhdpi/guardian_img_wings_p.webp # live/src/main/res/mipmap-xxxhdpi/icon_back.webp # live/src/main/res/mipmap-xxxhdpi/icon_cange.webp # live/src/main/res/mipmap-xxxhdpi/icon_download_gift.webp # live/src/main/res/mipmap-xxxhdpi/icon_emphasis.webp # live/src/main/res/mipmap-xxxhdpi/icon_fans_group_buy_dialog_buy.webp # live/src/main/res/mipmap-xxxhdpi/icon_fans_group_buy_dialog_day.webp # live/src/main/res/mipmap-xxxhdpi/icon_fans_group_buy_dialog_item.webp # live/src/main/res/mipmap-xxxhdpi/icon_following_anchor.webp # live/src/main/res/mipmap-xxxhdpi/icon_gift.webp # live/src/main/res/mipmap-xxxhdpi/icon_guard_me.webp # live/src/main/res/mipmap-xxxhdpi/icon_instructions.webp # live/src/main/res/mipmap-xxxhdpi/icon_live_dragon_money_back.webp # live/src/main/res/mipmap-xxxhdpi/icon_livepk_no1.webp # live/src/main/res/mipmap-xxxhdpi/icon_livepk_no2.webp # live/src/main/res/mipmap-xxxhdpi/icon_livepk_no3.webp # live/src/main/res/mipmap-xxxhdpi/icon_livepk_no4.webp # live/src/main/res/mipmap-xxxhdpi/icon_loading_gift.webp # live/src/main/res/mipmap-xxxhdpi/icon_masking.webp # live/src/main/res/mipmap-xxxhdpi/icon_masking_dragon.webp # live/src/main/res/mipmap-xxxhdpi/icon_masking_kirin.webp # live/src/main/res/mipmap-xxxhdpi/icon_masking_phoenix.webp # live/src/main/res/mipmap-xxxhdpi/icon_message.webp # live/src/main/res/mipmap-xxxhdpi/icon_message_read.webp # live/src/main/res/mipmap-xxxhdpi/icon_message_unread.webp # live/src/main/res/mipmap-xxxhdpi/icon_more_live_menu.webp # live/src/main/res/mipmap-xxxhdpi/icon_notification_speaker.webp # live/src/main/res/mipmap-xxxhdpi/icon_one_guard.webp # live/src/main/res/mipmap-xxxhdpi/icon_prank.webp # live/src/main/res/mipmap-xxxhdpi/icon_private.webp # live/src/main/res/mipmap-xxxhdpi/icon_privilege.webp # live/src/main/res/mipmap-xxxhdpi/icon_red_packet.webp # live/src/main/res/mipmap-xxxhdpi/icon_regular_bubble.webp # live/src/main/res/mipmap-xxxhdpi/icon_small_download.webp # live/src/main/res/mipmap-xxxhdpi/icon_tag_king.webp # live/src/main/res/mipmap-xxxhdpi/icon_three_guard.webp # live/src/main/res/mipmap-xxxhdpi/icon_two_guard.webp # live/src/main/res/mipmap-xxxhdpi/icon_vip_gold.webp # live/src/main/res/mipmap-xxxhdpi/icon_vip_gold_new.webp # live/src/main/res/mipmap-xxxhdpi/icon_voice.webp # live/src/main/res/mipmap-xxxhdpi/icon_voice_press.webp # live/src/main/res/mipmap-xxxhdpi/img_guardian_online.webp # live/src/main/res/mipmap-xxxhdpi/img_live_search_list_empty.webp # live/src/main/res/mipmap-xxxhdpi/img_news_instructor_tags_chinese.webp # live/src/main/res/mipmap-xxxhdpi/img_news_instructor_tags_english.webp # live/src/main/res/mipmap-xxxhdpi/img_no_anchor.webp # live/src/main/res/mipmap-xxxhdpi/img_p.webp # live/src/main/res/mipmap-xxxhdpi/img_pop_bg.webp # live/src/main/res/mipmap-xxxhdpi/img_xian.webp # live/src/main/res/mipmap-xxxhdpi/live_bg.webp # live/src/main/res/mipmap-xxxhdpi/live_icon_cheat.webp # live/src/main/res/mipmap-xxxhdpi/live_icon_cheat_en.webp # live/src/main/res/mipmap-xxxhdpi/live_icon_leftt_sliding.webp # live/src/main/res/mipmap-xxxhdpi/live_icon_new_people_cn.webp # live/src/main/res/mipmap-xxxhdpi/live_icon_newpeople_en.webp # live/src/main/res/mipmap-xxxhdpi/live_icon_play.webp # live/src/main/res/mipmap-xxxhdpi/live_icon_play_en.webp # live/src/main/res/mipmap-xxxhdpi/live_icon_seat.webp # live/src/main/res/mipmap-xxxhdpi/live_icon_wishlist.webp # live/src/main/res/mipmap-xxxhdpi/live_icon_zhouxing.webp # live/src/main/res/mipmap-xxxhdpi/live_pk_time_bg.webp # live/src/main/res/mipmap-xxxhdpi/new_message_cn.webp # live/src/main/res/mipmap-xxxhdpi/new_message_en.webp # live/src/main/res/mipmap-xxxhdpi/news_icon_clearance.webp # live/src/main/res/mipmap-xxxhdpi/prank_icon.webp # live/src/main/res/mipmap-xxxhdpi/rc_unread_count_bg_normal.webp # live/src/main/res/mipmap-xxxhdpi/sh_img_title.webp # live/src/main/res/mipmap-xxxhdpi/super_emperor_rom.webp # live/src/main/res/mipmap-xxxhdpi/tag_god.webp # live/src/main/res/mipmap-xxxhdpi/tag_god_hui.webp # live/src/main/res/mipmap-xxxhdpi/tag_king.webp # live/src/main/res/mipmap-xxxhdpi/tag_king_hui.webp # live/src/main/res/mipmap-xxxhdpi/tag_start.webp # live/src/main/res/mipmap-xxxhdpi/tag_start_hui.webp # live/src/main/res/mipmap-xxxhdpi/turntable_icon.webp # live/src/main/res/mipmap-xxxhdpi/viptip_box.webp # live/src/main/res/mipmap-xxxhdpi/white_bg.webp # live/src/main/res/mipmap-zh/bixin.webp # live/src/main/res/mipmap-zh/btn_attention.webp # live/src/main/res/mipmap-zh/dialog_task_info.webp # live/src/main/res/mipmap-zh/dialog_task_new_star.webp # live/src/main/res/mipmap-zh/gift_naming_icon.webp # live/src/main/res/mipmap-zh/grayicon.webp # live/src/main/res/mipmap-zh/guard_btn_buy_first_icon.webp # live/src/main/res/mipmap-zh/guard_btn_buy_icon.webp # live/src/main/res/mipmap-zh/guard_notice.webp # live/src/main/res/mipmap-zh/guardian_img_wings_p.webp # live/src/main/res/mipmap-zh/ic_live_float_call_me.webp # live/src/main/res/mipmap-zh/ic_live_user_mailbox.webp # live/src/main/res/mipmap-zh/icon_blind_box_headlines.webp # live/src/main/res/mipmap-zh/icon_cange.webp # live/src/main/res/mipmap-zh/img_guardian_empty.webp # live/src/main/res/mipmap-zh/img_guardian_online.webp # live/src/main/res/mipmap-zh/report_add.webp # live/src/main/res/mipmap-zh/sh_img_title.webp # live/src/main/res/mipmap-zh/super_notice.webp # live/src/main/res/mipmap-zh/vip_notice.webp # main/src/main/res/mipmap-mdpi/bg_main_item_bottom.webp # main/src/main/res/mipmap-mdpi/bg_share_1.webp # main/src/main/res/mipmap-mdpi/bg_user_home_detail_1.webp # main/src/main/res/mipmap-mdpi/bonus_gold.webp # main/src/main/res/mipmap-mdpi/btn_camera.webp # main/src/main/res/mipmap-mdpi/btn_close.webp # main/src/main/res/mipmap-mdpi/btn_f1ollowing.webp # main/src/main/res/mipmap-mdpi/btn_goto.webp # main/src/main/res/mipmap-mdpi/btn_signin.webp # main/src/main/res/mipmap-mdpi/df_nobe.webp # main/src/main/res/mipmap-mdpi/home_btn_edit.webp # main/src/main/res/mipmap-mdpi/home_me_diamonds.webp # main/src/main/res/mipmap-mdpi/home_me_gold.webp # main/src/main/res/mipmap-mdpi/home_type.webp # main/src/main/res/mipmap-mdpi/icon_arrow_right_2.webp # main/src/main/res/mipmap-mdpi/icon_bonus_0.webp # main/src/main/res/mipmap-mdpi/icon_bonus_1.webp # main/src/main/res/mipmap-mdpi/icon_bonus_2.webp # main/src/main/res/mipmap-mdpi/icon_bonus_5.webp # main/src/main/res/mipmap-mdpi/icon_bonus_top.webp # main/src/main/res/mipmap-mdpi/icon_cash_ali.webp # main/src/main/res/mipmap-mdpi/icon_cash_bank.webp # main/src/main/res/mipmap-mdpi/icon_cash_delete.webp # main/src/main/res/mipmap-mdpi/icon_cash_radio_0.webp # main/src/main/res/mipmap-mdpi/icon_cash_radio_1.webp # main/src/main/res/mipmap-mdpi/icon_cash_wx.webp # main/src/main/res/mipmap-mdpi/icon_charge_bg.webp # main/src/main/res/mipmap-mdpi/icon_csd.webp # main/src/main/res/mipmap-mdpi/icon_csd2.webp # main/src/main/res/mipmap-mdpi/icon_home_top_follow.webp # main/src/main/res/mipmap-mdpi/icon_home_top_live.webp # main/src/main/res/mipmap-mdpi/icon_home_top_video.webp # main/src/main/res/mipmap-mdpi/icon_invite_share_icon.webp # main/src/main/res/mipmap-mdpi/icon_live_user_home_1.webp # main/src/main/res/mipmap-mdpi/icon_login_down.webp # main/src/main/res/mipmap-mdpi/icon_main_follow.webp # main/src/main/res/mipmap-mdpi/icon_main_list_head_1.webp # main/src/main/res/mipmap-mdpi/icon_main_list_head_2.webp # main/src/main/res/mipmap-mdpi/icon_main_list_head_3.webp # main/src/main/res/mipmap-mdpi/icon_main_list_medal_1.webp # main/src/main/res/mipmap-mdpi/icon_main_list_medal_2.webp # main/src/main/res/mipmap-mdpi/icon_main_list_medal_3.webp # main/src/main/res/mipmap-mdpi/icon_main_list_no_data.webp # main/src/main/res/mipmap-mdpi/icon_main_live_num.webp # main/src/main/res/mipmap-mdpi/icon_main_live_type_0.webp # main/src/main/res/mipmap-mdpi/icon_main_live_type_1.webp # main/src/main/res/mipmap-mdpi/icon_main_live_type_2.webp # main/src/main/res/mipmap-mdpi/icon_main_live_type_3.webp # main/src/main/res/mipmap-mdpi/icon_main_me_detail.webp # main/src/main/res/mipmap-mdpi/icon_main_me_msg.webp # main/src/main/res/mipmap-mdpi/icon_main_me_shop.webp # main/src/main/res/mipmap-mdpi/icon_main_me_wallet.webp # main/src/main/res/mipmap-mdpi/icon_main_msg.webp # main/src/main/res/mipmap-mdpi/icon_main_msg_clean.webp # main/src/main/res/mipmap-mdpi/icon_main_near_location.webp # main/src/main/res/mipmap-mdpi/icon_main_rest_spot.webp # main/src/main/res/mipmap-mdpi/icon_main_rest_work.webp # main/src/main/res/mipmap-mdpi/icon_main_search.webp # main/src/main/res/mipmap-mdpi/icon_main_start.webp # main/src/main/res/mipmap-mdpi/icon_main_start_close.webp # main/src/main/res/mipmap-mdpi/icon_main_start_live.webp # main/src/main/res/mipmap-mdpi/icon_main_start_video.webp # main/src/main/res/mipmap-mdpi/icon_main_tab_list_00.webp # main/src/main/res/mipmap-mdpi/icon_main_tab_list_01.webp # main/src/main/res/mipmap-mdpi/icon_main_tab_near_00.webp # main/src/main/res/mipmap-mdpi/icon_main_video_num.webp # main/src/main/res/mipmap-mdpi/icon_more_gray.webp # main/src/main/res/mipmap-mdpi/icon_position.webp # main/src/main/res/mipmap-mdpi/icon_profit_1.webp # main/src/main/res/mipmap-mdpi/icon_reg_code.webp # main/src/main/res/mipmap-mdpi/icon_reg_phone.webp # main/src/main/res/mipmap-mdpi/icon_reg_pwd.webp # main/src/main/res/mipmap-mdpi/icon_sex_female_0.webp # main/src/main/res/mipmap-mdpi/icon_sex_male.webp # main/src/main/res/mipmap-mdpi/icon_shop.webp # main/src/main/res/mipmap-mdpi/icon_user_home_avatar_empty.webp # main/src/main/res/mipmap-mdpi/icon_user_home_black.webp # main/src/main/res/mipmap-mdpi/icon_user_home_follow_1.webp # main/src/main/res/mipmap-mdpi/icon_user_home_follow_11.webp # main/src/main/res/mipmap-mdpi/icon_user_home_follow_33.webp # main/src/main/res/mipmap-mdpi/icon_user_home_share.webp # main/src/main/res/mipmap-mdpi/icon_user_home_share_1.webp # main/src/main/res/mipmap-mdpi/icon_userid.webp # main/src/main/res/mipmap-mdpi/icon_userlv.webp # main/src/main/res/mipmap-mdpi/icon_video.webp # main/src/main/res/mipmap-mdpi/icon_vip_gold.webp # main/src/main/res/mipmap-mdpi/icon_war_order.webp # main/src/main/res/mipmap-mdpi/icon_zhubolv.webp # main/src/main/res/mipmap-mdpi/live_zt.webp # main/src/main/res/mipmap-mdpi/logo_bg.webp # main/src/main/res/mipmap-mdpi/me_msagess.webp # main/src/main/res/mipmap-mdpi/multiplayerpk.webp # main/src/main/res/mipmap-mdpi/new_bg.webp # main/src/main/res/mipmap-mdpi/search_del.webp # main/src/main/res/mipmap-mdpi/title_back.webp # main/src/main/res/mipmap-mdpi/top_back.webp # main/src/main/res/mipmap-mdpi/top_dms.webp # main/src/main/res/mipmap-mdpi/top_list_more.webp # main/src/main/res/mipmap-mdpi/user_info_more.webp # main/src/main/res/mipmap-xxhdpi/bg_battlepass_reward_item_mark.webp # main/src/main/res/mipmap-xxhdpi/bg_glamour3_top.webp # main/src/main/res/mipmap-xxhdpi/bg_zl_battlepass_exchange_btn_exchange.webp # main/src/main/res/mipmap-xxhdpi/bg_zl_battlepass_exchange_btn_lock.webp # main/src/main/res/mipmap-xxhdpi/bg_zl_battlepass_exchange_btn_over.webp # main/src/main/res/mipmap-xxhdpi/bg_zl_battlepass_exchange_item2.webp # main/src/main/res/mipmap-xxhdpi/bg_zl_battlepass_reward_item.webp # main/src/main/res/mipmap-xxhdpi/bg_zl_battlepass_reward_item_unlock.webp # main/src/main/res/mipmap-xxhdpi/bg_zl_user_bottom.webp # main/src/main/res/mipmap-xxhdpi/bg_zl_user_button.webp # main/src/main/res/mipmap-xxhdpi/bg_zl_user_top.webp # main/src/main/res/mipmap-xxhdpi/btn_add.webp # main/src/main/res/mipmap-xxhdpi/chat_back.webp # main/src/main/res/mipmap-xxhdpi/emperor_recommendation.webp # main/src/main/res/mipmap-xxhdpi/home_00000.webp # main/src/main/res/mipmap-xxhdpi/home_00001.webp # main/src/main/res/mipmap-xxhdpi/home_00002.webp # main/src/main/res/mipmap-xxhdpi/home_00003.webp # main/src/main/res/mipmap-xxhdpi/home_00004.webp # main/src/main/res/mipmap-xxhdpi/home_00005.webp # main/src/main/res/mipmap-xxhdpi/home_00006.webp # main/src/main/res/mipmap-xxhdpi/home_00007.webp # main/src/main/res/mipmap-xxhdpi/home_00008.webp # main/src/main/res/mipmap-xxhdpi/home_00009.webp # main/src/main/res/mipmap-xxhdpi/home_00010.webp # main/src/main/res/mipmap-xxhdpi/home_00011.webp # main/src/main/res/mipmap-xxhdpi/home_00012.webp # main/src/main/res/mipmap-xxhdpi/home_00013.webp # main/src/main/res/mipmap-xxhdpi/home_00014.webp # main/src/main/res/mipmap-xxhdpi/home_00015.webp # main/src/main/res/mipmap-xxhdpi/home_00016.webp # main/src/main/res/mipmap-xxhdpi/home_00017.webp # main/src/main/res/mipmap-xxhdpi/home_00018.webp # main/src/main/res/mipmap-xxhdpi/home_00019.webp # main/src/main/res/mipmap-xxhdpi/home_00020.webp # main/src/main/res/mipmap-xxhdpi/home_00021.webp # main/src/main/res/mipmap-xxhdpi/home_00022.webp # main/src/main/res/mipmap-xxhdpi/home_00023.webp # main/src/main/res/mipmap-xxhdpi/home_00024.webp # main/src/main/res/mipmap-xxhdpi/home_00025.webp # main/src/main/res/mipmap-xxhdpi/home_00026.webp # main/src/main/res/mipmap-xxhdpi/home_00027.webp # main/src/main/res/mipmap-xxhdpi/home_00028.webp # main/src/main/res/mipmap-xxhdpi/home_00029.webp # main/src/main/res/mipmap-xxhdpi/home_00030.webp # main/src/main/res/mipmap-xxhdpi/home_00031.webp # main/src/main/res/mipmap-xxhdpi/home_00032.webp # main/src/main/res/mipmap-xxhdpi/home_00033.webp # main/src/main/res/mipmap-xxhdpi/home_00034.webp # main/src/main/res/mipmap-xxhdpi/home_00035.webp # main/src/main/res/mipmap-xxhdpi/home_00036.webp # main/src/main/res/mipmap-xxhdpi/home_00037.webp # main/src/main/res/mipmap-xxhdpi/home_00038.webp # main/src/main/res/mipmap-xxhdpi/home_00039.webp # main/src/main/res/mipmap-xxhdpi/ic_feedback_edit_image_del.webp # main/src/main/res/mipmap-xxhdpi/ic_reward_tab_normal.webp # main/src/main/res/mipmap-xxhdpi/ic_reward_tab_ultimate.webp # main/src/main/res/mipmap-xxhdpi/ic_reward_tab_ultimate_unselect.webp # main/src/main/res/mipmap-xxhdpi/ic_reward_tab_upgrade.webp # main/src/main/res/mipmap-xxhdpi/ic_reward_tab_upgrade_unselect.webp # main/src/main/res/mipmap-xxhdpi/ic_zl_back.webp # main/src/main/res/mipmap-xxhdpi/ic_zl_battlepass_reward_item_received.webp # main/src/main/res/mipmap-xxhdpi/ic_zl_battlepass_reward_item_unlock.webp # main/src/main/res/mipmap-xxhdpi/ic_zl_battlpas_exchange_subscript.webp # main/src/main/res/mipmap-xxhdpi/ic_zl_battlpas_exchange_subscript2.webp # main/src/main/res/mipmap-xxhdpi/ic_zl_battlpas_exchange_top_subscript.webp # main/src/main/res/mipmap-xxhdpi/ic_zl_battlpas_exchange_top_subscript2.webp # main/src/main/res/mipmap-xxhdpi/ic_zl_tab1.webp # main/src/main/res/mipmap-xxhdpi/ic_zl_tab1_unselect.webp # main/src/main/res/mipmap-xxhdpi/ic_zl_tab2.webp # main/src/main/res/mipmap-xxhdpi/ic_zl_tab2_unselect.webp # main/src/main/res/mipmap-xxhdpi/ic_zl_tab3.webp # main/src/main/res/mipmap-xxhdpi/ic_zl_tab3_unselect.webp # main/src/main/res/mipmap-xxhdpi/icon_activity_feedback_edit_img_add.webp # main/src/main/res/mipmap-xxhdpi/icon_activity_feedback_success.webp # main/src/main/res/mipmap-xxhdpi/icon_back_community.webp # main/src/main/res/mipmap-xxhdpi/icon_back_white.webp # main/src/main/res/mipmap-xxhdpi/icon_battle_all_get.webp # main/src/main/res/mipmap-xxhdpi/icon_bp_flot.webp # main/src/main/res/mipmap-xxhdpi/icon_contribute.webp # main/src/main/res/mipmap-xxhdpi/icon_edit.webp # main/src/main/res/mipmap-xxhdpi/icon_invitecode.webp # main/src/main/res/mipmap-xxhdpi/icon_more.webp # main/src/main/res/mipmap-xxhdpi/icon_quxiao.webp # main/src/main/res/mipmap-xxhdpi/icon_searchbar.webp # main/src/main/res/mipmap-xxhdpi/icon_username.webp # main/src/main/res/mipmap-xxhdpi/icon_yongh.webp # main/src/main/res/mipmap-xxhdpi/icon_zhubo.webp # main/src/main/res/mipmap-xxhdpi/img_bg.webp # main/src/main/res/mipmap-xxhdpi/img_news_instructor_bg.webp # main/src/main/res/mipmap-xxhdpi/img_news_interaction.webp # main/src/main/res/mipmap-xxhdpi/img_news_notice.webp # main/src/main/res/mipmap-xxhdpi/img_news_online.webp # main/src/main/res/mipmap-xxhdpi/img_search_empty.webp # main/src/main/res/mipmap-xxhdpi/img_system_messages.webp # main/src/main/res/mipmap-xxhdpi/rc_unread_count_bg_normal.webp # main/src/main/res/mipmap-xxhdpi/superemperor_recommendation.webp # main/src/main/res/mipmap-xxhdpi/waiting_tip.webp # main/src/main/res/mipmap-xxhdpi/zl_user_pass.webp # main/src/main/res/mipmap-xxxhdpi/bg_complete_information_progress.webp # main/src/main/res/mipmap-xxxhdpi/bg_complete_information_progress2.webp # main/src/main/res/mipmap-xxxhdpi/bg_submit.webp # main/src/main/res/mipmap-xxxhdpi/bg_submit_cancel.webp # main/src/main/res/mipmap-xxxhdpi/bg_zl.webp # main/src/main/res/mipmap-xxxhdpi/icon_code.webp # main/src/main/res/mipmap-xxxhdpi/icon_complete_information.webp # main/src/main/res/mipmap-xxxhdpi/icon_facebook.webp # main/src/main/res/mipmap-xxxhdpi/icon_golden_bean.webp # main/src/main/res/mipmap-xxxhdpi/icon_medal.webp # main/src/main/res/mipmap-xxxhdpi/icon_password.webp # main/src/main/res/mipmap-xxxhdpi/icon_phone.webp # main/src/main/res/mipmap-xxxhdpi/icon_phone2.webp # main/src/main/res/mipmap-xxxhdpi/icon_position.webp # main/src/main/res/mipmap-xxxhdpi/icon_profile_photo.webp # main/src/main/res/mipmap-xxxhdpi/icon_twitter.webp # main/src/main/res/mipmap-xxxhdpi/icons_password.webp # main/src/main/res/mipmap-xxxhdpi/img_no_gz.webp # main/src/main/res/mipmap-xxxhdpi/login_facebook.webp # main/src/main/res/mipmap-xxxhdpi/login_google.webp # main/src/main/res/mipmap-xxxhdpi/login_line.webp # main/src/main/res/mipmap-xxxhdpi/login_phone.webp # main/src/main/res/mipmap-xxxhdpi/login_ties_bg.webp # main/src/main/res/mipmap-xxxhdpi/special_icon_off.webp # main/src/main/res/mipmap-xxxhdpi/special_icon_on.webp # main/src/main/res/mipmap-xxxhdpi/successfully.webp # main/src/main/res/mipmap-zh/ic_reward_tab_normal.webp # main/src/main/res/mipmap-zh/ic_reward_tab_ultimate.webp # main/src/main/res/mipmap-zh/ic_reward_tab_ultimate_unselect.webp # main/src/main/res/mipmap-zh/ic_reward_tab_upgrade.webp # main/src/main/res/mipmap-zh/ic_reward_tab_upgrade_unselect.webp # main/src/main/res/mipmap-zh/ic_zl_battlepass_reward_item_received.webp # main/src/main/res/mipmap-zh/ic_zl_tab1.webp # main/src/main/res/mipmap-zh/ic_zl_tab1_unselect.webp # main/src/main/res/mipmap-zh/ic_zl_tab2.webp # main/src/main/res/mipmap-zh/ic_zl_tab2_unselect.webp # main/src/main/res/mipmap-zh/ic_zl_tab3.webp # main/src/main/res/mipmap-zh/ic_zl_tab3_unselect.webp # main/src/main/res/mipmap-zh/icon_bp_flot.webp # main/src/main/res/mipmap-zh/icon_main_live_type_1.webp # main/src/main/res/mipmap-zh/multiplayerpk.webp # main/src/main/res/mipmap-zh/zl_user_pass.webp
@@ -145,6 +145,10 @@ public class CommonAppConfig {
|
||||
private int mAppIconRes;
|
||||
private String mAppName;
|
||||
private Boolean mTiBeautyEnable;//是否使用萌颜 true使用萌颜 false 使用基础美颜
|
||||
// 美颜SDK是否已经加载成功
|
||||
public static boolean faceSDKIsLoadSuceness;
|
||||
// 美颜SDK是否下载失败或者解压失败(自动试3次)
|
||||
public static boolean faceSDKDownLoadOrUnZipFailed = false;
|
||||
|
||||
public String getUid() {
|
||||
if (TextUtils.isEmpty(mUid)) {
|
||||
|
||||
@@ -205,7 +205,9 @@ public class Constants {
|
||||
public static final String Lucky100Check = "Lucky100Check";//幸运天使
|
||||
|
||||
public static final String PrankSendData = "PrankSendData";//整蛊进度
|
||||
public static final String SOCKET_SEND_NEW_TASK_PUSH="SendNewTaskPush";//直播间-新用户完成任务push
|
||||
|
||||
public static final String SOCKET_SEND_NEW_TASK_IM ="SendNewTaskIM"; //直播间—新用户领取礼物IM
|
||||
public static final int SOCKET_WHAT_CONN = 0;
|
||||
public static final int SOCKET_WHAT_DISCONN = 2;
|
||||
public static final int SOCKET_WHAT_BROADCAST = 1;
|
||||
@@ -315,4 +317,11 @@ public class Constants {
|
||||
public static boolean isShowLiveDialog = false;//是否在直播间打开单聊
|
||||
public static int firstInto = 0;//
|
||||
|
||||
// 声网so
|
||||
public static final String DOWNLOAD_Agora_SO = "agora_lib";
|
||||
public static final String Agora_SO_Name = "agora_lib.zip";
|
||||
// 美颜SO
|
||||
public static final String DOWNLOAD_FaceUnity_SO = "faceunity_lib";
|
||||
public static final String FaceUnity_SO_Name = "faceunity_lib.zip";
|
||||
|
||||
}
|
||||
|
||||
@@ -9,11 +9,6 @@ import android.view.ViewGroup;
|
||||
import android.view.animation.AccelerateInterpolator;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import com.tencent.rtmp.ITXVodPlayListener;
|
||||
import com.tencent.rtmp.TXLiveConstants;
|
||||
import com.tencent.rtmp.TXVodPlayConfig;
|
||||
import com.tencent.rtmp.TXVodPlayer;
|
||||
import com.tencent.rtmp.ui.TXCloudVideoView;
|
||||
import com.yunbao.common.R;
|
||||
import com.yunbao.common.bean.ImageEntity;
|
||||
|
||||
@@ -23,13 +18,13 @@ import java.util.List;
|
||||
* Created by Haoxuan Chen on 2022/05/4.
|
||||
* Description:查看视频
|
||||
*/
|
||||
public class PreviewVideoActivity extends AbsActivity implements ITXVodPlayListener, View.OnClickListener {
|
||||
public class PreviewVideoActivity extends AbsActivity implements View.OnClickListener {
|
||||
|
||||
View v_back;
|
||||
private List<ImageEntity> mSelectedImages;
|
||||
private TXCloudVideoView mTXCloudVideoView;
|
||||
private TXVodPlayer mPlayer;
|
||||
private TXVodPlayConfig mTXVodPlayConfig;
|
||||
// private TXCloudVideoView mTXCloudVideoView;
|
||||
// private TXVodPlayer mPlayer;
|
||||
// private TXVodPlayConfig mTXVodPlayConfig;
|
||||
private boolean mStartPlay;
|
||||
private String mCachePath;
|
||||
private boolean mPaused;//生命周期暂停
|
||||
@@ -43,7 +38,7 @@ public class PreviewVideoActivity extends AbsActivity implements ITXVodPlayListe
|
||||
public void main(Bundle savedInstanceState) {
|
||||
mSelectedImages = getIntent().getParcelableArrayListExtra("preview_images");
|
||||
v_back = findViewById(R.id.v_back);
|
||||
mTXCloudVideoView = (TXCloudVideoView) findViewById(R.id.video_view);
|
||||
// mTXCloudVideoView = (TXCloudVideoView) findViewById(R.id.video_view);
|
||||
|
||||
v_back.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
@@ -65,7 +60,7 @@ public class PreviewVideoActivity extends AbsActivity implements ITXVodPlayListe
|
||||
*/
|
||||
private void playAdVideo() {
|
||||
mCachePath = mContext.getCacheDir().getAbsolutePath();
|
||||
mTXCloudVideoView = (TXCloudVideoView) findViewById(R.id.video_view);
|
||||
/* mTXCloudVideoView = (TXCloudVideoView) findViewById(R.id.video_view);
|
||||
mTXCloudVideoView.setRenderMode(TXLiveConstants.RENDER_MODE_FULL_FILL_SCREEN);
|
||||
mPlayer = new TXVodPlayer(mContext);
|
||||
mTXVodPlayConfig = new TXVodPlayConfig();
|
||||
@@ -74,7 +69,7 @@ public class PreviewVideoActivity extends AbsActivity implements ITXVodPlayListe
|
||||
mPlayer.setConfig(mTXVodPlayConfig);
|
||||
mPlayer.setAutoPlay(true);
|
||||
mPlayer.setVodListener(this);
|
||||
mPlayer.setPlayerView(mTXCloudVideoView);
|
||||
mPlayer.setPlayerView(mTXCloudVideoView);*/
|
||||
findViewById(R.id.root).setOnClickListener(this);
|
||||
mVideoCover = findViewById(R.id.video_cover);
|
||||
mPlayBtn = findViewById(R.id.btn_play);
|
||||
@@ -104,7 +99,7 @@ public class PreviewVideoActivity extends AbsActivity implements ITXVodPlayListe
|
||||
if (TextUtils.isEmpty(url)) {
|
||||
return;
|
||||
}
|
||||
if (mTXVodPlayConfig == null) {
|
||||
/* if (mTXVodPlayConfig == null) {
|
||||
mTXVodPlayConfig = new TXVodPlayConfig();
|
||||
mTXVodPlayConfig.setMaxCacheItems(15);
|
||||
mTXVodPlayConfig.setProgressInterval(200);
|
||||
@@ -117,14 +112,14 @@ public class PreviewVideoActivity extends AbsActivity implements ITXVodPlayListe
|
||||
mPlayer.setConfig(mTXVodPlayConfig);
|
||||
if (mPlayer != null) {
|
||||
mPlayer.startPlay(url);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取到视频宽高回调
|
||||
*/
|
||||
public void onVideoSizeChanged(float videoWidth, float videoHeight) {
|
||||
if (mTXCloudVideoView != null && videoWidth > 0 && videoHeight > 0) {
|
||||
/*if (mTXCloudVideoView != null && videoWidth > 0 && videoHeight > 0) {
|
||||
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mTXCloudVideoView.getLayoutParams();
|
||||
int targetH = 0;
|
||||
if (videoWidth / videoHeight > 0.5625f) {//横屏 9:16=0.5625
|
||||
@@ -139,26 +134,26 @@ public class PreviewVideoActivity extends AbsActivity implements ITXVodPlayListe
|
||||
if (mVideoCover != null && mVideoCover.getVisibility() == View.VISIBLE) {
|
||||
mVideoCover.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止播放
|
||||
*/
|
||||
public void stopPlay() {
|
||||
if (mPlayer != null) {
|
||||
/* if (mPlayer != null) {
|
||||
mPlayer.stopPlay(false);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
/**
|
||||
* 循环播放
|
||||
*/
|
||||
private void replay() {
|
||||
if (mPlayer != null) {
|
||||
/* if (mPlayer != null) {
|
||||
mPlayer.seek(0);
|
||||
mPlayer.resume();
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -194,13 +189,13 @@ public class PreviewVideoActivity extends AbsActivity implements ITXVodPlayListe
|
||||
if (!mStartPlay) {
|
||||
return;
|
||||
}
|
||||
if (mPlayer != null) {
|
||||
/* if (mPlayer != null) {
|
||||
if (mClickPaused) {
|
||||
mPlayer.resume();
|
||||
} else {
|
||||
mPlayer.pause();
|
||||
}
|
||||
}
|
||||
}*/
|
||||
mClickPaused = !mClickPaused;
|
||||
if (mClickPaused) {
|
||||
showPlayBtn();
|
||||
@@ -212,52 +207,13 @@ public class PreviewVideoActivity extends AbsActivity implements ITXVodPlayListe
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 播放器事件回调
|
||||
*/
|
||||
@Override
|
||||
public void onPlayEvent(TXVodPlayer txVodPlayer, int e, Bundle bundle) {
|
||||
switch (e) {
|
||||
case TXLiveConstants.PLAY_EVT_PLAY_BEGIN://加载完成,开始播放的回调
|
||||
mStartPlay = true;
|
||||
if (mActionListener != null) {
|
||||
mActionListener.onPlayBegin();
|
||||
}
|
||||
|
||||
break;
|
||||
case TXLiveConstants.PLAY_EVT_PLAY_LOADING: //开始加载的回调
|
||||
if (mActionListener != null) {
|
||||
mActionListener.onPlayLoading();
|
||||
}
|
||||
break;
|
||||
case TXLiveConstants.PLAY_EVT_PLAY_END://获取到视频播放完毕的回调
|
||||
replay();
|
||||
break;
|
||||
case TXLiveConstants.PLAY_EVT_RCV_FIRST_I_FRAME://获取到视频首帧回调
|
||||
if (mActionListener != null) {
|
||||
mActionListener.onFirstFrame();
|
||||
}
|
||||
if (mPaused && mPlayer != null) {
|
||||
mPlayer.pause();
|
||||
}
|
||||
break;
|
||||
case TXLiveConstants.PLAY_EVT_CHANGE_RESOLUTION://获取到视频宽高回调
|
||||
onVideoSizeChanged(bundle.getInt("EVT_PARAM1", 0), bundle.getInt("EVT_PARAM2", 0));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNetStatus(TXVodPlayer txVodPlayer, Bundle bundle) {
|
||||
|
||||
}
|
||||
|
||||
public void release() {
|
||||
if (mPlayer != null) {
|
||||
/* if (mPlayer != null) {
|
||||
mPlayer.stopPlay(false);
|
||||
mPlayer.setPlayListener(null);
|
||||
}
|
||||
mPlayer = null;
|
||||
mPlayer = null;*/
|
||||
mActionListener = null;
|
||||
}
|
||||
|
||||
@@ -279,9 +235,9 @@ public class PreviewVideoActivity extends AbsActivity implements ITXVodPlayListe
|
||||
*/
|
||||
public void pausePlay() {
|
||||
mPaused = true;
|
||||
if (!mClickPaused && mPlayer != null) {
|
||||
/* if (!mClickPaused && mPlayer != null) {
|
||||
mPlayer.pause();
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -289,9 +245,9 @@ public class PreviewVideoActivity extends AbsActivity implements ITXVodPlayListe
|
||||
*/
|
||||
public void resumePlay() {
|
||||
if (mPaused) {
|
||||
if (!mClickPaused && mPlayer != null) {
|
||||
/* if (!mClickPaused && mPlayer != null) {
|
||||
mPlayer.resume();
|
||||
}
|
||||
}*/
|
||||
}
|
||||
mPaused = false;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,9 @@ import com.yunbao.common.CommonAppContext;
|
||||
import com.yunbao.common.Constants;
|
||||
import com.yunbao.common.HtmlConfig;
|
||||
import com.yunbao.common.R;
|
||||
import com.yunbao.common.bean.IMLoginModel;
|
||||
import com.yunbao.common.bean.LiveBean;
|
||||
import com.yunbao.common.dialog.GiftWallDialog;
|
||||
import com.yunbao.common.event.JavascriptInterfaceEvent;
|
||||
import com.yunbao.common.event.LiveRoomChangeEvent;
|
||||
import com.yunbao.common.http.LiveHttpUtil;
|
||||
|
||||
@@ -117,6 +117,37 @@ public class EnterRoomInfoModel extends BaseModel {
|
||||
@SerializedName("connection_info")
|
||||
private LivePkMicModel connectionInfo;
|
||||
|
||||
@SerializedName("is_first_entry")
|
||||
private String isFirstEntry;
|
||||
@SerializedName("is_new_user")
|
||||
private String isNewUser;
|
||||
@SerializedName("is_com_all")
|
||||
private String isComAll;
|
||||
|
||||
public String getIsFirstEntry() {
|
||||
return isFirstEntry;
|
||||
}
|
||||
|
||||
public void setIsFirstEntry(String isFirstEntry) {
|
||||
this.isFirstEntry = isFirstEntry;
|
||||
}
|
||||
|
||||
public String getIsNewUser() {
|
||||
return isNewUser;
|
||||
}
|
||||
|
||||
public void setIsNewUser(String isNewUser) {
|
||||
this.isNewUser = isNewUser;
|
||||
}
|
||||
|
||||
public String getIsComAll() {
|
||||
return isComAll;
|
||||
}
|
||||
|
||||
public void setIsComAll(String isComAll) {
|
||||
this.isComAll = isComAll;
|
||||
}
|
||||
|
||||
public LivePkMicModel getConnectionInfo() {
|
||||
return connectionInfo;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,21 @@ public class LiveAiRobotBean extends BaseModel {
|
||||
@SerializedName("ai_gz")
|
||||
private int autoRequestFollowNumber;//自动求关注已配置数量
|
||||
|
||||
@SerializedName("ai_langue")//0中文1英文
|
||||
private int aiLangue;
|
||||
|
||||
public int getAiLangue() {
|
||||
return aiLangue;
|
||||
}
|
||||
|
||||
public Boolean isLangueCn(){
|
||||
return aiLangue==0;
|
||||
}
|
||||
|
||||
public void setAiLangue(int aiLangue) {
|
||||
this.aiLangue = aiLangue;
|
||||
}
|
||||
|
||||
public LiveAiRobotBean() {
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.yunbao.common.bean;
|
||||
|
||||
public class ReportInfoBean {
|
||||
/* {
|
||||
"touid": 99455,
|
||||
"user_nicename": "小盒主播2",
|
||||
"avatar": "https://downs.yaoulive.com/20240516102555_cf329486d39121125b182a779bbc3278?imageView2/2/w/600/h/600"
|
||||
}*/
|
||||
|
||||
private String touid;
|
||||
private String user_nicename;
|
||||
private String avatar;
|
||||
|
||||
public String getTouid() {
|
||||
return touid;
|
||||
}
|
||||
|
||||
public void setTouid(String touid) {
|
||||
this.touid = touid;
|
||||
}
|
||||
|
||||
public String getUser_nicename() {
|
||||
return user_nicename;
|
||||
}
|
||||
|
||||
public void setUser_nicename(String user_nicename) {
|
||||
this.user_nicename = user_nicename;
|
||||
}
|
||||
|
||||
public String getAvatar() {
|
||||
return avatar;
|
||||
}
|
||||
|
||||
public void setAvatar(String avatar) {
|
||||
this.avatar = avatar;
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,7 @@ public abstract class AbsDialogFragment extends DialogFragment {
|
||||
|
||||
protected Context mContext;
|
||||
protected View mRootView;
|
||||
protected Dialog dialog;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
@@ -37,7 +38,7 @@ public abstract class AbsDialogFragment extends DialogFragment {
|
||||
} else {
|
||||
mRootView = LayoutInflater.from(mContext).inflate(getLayoutId(), null);
|
||||
}
|
||||
Dialog dialog = new Dialog(mContext, getDialogStyle());
|
||||
dialog = new Dialog(mContext, getDialogStyle());
|
||||
dialog.setContentView(mRootView);
|
||||
dialog.setCancelable(canCancel());
|
||||
dialog.setCanceledOnTouchOutside(canCancel());
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.yunbao.common.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.lxj.xpopup.core.CenterPopupView;
|
||||
import com.yunbao.common.R;
|
||||
import com.yunbao.common.http.live.LiveNetManager;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
|
||||
public class DragonRuleConfirmPopup extends CenterPopupView {
|
||||
private TextView text_1;
|
||||
private TextView text_2;
|
||||
private TextView text_3;
|
||||
private ImageView closed_iv;
|
||||
private String mLiveUid;
|
||||
private int mGoldMoney;// 總數
|
||||
private int mMoney;// 輸入的
|
||||
|
||||
|
||||
|
||||
public DragonRuleConfirmPopup(Context context, long goldMoney, long money, String mLiveUid) {
|
||||
super(context);
|
||||
this.mGoldMoney = (int) goldMoney;
|
||||
this.mMoney =(int) money;
|
||||
this.mLiveUid = mLiveUid;
|
||||
|
||||
}
|
||||
|
||||
// 返回自定义弹窗的布局
|
||||
@Override
|
||||
protected int getImplLayoutId() {
|
||||
return R.layout.dragon_rule_popup_3;
|
||||
}
|
||||
|
||||
// 执行初始化操作,比如:findView,设置点击,或者任何你弹窗内的业务逻辑
|
||||
@Override
|
||||
protected void onCreate() {
|
||||
super.onCreate();
|
||||
text_1 = findViewById(R.id.text_1);
|
||||
text_2 = findViewById(R.id.text_2);
|
||||
text_3 = findViewById(R.id.text_3);
|
||||
closed_iv = findViewById(R.id.closed_iv);
|
||||
|
||||
text_1.setText(String.format(WordUtil.getString(R.string.dialog_jin_dou_1), mMoney));
|
||||
text_2.setText(String.format(WordUtil.getString(R.string.dialog_jin_dou_2), (mMoney/10)));
|
||||
text_3.setText(String.format(WordUtil.getString(R.string.dialog_jin_dou_3), mGoldMoney-mMoney));
|
||||
|
||||
ViewClicksAntiShake.clicksAntiShake(closed_iv, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.btn_confirm), new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
LiveNetManager.get(getContext())
|
||||
.sendMoneyLong(mLiveUid, String.valueOf(mMoney), new com.yunbao.common.http.base.HttpCallback<String>() {
|
||||
@Override
|
||||
public void onSuccess(String data) {
|
||||
dismiss();
|
||||
ToastUtil.show(WordUtil.isNewZh() ? "開啓成功" : "Open successfully");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
ToastUtil.show(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,6 @@ import com.yunbao.common.R;
|
||||
import com.yunbao.common.interfaces.ActivityResultCallback;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
|
||||
import cn.rongcloud.rtc.api.RCRTCEngine;
|
||||
|
||||
/**
|
||||
* Created by cxf on 2018/9/29.
|
||||
@@ -117,11 +116,6 @@ public class ProcessFragment extends Fragment {
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
try {
|
||||
RCRTCEngine.getInstance().getDefaultVideoStream().startCamera(null);
|
||||
}catch (Exception e){
|
||||
|
||||
}
|
||||
if (mActivityResultCallback != null) {
|
||||
if (resultCode == -1) {//RESULT_OK
|
||||
mActivityResultCallback.onSuccess(data);
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -240,13 +241,12 @@ public class ImgLoader {
|
||||
if (width != -1 && height != -1) {
|
||||
builder = builder.override(width, height);
|
||||
}
|
||||
builder.thumbnail(thumbnail).skipMemoryCache(SKIP_MEMORY_CACHE).into(new CustomTarget<Drawable>() {
|
||||
builder.skipMemoryCache(SKIP_MEMORY_CACHE).into(new CustomTarget<Drawable>() {
|
||||
|
||||
@Override
|
||||
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||
if (callback != null) {
|
||||
callback.onLoadSuccess(resource);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -68,5 +68,7 @@ public class LiveHttpConsts {
|
||||
public static final String ISHOTCARD = "isHotCard";
|
||||
public static final String USEHOTCARDUSERLIST = "useHotCardUserList";
|
||||
public static final String SETINSTRUCTORREMARK = "getInstructorRemark";
|
||||
public static final String SETREPORTREPLENISHMENT = "setReportReplenishment";
|
||||
public static final String GETREPORTINFO = "getReportInfo";
|
||||
|
||||
}
|
||||
|
||||
@@ -237,6 +237,7 @@ public class LiveHttpUtil {
|
||||
HttpClient.getInstance().get("yonghujubao", LiveHttpConsts.SET_REPORT)
|
||||
.params("touid", touid)
|
||||
.params("content", content)
|
||||
.params("app_type", "1")
|
||||
.execute(callback);
|
||||
}
|
||||
|
||||
@@ -248,6 +249,7 @@ public class LiveHttpUtil {
|
||||
.isMultipart(true)
|
||||
.params("touid", touid)
|
||||
.params("report_argument", report_argument)
|
||||
.params("app_type", "1")
|
||||
.params("content", content);
|
||||
if (file1 != null) {
|
||||
request.params("file1", file1);
|
||||
@@ -264,6 +266,36 @@ public class LiveHttpUtil {
|
||||
request.execute(callback);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 举报用户 + 图片 二次补充证据
|
||||
*/
|
||||
public static void setReportToSecondReport(int report_id, String content, File file1, File file2, File file3, HttpCallback callback) {
|
||||
PostRequest<JsonBean> request = HttpClient.getInstance().post("Live.setReportReplenishment", LiveHttpConsts.SETREPORTREPLENISHMENT)
|
||||
.isMultipart(true)
|
||||
.params("report_id", report_id)
|
||||
.params("content", content);
|
||||
if (file1 != null) {
|
||||
request.params("file1", file1);
|
||||
}
|
||||
if (file2 != null) {
|
||||
request.params("file2", file2);
|
||||
}
|
||||
if (file3 != null) {
|
||||
request.params("file3", file3);
|
||||
}
|
||||
request.execute(callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取被举报人的名字
|
||||
*/
|
||||
public static void getReportName(int report_id, HttpCallback callback) {
|
||||
HttpClient.getInstance().get("Live.getReportInfo", LiveHttpConsts.GETREPORTINFO)
|
||||
.params("report_id", report_id)
|
||||
.execute(callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* 直播间点击聊天列表和头像出现的弹窗
|
||||
*/
|
||||
|
||||
@@ -635,7 +635,8 @@ public interface PDLiveApi {
|
||||
@GET("/huoquxitongxiaoxixiangqing")
|
||||
Observable<ResponseModel<List<ListInfoMessageModel>>> getListInfo(
|
||||
@Query("type") String type,
|
||||
@Query("p") int p);
|
||||
@Query("p") int p,
|
||||
@Query("app_type") String app_type);
|
||||
|
||||
/**
|
||||
* 获取主播任务列表
|
||||
|
||||
@@ -26,5 +26,5 @@ public interface CheckLiveCallBack {
|
||||
*
|
||||
* @param error
|
||||
*/
|
||||
void onError(String error);
|
||||
void onError(String error,int code);
|
||||
}
|
||||
|
||||
@@ -445,12 +445,12 @@ public class LiveNetManager {
|
||||
}
|
||||
} else {
|
||||
if (callBack != null) {
|
||||
callBack.onError(listResponseModel.getData().getMsg());
|
||||
callBack.onError(listResponseModel.getData().getMsg(), listResponseModel.getData().getCode());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (callBack != null) {
|
||||
callBack.onError(listResponseModel.getData().getMsg());
|
||||
callBack.onError(listResponseModel.getData().getMsg(), listResponseModel.getData().getCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -459,7 +459,7 @@ public class LiveNetManager {
|
||||
public void accept(Throwable throwable) throws Exception {
|
||||
Log.e("异常", "checkLive: ", throwable);
|
||||
if (callBack != null) {
|
||||
callBack.onError(throwable.getMessage());
|
||||
callBack.onError(throwable.getMessage(), -1008611);
|
||||
}
|
||||
}
|
||||
}).isDisposed();
|
||||
@@ -1194,7 +1194,7 @@ public class LiveNetManager {
|
||||
|
||||
public void getListInfo(String type, int p, HttpCallback<List<ListInfoMessageModel>> callback) {
|
||||
API.get().pdLiveApi(mContext)
|
||||
.getListInfo(type, p)
|
||||
.getListInfo(type, p,"1")
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(listResponseModel -> {
|
||||
|
||||
@@ -1,270 +0,0 @@
|
||||
package com.yunbao.common.manager;
|
||||
|
||||
import static cn.rongcloud.rtc.base.RTCErrorCode.JOIN_CHAT_ROOM_TIMEOUT;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
import cn.rongcloud.rtc.api.RCRTCEngine;
|
||||
import cn.rongcloud.rtc.api.RCRTCRemoteUser;
|
||||
import cn.rongcloud.rtc.api.RCRTCRoom;
|
||||
import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback;
|
||||
import cn.rongcloud.rtc.api.callback.IRCRTCRoomEventsListener;
|
||||
import cn.rongcloud.rtc.api.stream.RCRTCInputStream;
|
||||
import cn.rongcloud.rtc.base.RTCErrorCode;
|
||||
|
||||
/**
|
||||
* RTC管理类,负责管理申请、同意、拒绝PK
|
||||
*/
|
||||
public class IMRTCManager {
|
||||
private static IMRTCManager manager;
|
||||
private RCRTCRoom rtcRoom;
|
||||
private List<String> requestUid;
|
||||
|
||||
private IMRTCManager() {
|
||||
requestUid = new ArrayList<>();
|
||||
}
|
||||
|
||||
public static IMRTCManager getInstance() {
|
||||
if (manager == null) {
|
||||
manager = new IMRTCManager();
|
||||
}
|
||||
return manager;
|
||||
}
|
||||
|
||||
public void setRtcRoom(RCRTCRoom rtcRoom) {
|
||||
this.rtcRoom = rtcRoom;
|
||||
}
|
||||
|
||||
/**
|
||||
* 响应PK请求
|
||||
*
|
||||
* @param liveUid 对方房间号
|
||||
* @param agree 是否同意
|
||||
* @param extra 扩展参数
|
||||
* @param callback 回调
|
||||
*/
|
||||
public void responseJoinOtherRoom(String liveUid, boolean agree, String extra, IRCRTCResultCallback callback) {
|
||||
if (rtcRoom != null) {
|
||||
/*
|
||||
inviterRoomId - 邀请者所在房间 id,
|
||||
inviterUserId - 邀请者用户 id
|
||||
agree - 被邀请者是否同意连麦邀请
|
||||
inviteeAutoMix - 是否将被邀请者音视频资源发送到邀请人房间中合流
|
||||
1:inviteeAutoMix 为true时:
|
||||
1.1:如果邀请方在发送连麦请求之前发布了资源,当被邀请方加入邀请者房间成功后,服务器会把邀请方流资源合并到被邀请方视图(默认仅悬浮布局合流)上。
|
||||
1.2:如果邀请方在发送连麦请求之前没有发布资源,将会在邀请方发布资源成功后,服务器才会把邀请方的资源合并到被邀请方视图(默认仅悬浮布局合流)上。
|
||||
2: 无论为true或false,双方都可以使用RCRTCLiveInfo.setMixConfig(RCRTCMixConfig, IRCRTCResultCallback) 方法主动设置合流布局。一旦主动设置过合流布局,后续音视频直播过程中设置的自动合流参数将失效。
|
||||
extra - 扩展字段,默认为空
|
||||
*/
|
||||
rtcRoom.getLocalUser().responseJoinOtherRoom(liveUid, liveUid, agree, agree, extra, callback);
|
||||
} else {
|
||||
callback.onFailed(RTCErrorCode.RongRTCCodeIMError);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 申请PK
|
||||
*
|
||||
* @param liveUid 对方房间号
|
||||
* @param inviterAutoMix 是否将邀请者音视频资源发送到被邀请人房间中合流
|
||||
* @param extra 扩展参数
|
||||
* @param callback 回调
|
||||
*/
|
||||
public void requestJoinOtherRoom(String liveUid, boolean inviterAutoMix, String extra, IRCRTCResultCallback callback) {
|
||||
if (requestUid.contains(liveUid)) {
|
||||
callback.onFailed(RTCErrorCode.RongRTCCodeJoinRepeatedRoom);
|
||||
return;
|
||||
}
|
||||
if (rtcRoom != null && rtcRoom.getLocalUser() != null) {
|
||||
/*
|
||||
inviteeRoomId - 被邀请者所在房间 id
|
||||
inviteeUserId - 被邀请用户 id
|
||||
inviterAutoMix - 是否将邀请者音视频资源发送到被邀请人房间中合流
|
||||
1: inviterAutoMix为true时:
|
||||
1.1:如果被邀请方在加入邀请方房间之前发布了资源,当被邀请方加入邀请者房间成功后,服务器会把被邀请方流资源合并到邀请方视图 ·(默认仅悬浮布局合流)上。
|
||||
1.2:如果被邀请方在加入邀请方房间之前没有发布过资源,将会在被邀请方发布资源成功后,服务器会把被邀请方流资源合并到邀请方视图(默认仅悬浮布局合流)上。
|
||||
2:无论为true或false,双方都可以使用RCRTCLiveInfo.setMixConfig(RCRTCMixConfig, IRCRTCResultCallback) 方法主动设置合流布局。一旦主动设置过合流布局,后续音视频直播过程中设置的自动合流参数将失效。
|
||||
extra - 扩展字段,默认为空
|
||||
*/
|
||||
rtcRoom.getLocalUser().requestJoinOtherRoom(liveUid, liveUid, inviterAutoMix, extra, new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
callback.onSuccess();
|
||||
if (!RandomPkManager.getInstance().isRandomModel()) {
|
||||
if(WordUtil.isNewZh()) {
|
||||
ToastUtil.show("发起邀请成功");
|
||||
}else{
|
||||
ToastUtil.show("successful");
|
||||
}
|
||||
}
|
||||
requestUid.add(liveUid);
|
||||
startRequestTimeoutTask(liveUid);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode errorCode) {
|
||||
if (!RandomPkManager.getInstance().isRandomModel()) {
|
||||
if(WordUtil.isNewZh()) {
|
||||
ToastUtil.show("邀请失败 " + errorCode.getValue());
|
||||
}else{
|
||||
ToastUtil.show("invite failed:" +errorCode.getValue());
|
||||
}
|
||||
}
|
||||
if (RandomPkManager.getInstance().isRequestPk()) {
|
||||
RandomPkManager.getInstance().setPkStatus(RandomPkManager.PK_STATUS_REFUSE);
|
||||
}
|
||||
requestUid.remove(liveUid);
|
||||
callback.onFailed(errorCode);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
callback.onFailed(RTCErrorCode.RongRTCCodeIMError);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册监听对方通知类,还没搞清楚具体用法,先搁置
|
||||
*
|
||||
* @param listener
|
||||
*/
|
||||
public void registerRoomListener(IRCRTCRoomEventsListener listener) {
|
||||
if (rtcRoom != null && rtcRoom.getLocalUser() != null) {
|
||||
rtcRoom.registerRoomListener(new IRCRTCRoomEventsListener() {
|
||||
@Override
|
||||
public void onRemoteUserPublishResource(RCRTCRemoteUser remoteUser, List<RCRTCInputStream> streams) {
|
||||
listener.onRemoteUserPublishResource(remoteUser, streams);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemoteUserMuteAudio(RCRTCRemoteUser remoteUser, RCRTCInputStream stream, boolean mute) {
|
||||
listener.onRemoteUserMuteAudio(remoteUser, stream, mute);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemoteUserMuteVideo(RCRTCRemoteUser remoteUser, RCRTCInputStream stream, boolean mute) {
|
||||
listener.onRemoteUserMuteVideo(remoteUser, stream, mute);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemoteUserUnpublishResource(RCRTCRemoteUser remoteUser, List<RCRTCInputStream> streams) {
|
||||
listener.onRemoteUserUnpublishResource(remoteUser, streams);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserJoined(RCRTCRemoteUser remoteUser) {
|
||||
listener.onUserJoined(remoteUser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserLeft(RCRTCRemoteUser remoteUser) {
|
||||
listener.onUserLeft(remoteUser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserOffline(RCRTCRemoteUser remoteUser) {
|
||||
listener.onUserOffline(remoteUser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPublishLiveStreams(List<RCRTCInputStream> streams) {
|
||||
listener.onPublishLiveStreams(streams);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUnpublishLiveStreams(List<RCRTCInputStream> streams) {
|
||||
listener.onUnpublishLiveStreams(streams);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消邀请
|
||||
*
|
||||
* @param liveUid 房间号
|
||||
* @param extra 扩展参数
|
||||
* @param callback 回调
|
||||
*/
|
||||
public void cancelRequestJoinOtherRoom(String liveUid, String extra, IRCRTCResultCallback callback) {
|
||||
if (rtcRoom != null && rtcRoom.getLocalUser() != null) {
|
||||
rtcRoom.getLocalUser().cancelRequestJoinOtherRoom(liveUid, liveUid, extra, new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
callback.onSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode errorCode) {
|
||||
callback.onFailed(errorCode);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
callback.onFailed(RTCErrorCode.RongRTCCodeIMError);
|
||||
}
|
||||
}
|
||||
|
||||
public void callPkSuccess(String liveUid) {
|
||||
requestUid.remove(liveUid);
|
||||
}
|
||||
|
||||
private void startRequestTimeoutTask(String liveUid) {
|
||||
new Timer().schedule(new TimerTask() {
|
||||
int waitTime = 15;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (!requestUid.contains(liveUid)) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
if (waitTime-- == 0) {
|
||||
//callback.onFailed(JOIN_CHAT_ROOM_TIMEOUT);
|
||||
cancelRequestJoinOtherRoom(liveUid, "extra", new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
requestUid.remove(liveUid);
|
||||
if (RandomPkManager.getInstance().isRandomModel()) {
|
||||
RandomPkManager.getInstance().setPkStatus(RandomPkManager.PK_STATUS_REFUSE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode errorCode) {
|
||||
requestUid.remove(liveUid);
|
||||
if (RandomPkManager.getInstance().isRandomModel()) {
|
||||
RandomPkManager.getInstance().setPkStatus(RandomPkManager.PK_STATUS_REFUSE);
|
||||
}
|
||||
}
|
||||
});
|
||||
cancel();
|
||||
}
|
||||
}
|
||||
}, 1000, 1000);
|
||||
}
|
||||
|
||||
public void leaveOtherRoom(String roomId,
|
||||
boolean notifyFinished,
|
||||
IRCRTCResultCallback callBack) {
|
||||
RCRTCEngine.getInstance().leaveOtherRoom(roomId, notifyFinished, new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
callBack.onSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode rtcErrorCode) {
|
||||
callBack.onFailed(rtcErrorCode);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,559 +0,0 @@
|
||||
package com.yunbao.common.manager.imrongcloud;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.yunbao.common.CommonAppContext;
|
||||
import com.yunbao.common.bean.IMLoginModel;
|
||||
import com.yunbao.common.bean.SudGameChatImModel;
|
||||
import com.yunbao.common.bean.SudGameUserModel;
|
||||
import com.yunbao.common.event.SudGameSocketImEvent;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import cn.rongcloud.rtc.api.RCRTCEngine;
|
||||
import cn.rongcloud.rtc.api.RCRTCRemoteUser;
|
||||
import cn.rongcloud.rtc.api.RCRTCRoom;
|
||||
import cn.rongcloud.rtc.api.RCRTCRoomConfig;
|
||||
import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback;
|
||||
import cn.rongcloud.rtc.api.callback.IRCRTCResultDataCallback;
|
||||
import cn.rongcloud.rtc.api.callback.IRCRTCRoomEventsListener;
|
||||
import cn.rongcloud.rtc.api.stream.RCRTCInputStream;
|
||||
import cn.rongcloud.rtc.base.RCRTCParamsType;
|
||||
import cn.rongcloud.rtc.base.RCRTCRoomType;
|
||||
import cn.rongcloud.rtc.base.RTCErrorCode;
|
||||
import io.rong.imlib.IRongCallback;
|
||||
import io.rong.imlib.IRongCoreCallback;
|
||||
import io.rong.imlib.IRongCoreEnum;
|
||||
import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.chatroom.base.RongChatRoomClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.Message;
|
||||
import io.rong.message.TextMessage;
|
||||
|
||||
public class GameRyMicManager {
|
||||
MeetingCallback mMeetingCallback = null;
|
||||
private RCRTCRoom mRtcRoom = null;
|
||||
private String mRoomID = "";
|
||||
|
||||
|
||||
private final IRCRTCRoomEventsListener roomEventsListener = new IRCRTCRoomEventsListener() {
|
||||
/**
|
||||
* 房间内用户发布资源
|
||||
*
|
||||
* @param rcrtcRemoteUser 远端用户
|
||||
* @param list 发布的资源
|
||||
*/
|
||||
@Override
|
||||
public void onRemoteUserPublishResource(RCRTCRemoteUser rcrtcRemoteUser, final List<RCRTCInputStream> list) {
|
||||
// subscribeAVStream();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemoteUserMuteAudio(RCRTCRemoteUser rcrtcRemoteUser, RCRTCInputStream rcrtcInputStream, boolean b) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemoteUserMuteVideo(RCRTCRemoteUser rcrtcRemoteUser, RCRTCInputStream rcrtcInputStream, boolean b) {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onRemoteUserUnpublishResource(RCRTCRemoteUser rcrtcRemoteUser, List<RCRTCInputStream> list) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户加入房间
|
||||
*
|
||||
* @param rcrtcRemoteUser 远端用户
|
||||
*/
|
||||
@Override
|
||||
public void onUserJoined(final RCRTCRemoteUser rcrtcRemoteUser) {
|
||||
try {
|
||||
getView().onUserJoined(rcrtcRemoteUser);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户离开房间
|
||||
*
|
||||
* @param rcrtcRemoteUser 远端用户
|
||||
*/
|
||||
@Override
|
||||
public void onUserLeft(RCRTCRemoteUser rcrtcRemoteUser) {
|
||||
try {
|
||||
getView().onUserLeft(rcrtcRemoteUser);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserOffline(RCRTCRemoteUser rcrtcRemoteUser) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPublishLiveStreams(List<RCRTCInputStream> list) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUnpublishLiveStreams(List<RCRTCInputStream> list) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 自己退出房间。 例如断网退出等
|
||||
* @param i 状态码
|
||||
*/
|
||||
@Override
|
||||
public void onLeaveRoom(int i) {
|
||||
}
|
||||
};
|
||||
|
||||
protected MeetingCallback getView() {
|
||||
if (mMeetingCallback == null) {
|
||||
throw new IllegalStateException("view is not attached");
|
||||
} else {
|
||||
return mMeetingCallback;
|
||||
}
|
||||
}
|
||||
|
||||
public void attachView(MeetingCallback callback) {
|
||||
mMeetingCallback = callback;
|
||||
}
|
||||
|
||||
public void detachView() {
|
||||
mMeetingCallback = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主动订阅远端用户发布的流
|
||||
* 视频流需要用户设置用于显示载体的videoview
|
||||
*/
|
||||
public void subscribeAVStream() {
|
||||
if (mRtcRoom == null || mRtcRoom.getRemoteUsers() == null) {
|
||||
return;
|
||||
}
|
||||
final List<RCRTCInputStream> inputStreams = new ArrayList<>();
|
||||
for (final RCRTCRemoteUser remoteUser : mRtcRoom.getRemoteUsers()) {
|
||||
if (remoteUser.getStreams().size() == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
inputStreams.addAll(remoteUser.getStreams());
|
||||
|
||||
}
|
||||
|
||||
if (inputStreams.size() == 0) {
|
||||
return;
|
||||
}
|
||||
mRtcRoom.getLocalUser().subscribeStreams(inputStreams, new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
|
||||
|
||||
try {
|
||||
getView().onSubscribeSuccess(inputStreams);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode errorCode) {
|
||||
try {
|
||||
getView().onSubscribeFailed();
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void refreshStreams(List<SudGameUserModel> personList) {
|
||||
|
||||
final List<RCRTCInputStream> inputStreams = new ArrayList<>();
|
||||
|
||||
for (SudGameUserModel sudGameUserModel : personList) {
|
||||
List<RCRTCRemoteUser> rcrtcRemoteUsers = mRtcRoom.getRemoteUsers();
|
||||
|
||||
for (RCRTCRemoteUser rcrtcRemoteUser : rcrtcRemoteUsers) {
|
||||
if (TextUtils.equals(rcrtcRemoteUser.getUserId(), String.valueOf(sudGameUserModel.getId()))) {
|
||||
for (RCRTCInputStream rcrtcInputStream : rcrtcRemoteUser.getStreams()) {
|
||||
rcrtcInputStream.mute(sudGameUserModel.getMicStatus() == 3);
|
||||
}
|
||||
inputStreams.addAll(rcrtcRemoteUser.getStreams());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (inputStreams.size() == 0) {
|
||||
return;
|
||||
}
|
||||
mRtcRoom.getLocalUser().subscribeStreams(inputStreams, new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
|
||||
|
||||
try {
|
||||
getView().onSubscribeSuccess(inputStreams);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode errorCode) {
|
||||
try {
|
||||
getView().onSubscribeFailed();
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void refreshStreams(String userID, boolean mute, int position) {
|
||||
|
||||
final List<RCRTCInputStream> inputStreams = new ArrayList<>();
|
||||
|
||||
List<RCRTCRemoteUser> rcrtcRemoteUsers = mRtcRoom.getRemoteUsers();
|
||||
|
||||
for (RCRTCRemoteUser rcrtcRemoteUser : rcrtcRemoteUsers) {
|
||||
if (TextUtils.equals(rcrtcRemoteUser.getUserId(), String.valueOf(userID))) {
|
||||
for (RCRTCInputStream rcrtcInputStream : rcrtcRemoteUser.getStreams()) {
|
||||
rcrtcInputStream.mute(mute);
|
||||
}
|
||||
inputStreams.addAll(rcrtcRemoteUser.getStreams());
|
||||
}
|
||||
}
|
||||
if (inputStreams.size() == 0) {
|
||||
return;
|
||||
}
|
||||
mRtcRoom.getLocalUser().subscribeStreams(inputStreams, new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
|
||||
|
||||
try {
|
||||
getView().onSubscribeSuccess(userID, mute, position);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode errorCode) {
|
||||
try {
|
||||
getView().onSubscribeFailed(userID);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void unPublishStreams() {
|
||||
if (mRtcRoom == null) {
|
||||
return;
|
||||
}
|
||||
mRtcRoom.getLocalUser().unpublishStream(RCRTCEngine.getInstance().getDefaultAudioStream(), new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
try {
|
||||
getView().onUnPublishStreamsSuccess();
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode errorCode) {
|
||||
try {
|
||||
getView().onUnPublishStreamsFailed();
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 发布默认流
|
||||
*/
|
||||
public void publishDefaultAVStream() {
|
||||
if (mRtcRoom == null) {
|
||||
return;
|
||||
}
|
||||
mRtcRoom.getLocalUser().publishStream(RCRTCEngine.getInstance().getDefaultAudioStream(), new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
try {
|
||||
getView().onPublishSuccess();
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode rtcErrorCode) {
|
||||
try {
|
||||
getView().onPublishFailed();
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 配置rtc sdk
|
||||
*/
|
||||
public void config(Context context) {
|
||||
|
||||
// RCRTCConfig.Builder configBuilder = RCRTCConfig.Builder.create();
|
||||
// // 是否硬解码
|
||||
// configBuilder.enableHardwareDecoder(true);
|
||||
// // 是否硬编码
|
||||
// configBuilder.enableHardwareEncoder(true);
|
||||
//
|
||||
// // init 需结合 uninit 使用,否则有些配置无法重新初始化
|
||||
// RCRTCEngine.getInstance().unInit();
|
||||
// RCRTCEngine.getInstance().init(context, configBuilder.build());
|
||||
|
||||
// RCRTCVideoStreamConfig.Builder videoConfigBuilder = RCRTCVideoStreamConfig.Builder.create();
|
||||
// // 设置分辨率
|
||||
// videoConfigBuilder.setVideoResolution(RCRTCParamsType.RCRTCVideoResolution.RESOLUTION_720_1280);
|
||||
// // 设置帧率
|
||||
// videoConfigBuilder.setVideoFps(RCRTCParamsType.RCRTCVideoFps.Fps_30);
|
||||
// /**
|
||||
// * 设置最小码率,可根据分辨率RCRTCVideoResolution设置
|
||||
// * {@link RCRTCParamsType.RCRTCVideoResolution)}
|
||||
// */
|
||||
// videoConfigBuilder.setMinRate(250);
|
||||
// /**
|
||||
// * 设置最大码率,可根据分辨率RCRTCVideoResolution设置
|
||||
// * {@link RCRTCParamsType.RCRTCVideoResolution)}
|
||||
// */
|
||||
// videoConfigBuilder.setMaxRate(2200);
|
||||
// RCRTCEngine.getInstance().getDefaultVideoStream().setVideoConfig(videoConfigBuilder.build());
|
||||
//打开扬声器。
|
||||
RCRTCEngine.getInstance().enableSpeaker(true);
|
||||
// 启用耳返功能
|
||||
RCRTCEngine.getInstance().getDefaultAudioStream().enableEarMonitoring(true);
|
||||
RCRTCEngine.getInstance().getDefaultAudioStream().setMicrophoneDisable(false);
|
||||
RCRTCEngine.getInstance().getDefaultAudioStream().setAudioQuality(RCRTCParamsType.AudioQuality.MUSIC_HIGH, RCRTCParamsType.AudioScenario.MUSIC_CHATROOM);
|
||||
}
|
||||
|
||||
public void joinRoom(String roomId, boolean imOff) {
|
||||
mRoomID = roomId;
|
||||
if (imOff) {
|
||||
|
||||
RCRTCRoomConfig roomConfig = RCRTCRoomConfig.Builder.create()
|
||||
// 根据实际场景,选择音视频直播:LIVE_AUDIO_VIDEO 或音频直播:LIVE_AUDIO
|
||||
.setRoomType(RCRTCRoomType.MEETING)
|
||||
|
||||
.build();
|
||||
RCRTCEngine.getInstance().joinRoom("v" + roomId, roomConfig, new IRCRTCResultDataCallback<RCRTCRoom>() {
|
||||
@Override
|
||||
public void onSuccess(final RCRTCRoom rcrtcRoom) {
|
||||
GameRyMicManager.this.mRtcRoom = rcrtcRoom;
|
||||
// 注册房间回调
|
||||
rcrtcRoom.registerRoomListener(roomEventsListener);
|
||||
try {
|
||||
getView().onJoinRoomSuccess(rcrtcRoom);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode rtcErrorCode) {
|
||||
try {
|
||||
getView().onJoinRoomFailed(rtcErrorCode);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
RongChatRoomClient.getInstance().joinChatRoom("v" + roomId, -1, new IRongCoreCallback.OperationCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
Log.i("tx", "加入成功");
|
||||
enterRoom();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {
|
||||
Log.i("tx", "加入" + "失败" + coreErrorCode);
|
||||
if (WordUtil.isNewZh()) {
|
||||
ToastUtil.show("網絡不佳無法連接,請重新進入");
|
||||
} else {
|
||||
ToastUtil.show("The network is not connected, please re-enter");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void leaveRoom() {
|
||||
RCRTCEngine.getInstance().leaveRoom(new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode rtcErrorCode) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
}
|
||||
});
|
||||
RongChatRoomClient.getInstance().quitChatRoom("v" + mRoomID, new IRongCoreCallback.OperationCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
Log.i("tx", "退出成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {
|
||||
Log.i("tx", "退出" + "" + coreErrorCode);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理游戏房Im消息
|
||||
*/
|
||||
public void processingMessage(SudGameSocketImEvent socketImModel) {
|
||||
|
||||
List<SudGameSocketImEvent.MsgDTO> msgDTOS = socketImModel.getMsg();
|
||||
if (msgDTOS.isEmpty()) return;
|
||||
SudGameSocketImEvent.MsgDTO msgDTO = msgDTOS.get(0);
|
||||
//正常文字消息
|
||||
if (TextUtils.equals(msgDTO.getMethod(), "SendMsg")) {
|
||||
getView().insertItem(new SudGameChatImModel().setWelcomMessage(false).setNickname(msgDTO.getUname()).setTextMessage(msgDTO.getCt()));
|
||||
} else if (TextUtils.equals(msgDTO.getMethod(), "welcomMessage")) {
|
||||
// 欢迎(用户名)进入房间 Welcome (username) to the room
|
||||
|
||||
StringBuffer stringBuffer = new StringBuffer();
|
||||
if (WordUtil.isNewZh()) {
|
||||
stringBuffer.append("歡迎 ").append(msgDTO.getCt()).append(" 進入房間");
|
||||
} else {
|
||||
stringBuffer.append("Welcome ").append(msgDTO.getCt()).append(" to enter the room");
|
||||
}
|
||||
|
||||
getView().insertItem(new SudGameChatImModel().setWelcomMessage(true).setNickname(msgDTO.getCt()).setTextMessage(stringBuffer.toString()));
|
||||
} else if (TextUtils.equals(msgDTO.getMethod(), "sudGameRoomVoiceList")) {
|
||||
List<SudGameUserModel> personList = new Gson().fromJson(msgDTO.getCt(), new TypeToken<List<SudGameUserModel>>() {
|
||||
}.getType());
|
||||
getView().refreshSudGameUserList(personList);
|
||||
|
||||
refreshStreams(personList);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void sendChatMessage(String textMessage, String method) {
|
||||
IMLoginModel loginModel = IMLoginManager.get(CommonAppContext.sInstance.getApplicationContext()).getUserInfo();
|
||||
SudGameSocketImEvent sudGameSocketImEvent = new SudGameSocketImEvent();
|
||||
sudGameSocketImEvent.setRetcode("000000");
|
||||
sudGameSocketImEvent.setRetmsg("ok");
|
||||
|
||||
SudGameSocketImEvent.MsgDTO msgDTO = new SudGameSocketImEvent.MsgDTO();
|
||||
msgDTO.setAction("0")
|
||||
.setCt(textMessage)
|
||||
.setEquipment("app")
|
||||
.setUid(String.valueOf(loginModel.getId()))
|
||||
.setMethod(method)
|
||||
.setUname(loginModel.getUserNicename())
|
||||
.setRoomnum(mRoomID);
|
||||
|
||||
List<SudGameSocketImEvent.MsgDTO> msgDTOS = new ArrayList<>();
|
||||
msgDTOS.add(msgDTO);
|
||||
sudGameSocketImEvent.setMsg(msgDTOS);
|
||||
Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM;
|
||||
TextMessage messageContent = TextMessage.obtain(new Gson().toJson(sudGameSocketImEvent));
|
||||
Message message = Message.obtain("v" + mRoomID, conversationType, messageContent);
|
||||
RongcloudIMManager.sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() {
|
||||
@Override
|
||||
public void onAttached(Message message) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Message message) {
|
||||
Log.i("tx", "发送成功");
|
||||
String contentJson = ((TextMessage) message.getContent()).getContent();
|
||||
Log.e("wewe", contentJson);
|
||||
SudGameSocketImEvent sudGameSocketImEvent = new Gson().fromJson(contentJson, SudGameSocketImEvent.class);
|
||||
processingMessage(sudGameSocketImEvent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Message message, RongIMClient.ErrorCode errorCode) {
|
||||
Log.i("tx", "发送成功" + errorCode.toString());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送聊天信息
|
||||
*
|
||||
* @param textMessage
|
||||
*/
|
||||
public void sendMessage(String textMessage) {
|
||||
sendChatMessage(textMessage, "SendMsg");
|
||||
}
|
||||
|
||||
/**
|
||||
* 进房间
|
||||
*/
|
||||
public void enterRoom() {
|
||||
IMLoginModel loginModel = IMLoginManager.get(CommonAppContext.sInstance.getApplicationContext()).getUserInfo();
|
||||
sendChatMessage(loginModel.getUserNicename(), "welcomMessage");
|
||||
}
|
||||
|
||||
/**
|
||||
* activity相关回调
|
||||
*/
|
||||
public interface MeetingCallback {
|
||||
void onJoinRoomSuccess(RCRTCRoom rcrtcRoom);
|
||||
|
||||
void onJoinRoomFailed(RTCErrorCode rtcErrorCode);
|
||||
|
||||
void onPublishSuccess();
|
||||
|
||||
|
||||
void onPublishFailed();
|
||||
|
||||
void onUnPublishStreamsSuccess();
|
||||
|
||||
void onUnPublishStreamsFailed();
|
||||
|
||||
void onSubscribeSuccess(List<RCRTCInputStream> inputStreamList);
|
||||
|
||||
void onSubscribeFailed();
|
||||
|
||||
void onSubscribeSuccess(String userID, boolean mute, int position);
|
||||
|
||||
void onSubscribeFailed(String userID);
|
||||
|
||||
void onUserJoined(RCRTCRemoteUser rcrtcRemoteUser);
|
||||
|
||||
void onUserLeft(RCRTCRemoteUser rcrtcRemoteUser);
|
||||
|
||||
void insertItem(SudGameChatImModel sudGameChatImModel);
|
||||
|
||||
void refreshSudGameUserList(List<SudGameUserModel> personList);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.yunbao.common.manager.imrongcloud;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
@@ -12,116 +11,25 @@ import com.yunbao.common.bean.SudGameChatImModel;
|
||||
import com.yunbao.common.bean.SudGameUserModel;
|
||||
import com.yunbao.common.event.SudGameSocketImEvent;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import cn.rongcloud.rtc.api.RCRTCEngine;
|
||||
import cn.rongcloud.rtc.api.RCRTCRemoteUser;
|
||||
import cn.rongcloud.rtc.api.RCRTCRoom;
|
||||
import cn.rongcloud.rtc.api.RCRTCRoomConfig;
|
||||
import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback;
|
||||
import cn.rongcloud.rtc.api.callback.IRCRTCResultDataCallback;
|
||||
import cn.rongcloud.rtc.api.callback.IRCRTCRoomEventsListener;
|
||||
import cn.rongcloud.rtc.api.stream.RCRTCInputStream;
|
||||
import cn.rongcloud.rtc.base.RCRTCParamsType;
|
||||
import cn.rongcloud.rtc.base.RCRTCRoomType;
|
||||
import cn.rongcloud.rtc.base.RTCErrorCode;
|
||||
import io.rong.imlib.IRongCallback;
|
||||
import io.rong.imlib.IRongCoreCallback;
|
||||
import io.rong.imlib.IRongCoreEnum;
|
||||
import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.chatroom.base.RongChatRoomClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.Message;
|
||||
import io.rong.message.TextMessage;
|
||||
|
||||
public class GameSwMicManager {
|
||||
MeetingCallback mMeetingCallback = null;
|
||||
private RCRTCRoom mRtcRoom = null;
|
||||
private String mRoomID = "";
|
||||
|
||||
public void setmRoomID(String mRoomID) {
|
||||
this.mRoomID = mRoomID;
|
||||
}
|
||||
|
||||
private final IRCRTCRoomEventsListener roomEventsListener = new IRCRTCRoomEventsListener() {
|
||||
/**
|
||||
* 房间内用户发布资源
|
||||
*
|
||||
* @param rcrtcRemoteUser 远端用户
|
||||
* @param list 发布的资源
|
||||
*/
|
||||
@Override
|
||||
public void onRemoteUserPublishResource(RCRTCRemoteUser rcrtcRemoteUser, final List<RCRTCInputStream> list) {
|
||||
// subscribeAVStream();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemoteUserMuteAudio(RCRTCRemoteUser rcrtcRemoteUser, RCRTCInputStream rcrtcInputStream, boolean b) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemoteUserMuteVideo(RCRTCRemoteUser rcrtcRemoteUser, RCRTCInputStream rcrtcInputStream, boolean b) {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onRemoteUserUnpublishResource(RCRTCRemoteUser rcrtcRemoteUser, List<RCRTCInputStream> list) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户加入房间
|
||||
*
|
||||
* @param rcrtcRemoteUser 远端用户
|
||||
*/
|
||||
@Override
|
||||
public void onUserJoined(final RCRTCRemoteUser rcrtcRemoteUser) {
|
||||
try {
|
||||
getView().onUserJoined(rcrtcRemoteUser);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户离开房间
|
||||
*
|
||||
* @param rcrtcRemoteUser 远端用户
|
||||
*/
|
||||
@Override
|
||||
public void onUserLeft(RCRTCRemoteUser rcrtcRemoteUser) {
|
||||
try {
|
||||
getView().onUserLeft(rcrtcRemoteUser);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserOffline(RCRTCRemoteUser rcrtcRemoteUser) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPublishLiveStreams(List<RCRTCInputStream> list) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUnpublishLiveStreams(List<RCRTCInputStream> list) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 自己退出房间。 例如断网退出等
|
||||
* @param i 状态码
|
||||
*/
|
||||
@Override
|
||||
public void onLeaveRoom(int i) {
|
||||
}
|
||||
};
|
||||
|
||||
protected MeetingCallback getView() {
|
||||
if (mMeetingCallback == null) {
|
||||
throw new IllegalStateException("view is not attached");
|
||||
@@ -138,302 +46,6 @@ public class GameSwMicManager {
|
||||
mMeetingCallback = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主动订阅远端用户发布的流
|
||||
* 视频流需要用户设置用于显示载体的videoview
|
||||
*/
|
||||
public void subscribeAVStream() {
|
||||
if (mRtcRoom == null || mRtcRoom.getRemoteUsers() == null) {
|
||||
return;
|
||||
}
|
||||
final List<RCRTCInputStream> inputStreams = new ArrayList<>();
|
||||
for (final RCRTCRemoteUser remoteUser : mRtcRoom.getRemoteUsers()) {
|
||||
if (remoteUser.getStreams().size() == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
inputStreams.addAll(remoteUser.getStreams());
|
||||
|
||||
}
|
||||
|
||||
if (inputStreams.size() == 0) {
|
||||
return;
|
||||
}
|
||||
mRtcRoom.getLocalUser().subscribeStreams(inputStreams, new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
|
||||
|
||||
try {
|
||||
getView().onSubscribeSuccess(inputStreams);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode errorCode) {
|
||||
try {
|
||||
getView().onSubscribeFailed();
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void refreshStreams(List<SudGameUserModel> personList) {
|
||||
|
||||
final List<RCRTCInputStream> inputStreams = new ArrayList<>();
|
||||
if(mRtcRoom!=null){
|
||||
for (SudGameUserModel sudGameUserModel : personList) {
|
||||
List<RCRTCRemoteUser> rcrtcRemoteUsers = mRtcRoom.getRemoteUsers();
|
||||
|
||||
for (RCRTCRemoteUser rcrtcRemoteUser : rcrtcRemoteUsers) {
|
||||
if (TextUtils.equals(rcrtcRemoteUser.getUserId(), String.valueOf(sudGameUserModel.getId()))) {
|
||||
for (RCRTCInputStream rcrtcInputStream : rcrtcRemoteUser.getStreams()) {
|
||||
rcrtcInputStream.mute(sudGameUserModel.getMicStatus() == 3);
|
||||
}
|
||||
inputStreams.addAll(rcrtcRemoteUser.getStreams());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (inputStreams.size() == 0) {
|
||||
return;
|
||||
}
|
||||
mRtcRoom.getLocalUser().subscribeStreams(inputStreams, new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
|
||||
|
||||
try {
|
||||
getView().onSubscribeSuccess(inputStreams);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode errorCode) {
|
||||
try {
|
||||
getView().onSubscribeFailed();
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void refreshStreams(String userID, boolean mute, int position) {
|
||||
|
||||
final List<RCRTCInputStream> inputStreams = new ArrayList<>();
|
||||
|
||||
List<RCRTCRemoteUser> rcrtcRemoteUsers = mRtcRoom.getRemoteUsers();
|
||||
|
||||
for (RCRTCRemoteUser rcrtcRemoteUser : rcrtcRemoteUsers) {
|
||||
if (TextUtils.equals(rcrtcRemoteUser.getUserId(), String.valueOf(userID))) {
|
||||
for (RCRTCInputStream rcrtcInputStream : rcrtcRemoteUser.getStreams()) {
|
||||
rcrtcInputStream.mute(mute);
|
||||
}
|
||||
inputStreams.addAll(rcrtcRemoteUser.getStreams());
|
||||
}
|
||||
}
|
||||
if (inputStreams.size() == 0) {
|
||||
return;
|
||||
}
|
||||
mRtcRoom.getLocalUser().subscribeStreams(inputStreams, new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
try {
|
||||
getView().onSubscribeSuccess(userID, mute, position);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode errorCode) {
|
||||
try {
|
||||
getView().onSubscribeFailed(userID);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void unPublishStreams() {
|
||||
if (mRtcRoom == null) {
|
||||
return;
|
||||
}
|
||||
mRtcRoom.getLocalUser().unpublishStream(RCRTCEngine.getInstance().getDefaultAudioStream(), new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
try {
|
||||
getView().onUnPublishStreamsSuccess();
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode errorCode) {
|
||||
try {
|
||||
getView().onUnPublishStreamsFailed();
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 发布默认流
|
||||
*/
|
||||
public void publishDefaultAVStream() {
|
||||
if (mRtcRoom == null) {
|
||||
return;
|
||||
}
|
||||
mRtcRoom.getLocalUser().publishStream(RCRTCEngine.getInstance().getDefaultAudioStream(), new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
try {
|
||||
getView().onPublishSuccess();
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode rtcErrorCode) {
|
||||
try {
|
||||
getView().onPublishFailed();
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 配置rtc sdk
|
||||
*/
|
||||
public void config(Context context) {
|
||||
|
||||
// RCRTCConfig.Builder configBuilder = RCRTCConfig.Builder.create();
|
||||
// // 是否硬解码
|
||||
// configBuilder.enableHardwareDecoder(true);
|
||||
// // 是否硬编码
|
||||
// configBuilder.enableHardwareEncoder(true);
|
||||
//
|
||||
// // init 需结合 uninit 使用,否则有些配置无法重新初始化
|
||||
// RCRTCEngine.getInstance().unInit();
|
||||
// RCRTCEngine.getInstance().init(context, configBuilder.build());
|
||||
|
||||
// RCRTCVideoStreamConfig.Builder videoConfigBuilder = RCRTCVideoStreamConfig.Builder.create();
|
||||
// // 设置分辨率
|
||||
// videoConfigBuilder.setVideoResolution(RCRTCParamsType.RCRTCVideoResolution.RESOLUTION_720_1280);
|
||||
// // 设置帧率
|
||||
// videoConfigBuilder.setVideoFps(RCRTCParamsType.RCRTCVideoFps.Fps_30);
|
||||
// /**
|
||||
// * 设置最小码率,可根据分辨率RCRTCVideoResolution设置
|
||||
// * {@link RCRTCParamsType.RCRTCVideoResolution)}
|
||||
// */
|
||||
// videoConfigBuilder.setMinRate(250);
|
||||
// /**
|
||||
// * 设置最大码率,可根据分辨率RCRTCVideoResolution设置
|
||||
// * {@link RCRTCParamsType.RCRTCVideoResolution)}
|
||||
// */
|
||||
// videoConfigBuilder.setMaxRate(2200);
|
||||
// RCRTCEngine.getInstance().getDefaultVideoStream().setVideoConfig(videoConfigBuilder.build());
|
||||
//打开扬声器。
|
||||
RCRTCEngine.getInstance().enableSpeaker(true);
|
||||
// 启用耳返功能
|
||||
RCRTCEngine.getInstance().getDefaultAudioStream().enableEarMonitoring(true);
|
||||
RCRTCEngine.getInstance().getDefaultAudioStream().setMicrophoneDisable(false);
|
||||
RCRTCEngine.getInstance().getDefaultAudioStream().setAudioQuality(RCRTCParamsType.AudioQuality.MUSIC_HIGH, RCRTCParamsType.AudioScenario.MUSIC_CHATROOM);
|
||||
}
|
||||
|
||||
public void joinRoom(String roomId, boolean imOff) {
|
||||
mRoomID = roomId;
|
||||
if (imOff) {
|
||||
|
||||
RCRTCRoomConfig roomConfig = RCRTCRoomConfig.Builder.create()
|
||||
// 根据实际场景,选择音视频直播:LIVE_AUDIO_VIDEO 或音频直播:LIVE_AUDIO
|
||||
.setRoomType(RCRTCRoomType.MEETING)
|
||||
|
||||
.build();
|
||||
RCRTCEngine.getInstance().joinRoom("v" + roomId, roomConfig, new IRCRTCResultDataCallback<RCRTCRoom>() {
|
||||
@Override
|
||||
public void onSuccess(final RCRTCRoom rcrtcRoom) {
|
||||
GameSwMicManager.this.mRtcRoom = rcrtcRoom;
|
||||
// 注册房间回调
|
||||
rcrtcRoom.registerRoomListener(roomEventsListener);
|
||||
try {
|
||||
getView().onJoinRoomSuccess(rcrtcRoom);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode rtcErrorCode) {
|
||||
try {
|
||||
getView().onJoinRoomFailed(rtcErrorCode);
|
||||
} catch (IllegalStateException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
RongChatRoomClient.getInstance().joinChatRoom("v" + roomId, -1, new IRongCoreCallback.OperationCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
Log.i("tx", "加入成功");
|
||||
enterRoom();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {
|
||||
Log.i("tx", "加入" + "失败" + coreErrorCode);
|
||||
if (WordUtil.isNewZh()) {
|
||||
ToastUtil.show("網絡不佳無法連接,請重新進入");
|
||||
} else {
|
||||
ToastUtil.show("The network is not connected, please re-enter");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void leaveRoom() {
|
||||
RCRTCEngine.getInstance().leaveRoom(new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode rtcErrorCode) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
}
|
||||
});
|
||||
RongChatRoomClient.getInstance().quitChatRoom("v" + mRoomID, new IRongCoreCallback.OperationCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
Log.i("tx", "退出成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {
|
||||
Log.i("tx", "退出" + "" + coreErrorCode);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 处理游戏房Im消息
|
||||
*/
|
||||
@@ -443,7 +55,6 @@ public class GameSwMicManager {
|
||||
if (msgDTOS.isEmpty()) return;
|
||||
SudGameSocketImEvent.MsgDTO msgDTO = msgDTOS.get(0);
|
||||
|
||||
|
||||
//正常文字消息
|
||||
if (TextUtils.equals(msgDTO.getMethod(), "SendMsg")) {
|
||||
getView().insertItem(new SudGameChatImModel().setWelcomMessage(false).setNickname(msgDTO.getUname()).setTextMessage(msgDTO.getCt()));
|
||||
@@ -462,12 +73,15 @@ public class GameSwMicManager {
|
||||
List<SudGameUserModel> personList = new Gson().fromJson(msgDTO.getCt(), new TypeToken<List<SudGameUserModel>>() {
|
||||
}.getType());
|
||||
getView().refreshSudGameUserList(personList);
|
||||
|
||||
refreshStreams(personList);
|
||||
|
||||
//refreshStreams(personList);
|
||||
}
|
||||
}
|
||||
|
||||
public void refreshStreams(String userID, boolean mute, int position) {
|
||||
getView().onSubscribeSuccess(userID, mute, position);
|
||||
}
|
||||
|
||||
|
||||
private void sendChatMessage(String textMessage, String method) {
|
||||
IMLoginModel loginModel = IMLoginManager.get(CommonAppContext.sInstance.getApplicationContext()).getUserInfo();
|
||||
SudGameSocketImEvent sudGameSocketImEvent = new SudGameSocketImEvent();
|
||||
@@ -533,31 +147,12 @@ public class GameSwMicManager {
|
||||
* activity相关回调
|
||||
*/
|
||||
public interface MeetingCallback {
|
||||
void onJoinRoomSuccess(RCRTCRoom rcrtcRoom);
|
||||
|
||||
void onJoinRoomFailed(RTCErrorCode rtcErrorCode);
|
||||
|
||||
void onPublishSuccess();
|
||||
|
||||
|
||||
void onPublishFailed();
|
||||
|
||||
void onUnPublishStreamsSuccess();
|
||||
|
||||
void onUnPublishStreamsFailed();
|
||||
|
||||
void onSubscribeSuccess(List<RCRTCInputStream> inputStreamList);
|
||||
|
||||
void onSubscribeFailed();
|
||||
|
||||
void onSubscribeSuccess(String userID, boolean mute, int position);
|
||||
|
||||
void onSubscribeFailed(String userID);
|
||||
|
||||
void onUserJoined(RCRTCRemoteUser rcrtcRemoteUser);
|
||||
|
||||
void onUserLeft(RCRTCRemoteUser rcrtcRemoteUser);
|
||||
|
||||
void insertItem(SudGameChatImModel sudGameChatImModel);
|
||||
|
||||
void refreshSudGameUserList(List<SudGameUserModel> personList);
|
||||
|
||||
@@ -104,6 +104,7 @@ public class MessageIMManager {
|
||||
HttpClient.getInstance().get("huoquxitongxiaoxiliebiaov2", "huoquxitongxiaoxiliebiaov2")
|
||||
.params("uid", userInfo.getId())
|
||||
.params("token", userInfo.getToken())
|
||||
.params("app_type", "1")
|
||||
.execute(new HttpCallback() {
|
||||
@Override
|
||||
public void onSuccess(int code, String msg, String[] info) {
|
||||
@@ -167,6 +168,7 @@ public class MessageIMManager {
|
||||
HttpClient.getInstance().get("huoquxitongxiaoxiliebiaov2", "huoquxitongxiaoxiliebiaov2")
|
||||
.params("uid", userInfo.getId())
|
||||
.params("token", userInfo.getToken())
|
||||
.params("app_type", "1")
|
||||
.execute(new HttpCallback() {
|
||||
@Override
|
||||
public void onSuccess(int code, String msg, String[] info) {
|
||||
|
||||
@@ -3,13 +3,9 @@ package com.yunbao.common.pay.samsung;
|
||||
import android.content.Context;
|
||||
|
||||
|
||||
import com.yunbao.common.R;
|
||||
import com.yunbao.common.utils.L;
|
||||
|
||||
import java.lang.reflect.InvocationHandler;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Proxy;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class SamsungUtil {
|
||||
|
||||
@@ -29,7 +25,7 @@ public class SamsungUtil {
|
||||
public SamsungUtil(Context mContext) {
|
||||
this.mContext = mContext;
|
||||
try {
|
||||
samsung = mContext.getClassLoader().loadClass("com.samsung.android.sdk.iap.lib.SamsungUtil")
|
||||
samsung = mContext.getClassLoader().loadClass("com.samsung.utils.SamsungUtil")
|
||||
.getConstructor(Context.class)
|
||||
.newInstance(mContext);
|
||||
} catch (Exception e) {
|
||||
@@ -67,7 +63,7 @@ public class SamsungUtil {
|
||||
public void buy(String skuId, OnSamsungPaymentListener onPaymentListener) {
|
||||
if(samsung==null)return;
|
||||
try {
|
||||
Class<?> listenerClass = Class.forName("com.samsung.android.sdk.iap.lib.SamsungUtil$OnPaymentListener");
|
||||
Class<?> listenerClass = Class.forName("com.samsung.utils.SamsungUtil$OnPaymentListener");
|
||||
Object listenerObj = Proxy.newProxyInstance(mContext.getClassLoader(), new Class[]{listenerClass}, new InvocationHandler() {
|
||||
@Override
|
||||
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
|
||||
|
||||
@@ -11,6 +11,7 @@ import android.util.Log;
|
||||
import com.blankj.utilcode.util.LogUtils;
|
||||
import com.yunbao.common.event.CheckRemainingBalanceEvent;
|
||||
import com.yunbao.common.manager.RandomSudGameManager;
|
||||
import com.yunbao.common.sud.decorator.game.JumpEvent;
|
||||
import com.yunbao.common.sud.state.SudMGPMGState;
|
||||
import com.yunbao.common.utils.AppManager;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
@@ -369,6 +370,10 @@ public class SudFSMMGDecorator implements ISudFSMMG {
|
||||
mgCommonGameCreateOrder.gameRoomId = gameRoomId;
|
||||
mgCommonGameCreateOrder.userId = userId;
|
||||
mgCommonGameCreateOrder.dataJson = dataJson;
|
||||
/* if (1800792634548629505L == gameId){
|
||||
// 如果是方块大师,formID写死为自己
|
||||
mgCommonGameCreateOrder.fromUid = mgCommonGameCreateOrder.toUid;
|
||||
}*/
|
||||
}
|
||||
|
||||
Log.i(TAG, "onGameStateChange: " + dataJson);
|
||||
@@ -377,6 +382,10 @@ public class SudFSMMGDecorator implements ISudFSMMG {
|
||||
} else {
|
||||
listener.onGameMGCommonGameCreateOrder(handle, mgCommonGameCreateOrder);
|
||||
}
|
||||
|
||||
// 调用创建订单接口
|
||||
JumpEvent.hit(mgCommonGameCreateOrder);
|
||||
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_PLAYER_ROLE_ID: // 26. 游戏通知app玩家角色(仅对狼人杀有效)
|
||||
SudMGPMGState.MGCommonPlayerRoleId mgCommonPlayerRoleId = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonPlayerRoleId.class);
|
||||
|
||||
@@ -168,6 +168,15 @@ public class DialogUitl {
|
||||
showSimpleDialog(context, content, false, callback);
|
||||
}
|
||||
|
||||
public static void showSimpleDialogString(Context context, String content,String confirmString, SimpleCallback callback) {
|
||||
if (context instanceof Activity) {
|
||||
if (((Activity) context).isDestroyed() || ((Activity) context).isFinishing()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
new Builder(context).setTitle(null).setContent(content).setCancelable(false).setClickCallback(callback).setConfirmString(confirmString).build().show();
|
||||
}
|
||||
|
||||
public static void showSimpleDialog(Context context, String content, boolean cancelable, SimpleCallback callback) {
|
||||
showSimpleDialog(context, null, content, cancelable, callback);
|
||||
}
|
||||
|
||||
@@ -43,8 +43,9 @@ public class LiveRoomCheckLivePresenter {
|
||||
* @param context 上下文
|
||||
* @param liveUid 直播间ID
|
||||
* @param stream
|
||||
* @param isPk 是否是pk时点击头像打开弹窗后跳转来的
|
||||
*/
|
||||
public LiveRoomCheckLivePresenter(Context context, String liveUid, String stream, NewActionListener actionListener) {
|
||||
public LiveRoomCheckLivePresenter(Context context, String liveUid, String stream, NewActionListener actionListener,boolean... isPk) {
|
||||
mContext = context;
|
||||
LiveNetManager.get(context)
|
||||
.checkLive(liveUid, stream, new CheckLiveCallBack() {
|
||||
@@ -106,9 +107,14 @@ public class LiveRoomCheckLivePresenter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
Log.e("直播间异常", "onError: " + error);
|
||||
Bus.get().post(new LiveErrorEvent());
|
||||
public void onError(String error,int code) {
|
||||
Log.e("直播间异常", "onError: " + error + " code = " + code);
|
||||
if (code == 1004 && isPk != null && isPk.length > 0 && isPk[0]) {
|
||||
// 1004 为用户被踢过,不能进入直播间但是不能随机再进入别的直播间
|
||||
Log.e("直播间异常", "onError: " + error + " code = " + code);
|
||||
}else {
|
||||
Bus.get().post(new LiveErrorEvent());
|
||||
}
|
||||
ToastUtil.show(error);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -16,10 +16,6 @@ import com.yunbao.common.http.ResponseModel;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import cn.rongcloud.rtc.api.RCRTCEngine;
|
||||
import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback;
|
||||
import cn.rongcloud.rtc.api.callback.IRCRTCSwitchRoleCallback;
|
||||
import cn.rongcloud.rtc.base.RTCErrorCode;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.functions.Consumer;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
@@ -59,6 +59,7 @@ public class RouteUtil {
|
||||
public static final String PATH_LIVE_PUNISHACTIVITY = "/live/PunishActivity";
|
||||
public static final String PATH_NEW_MESSAGE = "/main/NewMessageActivity";
|
||||
public static final String PATH_Community_Video= "/main/CommunityVideoActivity";
|
||||
public static final String PATH_LIVE_REPORT_SECOND = "/live/ReportSecondActivity";
|
||||
|
||||
|
||||
public static void forwardCommunityActivity() {
|
||||
@@ -180,6 +181,12 @@ public class RouteUtil {
|
||||
.navigation();
|
||||
}
|
||||
|
||||
public static void forwardLiveSecondReportActivity(int users_report_id) {
|
||||
ARouter.getInstance().build(PATH_LIVE_REPORT_SECOND)
|
||||
.withInt("users_report_id", users_report_id)
|
||||
.navigation();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 跳转到装扮
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.yunbao.common.views;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
@@ -7,6 +8,8 @@ import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.RadioGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -23,6 +26,11 @@ import com.yunbao.common.http.base.HttpCallback;
|
||||
import com.yunbao.common.http.live.LiveNetManager;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.common.utils.MicStatusManager;
|
||||
import com.yunbao.common.manager.MicUserManager;
|
||||
import com.yunbao.common.manager.MicedUserManager;
|
||||
import com.yunbao.common.manager.RandomPkManager;
|
||||
import com.yunbao.common.utils.DialogUitl;
|
||||
|
||||
public class LiveRobotSettingCustomPopup extends BottomPopupView implements View.OnClickListener {
|
||||
private static String TAG = "AI机器人";
|
||||
@@ -32,6 +40,11 @@ public class LiveRobotSettingCustomPopup extends BottomPopupView implements View
|
||||
private String time = "";
|
||||
private ImageView robotState;
|
||||
|
||||
private ImageView languageZhImgView;
|
||||
private AppCompatTextView languageZhTv;
|
||||
private ImageView languageEnImgView;
|
||||
private AppCompatTextView languageEnTv;
|
||||
private int lastLanguage = 1;
|
||||
private int robotStateInt = 1;
|
||||
|
||||
public int getRobotStateInt() {
|
||||
@@ -60,6 +73,10 @@ public class LiveRobotSettingCustomPopup extends BottomPopupView implements View
|
||||
robotNameSetting = findViewById(R.id.robot_name_setting);
|
||||
robotNameText = findViewById(R.id.robot_name_text);
|
||||
robotState = findViewById(R.id.robot_state);
|
||||
languageZhImgView = findViewById(R.id.languageZhImgView);
|
||||
languageZhTv = findViewById(R.id.languageZhTv);
|
||||
languageEnImgView = findViewById(R.id.languageEnImgView);
|
||||
languageEnTv = findViewById(R.id.languageEnTv);
|
||||
automaticGreetingNumber = findViewById(R.id.automatic_greeting_number);
|
||||
automaticMessageNumber = findViewById(R.id.automatic_message_number);
|
||||
findViewById(R.id.automatic_message_sending).setOnClickListener(this);
|
||||
@@ -91,8 +108,65 @@ public class LiveRobotSettingCustomPopup extends BottomPopupView implements View
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
languageZhImgView.setOnClickListener(v -> {
|
||||
if (lastLanguage == 0) {
|
||||
return;
|
||||
}
|
||||
ShowChangeLanguagePopup(0);
|
||||
});
|
||||
languageZhTv.setOnClickListener(v -> {
|
||||
if (lastLanguage == 0) {
|
||||
return;
|
||||
}
|
||||
ShowChangeLanguagePopup(0);
|
||||
});
|
||||
|
||||
languageEnImgView.setOnClickListener(v -> {
|
||||
if (lastLanguage == 1) {
|
||||
return;
|
||||
}
|
||||
ShowChangeLanguagePopup(1);
|
||||
});
|
||||
languageEnTv.setOnClickListener(v -> {
|
||||
if (lastLanguage == 1) {
|
||||
return;
|
||||
}
|
||||
ShowChangeLanguagePopup(1);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void ShowChangeLanguagePopup(int i) {
|
||||
DialogUitl.showSimpleDialogString(getContext(), getContext().getString(R.string.chang_langue_tips), getContext().getString(R.string.aristocrat_determine) ,new DialogUitl.SimpleCallback() {
|
||||
@Override
|
||||
public void onConfirmClick(Dialog dialog, String content) {
|
||||
LiveNetManager.get(getContext())
|
||||
.setAiRobotDate("ai_langue", i+"", new HttpCallback<HttpCallbackModel>() {
|
||||
@Override
|
||||
public void onSuccess(HttpCallbackModel data) {
|
||||
if (i==0) {
|
||||
languageZhImgView.setSelected(true);
|
||||
languageEnImgView.setSelected(false);
|
||||
lastLanguage = 0;
|
||||
} else {
|
||||
languageZhImgView.setSelected(false);
|
||||
languageEnImgView.setSelected(true);
|
||||
lastLanguage = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
ToastUtil.show(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
int viewID = v.getId();
|
||||
@@ -243,6 +317,15 @@ public class LiveRobotSettingCustomPopup extends BottomPopupView implements View
|
||||
robotNameText.setText(data.getName());
|
||||
automaticGreetingNumber.setText(String.valueOf(data.getAutoSeyHiNumber()));
|
||||
automaticMessageNumber.setText(String.valueOf(data.getAutoRequestFollowNumber()));
|
||||
if (data.isLangueCn()) {
|
||||
languageZhImgView.setSelected(true);
|
||||
languageEnImgView.setSelected(false);
|
||||
lastLanguage = 0;
|
||||
} else {
|
||||
languageZhImgView.setSelected(false);
|
||||
languageEnImgView.setSelected(true);
|
||||
lastLanguage = 1;
|
||||
}
|
||||
time = String.valueOf(data.getTime());
|
||||
robotStateInt = data.getStatus();
|
||||
if (data.getStatus() == 1) {
|
||||
@@ -252,7 +335,7 @@ public class LiveRobotSettingCustomPopup extends BottomPopupView implements View
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
ToastUtil.show(WordUtil.isNewZh()?"抱歉!出錯了!":"i \\'m sorry! An error occurred");
|
||||
ToastUtil.show(WordUtil.isNewZh() ? "抱歉!出錯了!" : "i \\'m sorry! An error occurred");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 71 KiB |
BIN
common/src/main/res/drawable/backgroud_custom_gift2.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 8.4 KiB |
BIN
common/src/main/res/drawable/background_live_sud_hint.webp
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 873 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 12 KiB |
BIN
common/src/main/res/drawable/background_skip_button.webp
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
23
common/src/main/res/drawable/bg_gift_progressbar.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!--设置ProgressBar背景色-->
|
||||
<item android:id="@android:id/background">
|
||||
<shape>
|
||||
<!--设置ProgressBar进度条圆角半径-->
|
||||
<corners android:radius="1dp" />
|
||||
<solid android:color="#A5A193" />
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
<!--设置ProgressBar进度条颜色-->
|
||||
<item android:id="@android:id/progress">
|
||||
<scale android:scaleWidth="100%">
|
||||
<shape>
|
||||
<corners android:radius="1dp" />
|
||||
<gradient
|
||||
android:endColor="#FFC949"
|
||||
android:startColor="#FFC949" />
|
||||
</shape>
|
||||
</scale>
|
||||
</item>
|
||||
</layer-list>
|
||||
|
Before Width: | Height: | Size: 2.6 KiB |
BIN
common/src/main/res/drawable/bg_live_sud_game_back_new.webp
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 10 KiB |
BIN
common/src/main/res/drawable/bg_selection_quantity.webp
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 187 KiB |
BIN
common/src/main/res/drawable/bg_xyd.webp
Normal file
|
After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 50 KiB |
BIN
common/src/main/res/drawable/bg_xyd_add_item.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 535 B |
BIN
common/src/main/res/drawable/bg_xyd_number.webp
Normal file
|
After Width: | Height: | Size: 286 B |
|
Before Width: | Height: | Size: 3.0 KiB |
BIN
common/src/main/res/drawable/ic_camera.webp
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 421 B |
BIN
common/src/main/res/drawable/ic_chb_normal.webp
Normal file
|
After Width: | Height: | Size: 254 B |
|
Before Width: | Height: | Size: 439 B |
BIN
common/src/main/res/drawable/ic_chb_selectd.webp
Normal file
|
After Width: | Height: | Size: 318 B |
|
Before Width: | Height: | Size: 797 B |
BIN
common/src/main/res/drawable/ic_default_image.webp
Normal file
|
After Width: | Height: | Size: 464 B |
|
Before Width: | Height: | Size: 2.1 KiB |
BIN
common/src/main/res/drawable/icon_covering_layer.webp
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 31 KiB |
BIN
common/src/main/res/drawable/icon_gift_wall_no_data.webp
Normal file
|
After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
BIN
common/src/main/res/drawable/icon_link_mic.webp
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
BIN
common/src/main/res/drawable/icon_robot.webp
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
BIN
common/src/main/res/drawable/icon_wish_player.webp
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
BIN
common/src/main/res/drawable/iconfh_left_white.webp
Normal file
|
After Width: | Height: | Size: 252 B |
|
Before Width: | Height: | Size: 29 KiB |
BIN
common/src/main/res/drawable/loading_00000.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 28 KiB |
BIN
common/src/main/res/drawable/loading_00001.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 28 KiB |
BIN
common/src/main/res/drawable/loading_00002.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 25 KiB |
BIN
common/src/main/res/drawable/loading_00003.webp
Normal file
|
After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 18 KiB |
BIN
common/src/main/res/drawable/loading_00004.webp
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 24 KiB |
BIN
common/src/main/res/drawable/loading_00005.webp
Normal file
|
After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 30 KiB |
BIN
common/src/main/res/drawable/loading_00006.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 26 KiB |
BIN
common/src/main/res/drawable/loading_00007.webp
Normal file
|
After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 25 KiB |
BIN
common/src/main/res/drawable/loading_00008.webp
Normal file
|
After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 24 KiB |
BIN
common/src/main/res/drawable/loading_00009.webp
Normal file
|
After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 23 KiB |
BIN
common/src/main/res/drawable/loading_00010.webp
Normal file
|
After Width: | Height: | Size: 20 KiB |