重新回来,介绍一下Android Studio 如何继承腾讯云直播 以及 腾讯云通信

停了好久的博客,最近找到工作,我的安卓是通过自学的。所来,来的新的公司也不能懈怠,坚持每星期一篇博客。
言归正传,最近公司要开发一款直播app,要接入腾讯云直播以及腾讯云通信。腾讯的api也是看了我半天,也没搞懂,- -

现在搞懂了,所以写一篇博客记录一下。

首先集成腾讯云直播,这个很简单,下载了sdk以后将arr文件copy到Project模式下app/libs,如下图:

这里写图片描述

一.在app下的build.gradle中需要做两步操作
1:导入sdk,如下:
implementation(name: 'LiteAVSDK_Professional_4.7.4395', ext: 'aar')

这里写图片描述

2:指定ndk兼容的架构:(我的不是商业版,商业版
ndk {
abiFilters “armeabi”, “armeabi-v7a”
}
这里写图片描述

二.在工程目录下的build.gradle中需要一步操作:

allprojects {
repositories {
google()
jcenter()
flatDir { dirs ‘libs’ }
}
} 指定本地代码仓库

这里写图片描述

这里写图片描述

接着你只需要添加权限那些东西了,可以参照这里

集成腾讯云通信,这是比较麻烦的。

一.首先下载云通信的sdk,然后将文件夹中libs中的所有文件导入到,如下位置:

注意:还是project模式下

这里写图片描述

就是jniLibs文件夹,如果没有 就自己创建,文件名不能错

接着在,app/build.gradle中的dependencies标签下 添加

implementation fileTree(include: [’*.jar’], dir: ‘src/main/jniLibs’)

如图:

这里写图片描述

二.我用的是独立模式,需要生成公私匙,(此时你需要注册腾讯云账号或者登陆已有的腾讯云账号,到控制台,选择模式,然后生成公私匙,接着用在控制台中找到开发辅助工具,获取到USERSIG)(模式的差别可以在这里看

三.这样就ok了,剩下的你需要看这里,添加权限,以及
注册广播和Activity

重点是这里,它的api调用顺序:

这里写图片描述

初始化 和 登录是一定要做的,我是新建了一个类,来初始化。(因为 我只要用到群组功能,在直播间创建的时候创建聊天群,所以,并没有没在APPlication类中初始化,而是用到了才初始化。具体代码如下,注意:还需要生成private_key,)

/**
 * 直播房间管理
 */

public class AVRoomManager {

    //腾讯云通信的APP_ID
    private int SDK_APP_ID = 你的appid;
    //密匙生成的key
    private String USERSIG = 你用private key 生成的;

    //腾讯云初始化工具
    private TIMManager mTimManager;


    private static final String tag = "AVRoomManager";

    //腾讯云群组管理
    private TIMGroupManager.CreateGroupParam param;
    private TIMGroupManager mGroupManager;

    //创建的群组ID
    private String mGroupId;

    //当前群组的人数
    private long mNumber;
    private TIMListener mListener;

    public AVRoomManager(Context context) {

        init(context);
        mGroupManager = TIMGroupManager.getInstance();

    }

    //初始化
    private void init(final Context context) {

        mTimManager = TIMManager.getInstance();

        //step 1 初始化sdk配置
        TIMSdkConfig config = new TIMSdkConfig(SDK_APP_ID)
                .enableCrashReport(false)
                .enableLogPrint(true)
                .setLogLevel(TIMLogLevel.DEBUG)
                .setLogPath(Environment.getExternalStorageDirectory().getPath() + "/justfortest/");

        mTimManager.init(context, config);

        //step 2 用户配置
        TIMUserConfig userConfig = new TIMUserConfig()
                //设置用户状态变更事件监听器
                .setUserStatusListener(new TIMUserStatusListener() {
                    @Override
                    public void onForceOffline() {
                        //被其他终端踢下线
                        Log.i(tag, "onForceOffline");
                    }

                    @Override
                    public void onUserSigExpired() {
                        //用户签名过期了,需要刷新 userSig 重新登录 SDK
                        Log.i(tag, "onUserSigExpired");
                    }
                })
                //设置连接状态事件监听器
                .setConnectionListener(new TIMConnListener() {
                    @Override
                    public void onConnected() {
                        Log.i(tag, "onConnected");
                    }

                    @Override
                    public void onDisconnected(int code, String desc) {
                        Log.i(tag, "onDisconnected");
                    }

                    @Override
                    public void onWifiNeedAuth(String name) {
                        Log.i(tag, "onWifiNeedAuth");
                    }
                })
                //设置群组事件监听器
                .setGroupEventListener(new TIMGroupEventListener() {
                    @Override
                    public void onGroupTipsEvent(TIMGroupTipsElem elem) {
                        Log.i(tag, "onGroupTipsEvent, type: " + elem.getTipsType());
                    }
                })
                //设置会话刷新监听器
                .setRefreshListener(new TIMRefreshListener() {
                    @Override
                    public void onRefresh() {
                        Log.i(tag, "onRefresh");
                    }

                    @Override
                    public void onRefreshConversation(List<TIMConversation> conversations) {
                        Log.i(tag, "onRefreshConversation, conversation size: " + conversations.size());
                    }
                });

        //消息扩展用户配置
        userConfig = new TIMUserConfigMsgExt(userConfig)
                //禁用消息存储
                .enableStorage(false)
                //开启消息已读回执
                .enableReadReceipt(true);

        //资料关系链扩展用户配置
        userConfig = new TIMUserConfigSnsExt(userConfig)
                //开启资料关系链本地存储
                .enableFriendshipStorage(true)
                //设置关系链变更事件监听器
                .setFriendshipProxyListener(new TIMFriendshipProxyListener() {
                    @Override
                    public void OnAddFriends(List<TIMUserProfile> users) {
                        Log.i(tag, "OnAddFriends");
                    }

                    @Override
                    public void OnDelFriends(List<String> identifiers) {
                        Log.i(tag, "OnDelFriends");
                    }

                    @Override
                    public void OnFriendProfileUpdate(List<TIMUserProfile> profiles) {
                        Log.i(tag, "OnFriendProfileUpdate");
                    }

                    @Override
                    public void OnAddFriendReqs(List<TIMSNSChangeInfo> reqs) {
                        Log.i(tag, "OnAddFriendReqs");
                    }


                });

        //群组管理扩展用户配置
        userConfig = new TIMUserConfigGroupExt(userConfig)
                //开启群组资料本地存储
                .enableGroupStorage(true)
                //设置群组资料变更事件监听器 监听群用户进出事件
                .setGroupAssistantListener(new TIMGroupAssistantListener() {
                    @Override
                    public void onMemberJoin(String groupId, List<TIMGroupMemberInfo> memberInfos) {
                        Log.i(tag, "onMemberJoin");

                        Toast.makeText(context, "jin", Toast.LENGTH_SHORT).show();

                        if (mListener != null) {

                            mListener.onMemberInOrOut();

                        }

                    }

                    @Override
                    public void onMemberQuit(String groupId, List<String> members) {
                        Log.i(tag, "onMemberQuit");

                        if (mListener != null) {

                            mListener.onMemberInOrOut();

                        }
                    }

                    @Override
                    public void onMemberUpdate(String groupId, List<TIMGroupMemberInfo> memberInfos) {
                        Log.i(tag, "onMemberUpdate");
                    }

                    @Override
                    public void onGroupAdd(TIMGroupCacheInfo groupCacheInfo) {
                        Log.i(tag, "onGroupAdd");
                    }

                    @Override
                    public void onGroupDelete(String groupId) {
                        Log.i(tag, "onGroupDelete");
                    }

                    @Override
                    public void onGroupUpdate(TIMGroupCacheInfo groupCacheInfo) {
                        Log.i(tag, "onGroupUpdate");
                    }
                });

        //将用户配置与通讯管理器进行绑定
        TIMManager.getInstance().setUserConfig(userConfig);

        //设置消息监听器,收到新消息时,通过此监听器回调
        TIMManager.getInstance().addMessageListener(new TIMMessageListener() {//消息监听器
            @Override
            public boolean onNewMessages(List<TIMMessage> msgs) {//收到新消息
                for (int i = 0; i < msgs.size(); i++) {

                    //解析新消息
                    TIMMessage msg = msgs.get(i);

                    for (int j = 0; j < msg.getElementCount(); ++j) {
                        TIMElem elem = msg.getElement(j);

                        //获取当前元素的类型
                        TIMElemType elemType = elem.getType();
                        Log.d(tag, "elem type: " + elemType.name());
                        if (elemType == TIMElemType.Text) {
                            //处理文本消息
                            TIMTextElem textElem = (TIMTextElem) elem;
                            String text = ((TIMTextElem) elem).getText();
                            String name = msg.getSenderProfile().getNickName();
                            Log.d(tag, "onNewMessages: ------------" + text);
                            if (mListener != null) {

                                mListener.onMessageArrived(name + ":" + text);

                            }

                        } else if (elemType == TIMElemType.Image) {
                            //处理图片消息
                        }
                    }

                }
                return true; //返回true将终止回调链,不再调用下一个新消息监听器
            }
        });

    }

    public void login() {

        TIMManager.getInstance().login(你的账号, USERSIG, new TIMCallBack() {
            @Override
            public void onError(int code, String desc) {
                //错误码 code 和错误描述 desc,可用于定位请求失败原因
                //错误码 code 列表请参见错误码表
                Log.d(tag, "login failed. code: " + code + " errmsg: " + desc);
            }

            @Override
            public void onSuccess() {
                Log.d(tag, "login succ");
                if (mListener != null) {

                    mListener.loginSuccess();

                }
            }
        });

    }

    public void createGroup(Context context) {

        create();

    }

    private void create() {

        //创建公开群,且不自定义群 ID
        param = new TIMGroupManager.CreateGroupParam("Public", "test_group");
        //指定群简介
        param.setIntroduction("hello world");
        //指定群公告
        param.setNotification("welcome to our group");

        //添加群成员
        List<TIMGroupMemberInfo> infos = new ArrayList<>();
        TIMGroupMemberInfo member = new TIMGroupMemberInfo("test_group");
        member.setRoleType(TIMGroupMemberRoleType.Normal);
        infos.add(member);
        param.setMembers(infos);

        //创建群组
        mGroupManager.createGroup(param, new TIMValueCallBack<String>() {
            @Override
            public void onError(int code, String desc) {
                Log.d(tag, "create group failed. code: " + code + " errmsg: " + desc);
            }

            @Override
            public void onSuccess(String s) {
                mGroupId = s;
                Log.d(tag, "create group succ, groupId:" + s);
                if (mListener != null) {

                    mListener.onGroupCreate(s);

                }
            }
        });


    }

    public void deleteGroup(String groupId) {

        mGroupManager.deleteGroup(groupId, new TIMCallBack() {
            @Override
            public void onError(int code, String desc) {

                Log.d(tag, "login failed. code: " + code + " errmsg: " + desc);
            }

            @Override
            public void onSuccess() {
                //解散群组成功
            }
        });

    }

    //获取群组的人数
    public long getMemberNum() {

        ArrayList<String> strings = new ArrayList<>();

        strings.add(mGroupId);
        TIMGroupManagerExt mGroupExt = TIMGroupManagerExt.getInstance();
        mGroupExt.getGroupDetailInfo(strings, new TIMValueCallBack<List<TIMGroupDetailInfo>>() {
            @Override
            public void onError(int i, String s) {

            }

            @Override
            public void onSuccess(List<TIMGroupDetailInfo> timGroupDetailInfos) {

                TIMGroupDetailInfo timGroupDetailInfo = timGroupDetailInfos.get(0);
                mNumber = timGroupDetailInfo.getMemberNum();

            }
        });

        return mNumber;

    }

    public void show(){



    }

    public void setListener(TIMListener listener) {

        mListener = listener;

    }

    public interface TIMListener {

        /**
         * 当有新的文本信息到达时 回调
         */
        void onMessageArrived(String text);


        /**
         * 当群组创建成功时 回调
         */
        void onGroupCreate(String groupId);

        /**
         * 当有用户进出直播间时回调
         */
        void onMemberInOrOut();

        /**
         * 登录成功时调用
         */
        void loginSuccess();
    }

}

需要注意的是:我这只用到群组功能,需要其他功能的请自行到腾讯云查看。

ok,就那么多,有什么问题可以留言

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值