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"}