快速集成 - mengzhuSDK/MengzhuSDK_Android GitHub Wiki

1. 固定UI模板配置及实现方式(快速集成)

固定UI模板使用Module android-library方式提供,内部实现业务上提供的所有功能逻辑及UI的模板。使用时将其library导入项目进行简单配置即可使用。具体配置代码请查看下发示例.如需自主研发UI及逻辑请参考开发指南及API文档。

1.1 manifest配置

<uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-feature android:name="android.hardware.camera.flash" />
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <application
        android:usesCleartextTraffic="true">

1.2 build.gradle配置

android {
    useLibrary 'org.apache.http.legacy'
}
dependencies {
  ...
  implementation project(':MZMediaSDK')
}

1.3 代码实现

Application类内onCreate调用以下代码:

  		/**
         * appid 申请的appid
         * context 项目application
         * b 运行环境 true为debug false为生产环境
         */
        MZSDKInitManager.getInstance().initApplication(this, app_id, false);

初始化关键数据

    //用户信息
UserDto dto=new UserDto();
dto.setUniqueID(用户Id);
dto.setAppid(appId);
dto.setAvatar(头像地址);
dto.setNickname(昵称);
dto.setToken(用户token);
URLParamsUtils.setSecretKey(自己的Secret_Key);
MyUserInfoPresenter.getInstance().saveUserinfo(dto); //保存用户信息

播放直播间activity实现

MUIImmerseUtils.setStatusTranslucent(getWindow(),this);//super.onCreate之前调用 设置顶部状态
super.onCreate(savedInstanceState);
setTheme(R.style.AppCompatTheme);//设置主题
setContentView(...);
MUIImmerseUtils.setStatusTextColor(false,this);//设置顶部状态栏字体颜色

播放直播间SDK fragment实现

mPlayerFragment = PlayerFragment.newInstance(String Appid, String avatar, String nickName, String unique_id, String ticketId)
mPlayerFragment.setIPlayerClickListener(IPlayerClickListener);//IPlayerClickListener 是fragmentUI点击回调 具体逻辑需要接入方自行实现。

二分屏直播间 fragment实现

mPlayerFragment = HalfPlayerFragment.newInstance(String Appid, String avatar, String nickName, String unique_id, String ticketId)
mPlayerFragment.setIPlayerClickListener(IPlayerClickListener);//IPlayerClickListener 是fragmentUI点击回调 具体逻辑需要接入方自行实现。

IPlayerClickListener介绍

void onAvatarClick()//点击主播头像
void onAttentionClick()//关注
void onOnlineClick(MZOnlineUserListDto onlineUserDto);//在线人数
void onCloseClick()//退出
void onReportClick()//举报
void onShareClick()//分享
void onLikeClick()//点赞
void onRecommendGoods()//推荐商品
void resultAnchorInfo(AnchorInfoDto anchorInfoDto);//主播信息接口回调

1.3.1推流SDK

推流Activity实现

    @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    MUIImmerseUtils.setStatusTranslucent(getWindow(), this);
    //根据需要选择是竖屏推还是横屏推
    screen = getIntent().getIntExtra("screen",0);
    switch (screen){
        case 1:
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);竖屏
            break;
        case 2:
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);横屏
            break;
    }
    super.onCreate(savedInstanceState);
    setTheme(R.style.AppCompatTheme);
    setContentView(...);
    MUIImmerseUtils.setStatusTextColor(false, this);
}

推流Fragment实现

//推流前默认配置
LiveConfigDto liveConfigDto = new LiveConfigDto();
//码率 标清500 高清800 超清1000
liveConfigDto.setBitrate(getIntent().getIntExtra("bitrate",0));
//美颜
liveConfigDto.setCbbeauty(getIntent().getBooleanExtra("cbbeauty",false));
//前后置摄像头
liveConfigDto.setCblater(getIntent().getBooleanExtra("cblater",false));
//静音
liveConfigDto.setCbAudio(getIntent().getBooleanExtra("cbAudio",false));
//调用盟主提供的创建直播Api获取的live_tk
liveConfigDto.setLive_tk(getIntent().getStringExtra("live_tk"));
//活动id
liveConfigDto.setTicketId(getIntent().getStringExtra("ticketId"));
//全体禁言
liveConfigDto.setAllBanChat(getIntent().getBooleanExtra("cbAllBanChat",false)?0:1);
//FPS 15-30
liveConfigDto.setFps(Integer.parseInt(getIntent().getStringExtra("fps")));
//开始倒计时
liveConfigDto.setTime(Integer.parseInt(getIntent().getStringExtra("time")));
//活动信息
mPlayInfoDto = new PlayInfoDto();
//消息信息 具体请查看API文档
mPlayInfoDto.setMsg_config(startBroadcastInfoDto.getMsg_conf());
//长连接 具体请查看API文档
mPlayInfoDto.setChat_config(startBroadcastInfoDto.getChat_conf());
//活动id
mPlayInfoDto.setTicket_id(startBroadcastInfoDto.getTicket_id());
//频道id
mPlayInfoDto.setChannel_id(startBroadcastInfoDto.getChannel_id());
//参数1 推流地址 2活动id 3横竖屏 4活动必要信息 5推流前默认配置集合()
mzPlugFlowFragement=MZPlugFlowFragement.newInstance(startBroadcastInfoDto.getPush_url(),startBroadcastInfoDto.getTicket_id()
            ,screen,mPlayInfoDto,liveConfigDto);

IPushClickListener推流UI点击回调

/**
 * 点击结束直播
 */
void onStopLive();
/**
 * 点击聊天用户头像回调
 */
void onChatAvatar(ChatTextDto chatTextDto);
/**
 * 点击全体禁言
 */
void onALLBanChat();
/**
 * 点击单体禁言
 */
void onBanChat();
/**
 * 点击分享
 */
void onShare(PlayInfoDto dto);
/**
 * 点击主播头像
 */
void onLiveAvatar();
/**
 * 点击在线人数
 */
void onOnlineNum(MZOnlineUserListDto mzOnlineUserListDto);

SDK build.gradle配置

api 'tv.mengzhu.core:MZCoreLibrary:2.6.1'
api 'tv.mengzhu.dlna:MZDLNAlibrary:2.2.0'
api 'tv.mengzhu.restreaming:MZPushFlowSDK:2.6.2'
api 'com.mengzhu.sdk.download:MZDownload:2.3.0'
api 'com.mengzhu.live.sdk:MZLiveSDK:2.7.0'
api 'tv.mengzhu.sdk:MZPlayer:2.7.3'

如遇support包冲突

api ('tv.mengzhu.core:MZCoreLibrary:2.2.0'){
    exclude group: 'com.android.support'
}
api ('tv.mengzhu.dlna:MZDLNAlibrary:2.2.0'){
    exclude group: 'com.android.support'
}
api ('tv.mengzhu.restreaming:MZPushFlowSDK:2.2.0'){
    exclude group: 'com.android.support'
}
api ('com.mengzhu.sdk.download:MZDownload:2.2.0'){
    exclude group: 'com.android.support'
}
api ('com.mengzhu.live.sdk:MZLiveSDK:2.2.0'){
    exclude group: 'com.android.support'
}
api ('tv.mengzhu.sdk:MZPlayer:2.2.0'){
    exclude group: 'com.android.support'
}

项目build.gradle配置

    maven { url 'http://maven.zmengzhu.com:46081/repository/maven-snapshots/'}
    maven { url 'http://4thline.org/m2' }
    maven { url "https://jitpack.io"}