场景7:自定义菜单
更新时间:2025-05-29 07:31:07

场景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 MobilePhoneUI {

    //显示去电界面
    @Override
    public void showPhoneOutgoingUI() {
        super.showPhoneOutgoingUI();
    }

    //显示来电界面
    @Override
    public void showPhoneInComingUI() {
        super.showPhoneInComingUI();
    }

    //显示通话界面
    @Override
    public void showPhoneCallWindow() {
        super.showPhoneCallWindow();
        PhoneCallActivity.start(AppWrapper.getApp());
    }
}

最终设置生效handler

YealinkSdk.getPhoneService().getPhoneController().setPhoneUIProxy(new MyPhoneUI());
本页目录