场景7:自定义菜单
更新时间:2025-05-09 06:20:39

场景7:自定义菜单

sdk内置菜单

会议底部菜单

  • CameraMenu:视频
  • ChatMenu:聊天
  • MoreMenu:更多
  • MuteOrHandMenu:音频&举手
  • ParticularMenu:成员
  • QaMenu:问答
  • ShareMenu:分享
  • VoteMenu:投票

会议底部更多菜单

  • MoreAITranslationMenu:AI转写
  • MoreChatMenu:聊天
  • MoreFeedbackMenu:意见反馈
  • MoreFloatWindowMenu:浮窗模式
  • MoreQaMenu:问答
  • MoreRecordMenu:录制
  • MoreRtmpMenu:直播
  • MoreSettingMenu:设置
  • MoreTranslationMenu:同声传译
  • MoreVirtualBackgroundMenu:虚拟背景
  • MoreVoteMenu:投票

会议分享菜单

  • MeetingShareCopy:复制
  • MeetingShareEmailMenu:邮件
  • MeetingShareMoreMenu:更多
  • MeetingShareQQMenu:qq
  • MeetingShareSessionMenu:会话
  • MeetingShareSMSMenu:短信

自定义会议菜单

最佳实践

1.新建xxxhandle实现IMeetingMenuStrategy接口

public class DefaultMeetingBottomBarHandle implements IMeetingMenuStrategy {

    /**
     * 会议底部菜单
     * @return
     */
    @Override
    public List<MeetingBottomMenuImpl> buildMeetingBottomMenus() {
        List<MeetingBottomMenuImpl> list = new ArrayList<>();
        list.add(new MuteOrHandMenu());
        list.add(new CameraMenu());
        list.add(new ShareMenu());
        list.add(new ChatMenu());
        list.add(new QaMenu());
        list.add(new VoteMenu());
        list.add(new ParticularMenu());
        list.add(new MoreMenu());
        return list;
    }

    /**
     * 会议更多菜单
     * @return
     */
    @Override
    public List<MeetingMoreMenuImpl> buildMeetingMoreMenus() {
        List<MeetingMoreMenuImpl> list = new ArrayList<>();
        list.add(new MoreChatMenu());
        list.add(new MoreRecordMenu());
        list.add(new MoreQaMenu());
        list.add(new MoreVoteMenu());
        list.add(new MoreFloatWindowMenu());
        list.add(new MoreTranslationMenu());
        list.add(new MoreRtmpMenu());
        list.add(new MoreVirtualBackgroundMenu());
        list.add(new MoreAITranslationMenu());
        list.add(new MoreSettingMenu());
        list.add(new MoreFeedbackMenu());
        return list;
    }

    /**
     * 会议分享菜单
     * @return
     */
    @Override
    public List<IShareMenu> buildShareMenus() {
        List<IShareMenu> menus = new ArrayList<>();
        menus.add(new MeetingShareSessionMenu());
        menus.add(new MeetingShareQQMenu());
        menus.add(new MeetingShareWechatMenu());
        menus.add(new MeetingShareEmailMenu());
        menus.add(new MeetingShareSMSMenu());
        menus.add(new MeetingShareCopy());
        menus.add(new MeetingShareMoreMenu());
        return menus;
    }

}

2.最终设置生效handler

MeetingMenuProxy.getInstance().setMeetingMenuBarHandler(new DefaultMeetingBottomBarHandle());

会议底部菜单

public class CustomMenu extends MeetingBottomMenuImpl {
    /**
     * menuId
     * @return
     */
    @Override
    public int getId() {
        return 0;
    }

    /**
     * menu图片
     * @return
     */
    @Override
    public int getDefaultDrawable() {
        return 0;
    }

    /**
     * menu 文案
     * @return
     */
    @Override
    public int getDefaultText() {
        return 0;
    }

    /**
     * menu 点击事件
     */
    @Override
    public void onMenuClick() {
        super.onMenuClick();
    }
}

会议底部更多菜单

public class CustomMenu extends MeetingMoreMenuImpl {

    /**
     * 注意:不要和内置菜单tag冲突
     * @return
     */
    @Override
    public int getTag() {
        return 0;
    }

    /**
     * 图片资源
     * @return
     */
    @Override
    public int getImage() {
        return 0;
    }

    /**
     * 文案
     * @return
     */
    @Override
    public int getText() {
        return 0;
    }

    /**
     * menu点击事件
     */
    @Override
    public void onMenuClick() {
        super.onMenuClick();
    }
}

会议分享菜单

public class CustomMenu extends MeetingShareMenuImpl {
    /**
     * 注意:不要和内置菜单tag冲突
     * @return
     */
    @Override
    public int getTag() {
        return 0;
    }
    /**
     * 图片资源
     * @return
     */
    @Override
    public int getImage() {
        return 0;
    }
    /**
     * 文案
     * @return
     */
    @Override
    public int getText() {
        return 0;
    }
    /**
     * menu点击事件
     */
    @Override
    public void onMenuClick() {
        super.onMenuClick();
    }
}

phone菜单

public class MyPhoneUI extends DefaultCallUI {

    @Override
    public AsyncTask matchPhoneContactByNumber(String number, CallBack<Contact,Void> callback) {
        return ThreadPool.postCommonJob(new JobReleasable<Contact>("matchCallOutContactByNumber", callback) {
            @Override
            public Contact run() {
                Contact contact = new Contact();
                contact.setName("哈哈哈哈 张三");
                contact.setJob("产品经理哈哈哈哈");
                contact.setAvatarDrawable(AppWrapper.getApp().getDrawable(R.drawable.bg_call_dialing));
                return contact;
            }


            @Override
            public void onCallback(Contact contact) {
                callback.onSuccess(contact);
            }
        });
    }

    @Override
    public boolean isOverrideMatchPhoneContactByNumber() {
        return true;
    }

    @Override
    public Drawable getPhoneDefaultContactAvatarDrawable() {
        return AppWrapper.getApp().getDrawable(R.drawable.bg_call_dialing_video);
    }

    @Override
    public String getPhoneCallOutTipContent() {
        return "去电提示 哈哈哈哈哈";
    }

    @Override
    public String getPhoneCallInTipContent() {
        return "来电提示 滴滴滴滴滴";
    }

    @Override
    public Drawable getPhoneCallInBackgroundDrawable() {
        return AppWrapper.getApp().getDrawable(R.drawable.bg_call_dialing_video);
    }


    @Override
    public ArrayList<PhoneBarMenuItem> buildPhoneBarMenuItemList() {
        ArrayList<PhoneBarMenuItem> items = new ArrayList<>();
        items.add(buildPhoneHangUpMenu());
        items.add(buildPhoneDialMenu());
        items.add(buildPhoneHoldMenu());
        items.add(buildPhoneTransferMenu());
        items.add(buildPhoneVoiceMenu());
        items.add(buildPhoneMeetingMenu());
        items.add(buildPhoneShareScreenMenu());
        items.add(buildPhoneMicMenu());
        items.add(buildPhoneMoreMenu());
        return items;
    }

    @Override
    public ArrayList<PhoneMoreMenuItem> buildPhoneMoreMenuItemList() {
        ArrayList<PhoneMoreMenuItem> items = new ArrayList<>();
        items.add(buildPhoneFeedbackMenu());
        items.add(buildPhoneRecordMenu());
        items.add(buildPhoneVideoMenu());

        return items;
    }
}
本页目录