首页 > 编程语言 >程序员的硬核浪漫 — 女友专属语聊房(内附源码)

程序员的硬核浪漫 — 女友专属语聊房(内附源码)

时间:2023-11-01 16:22:05浏览次数:35  
标签:getInstance 内附 void 语聊 源码 new ZIMChatRoom public 硬核

 人人都说找个程序猿做男朋友就是好,钱多话少 over 早。

额。。。估计小编把文章发布出去后就要被公司的程序猿同胞们疯狂逮捕挨打了。

虽然日常生活中大家对程序猿的标签大多是呆板、木讷、不懂浪漫,格子衫牛仔裤和黑框眼镜,整天宥与Coding(脱发),哪怕是红酒蜡烛鲜花围绕,一个告警也要立刻掏出电脑处理 。

不过但是说起程序猿的浪漫,逼格自然少不了,代码表白更是身为一名专业程序猿的必备技能。

就比如这句:

—— 遇你天长地久,失你度日如年。

while True:
    if meet_you: life++
    else: life--

小刘是某公司程序员,每次都有新花样的他,今年女友生日计划再来点不一样的。

联想到年初clubhouse火热,女友求尽了朋友圈好友,可还是一码难求。

于是,一个奇奇怪怪的灵感涌现了 —— 做个语聊房送她!!!

既可以讲一些悄悄话,还可以让她和好友在里面聊天,真是一举两得啊!程序员,追求的就是氛围感拉满!

了解到即构最近也做了语聊房产品,于是我登陆即构官网尝试自己动手试一下,搭建一个语聊房。下面是详细的步骤,大家跟我一起看看吧!

一、开始准备

首先,在开始实现语聊房场景的 demo 之前,我们需要做一些开发前的准备工作:

 

1、开发环境准备:(以 android 为例)

 

  • Android Studio 2.1 或以上版本
  • Android SDK 25、Android SDK Build-Tools 25.0.2、Android SDK Platform-Tools 25.x.x 或以上版本
  • Android 4.1 或以上版本,且支持音视频的 Android 真机设备
  • Android 设备已经连接到 Internet

 

2、账户注册:

 

开发环境搭建好之后,我们需要去 ZEGO 官网注册一个账户,进入管理控制台并创建应用、获取开发需要的 AppId 和 AppSign 。

具体的创建应用过程详见此文章: 控制台创建项目流程控制台项目管理 - 开发者中心 - ZEGO即构科技

二、实现流程介绍

ZEGO 即构科技最近为了开发者能快速实现语聊房业务,特地封装了基于 Express SDK 和 ZIM SDK 的语聊房 SDK(ZIMChatRoom),所以我们能够快速接入语聊房所需要的业务功能,做到开箱即用。

同时,语聊房 SDK 是全开源提供的,那么我们还可以基于实际业务逻辑对源码进行定制化修改,可以说是相当贴心了!!!

这里,需要先获取ZIMChatRoom 语聊房的示例源码,下载地址:https://storage.zego.im/ZIMChatRoom/ZIMChatRoom-Android.ziphttps://storage.zego.im/ZIMChatRoom/ZIMChatRoom-Android.zip

接下来,我们就要基于 ZIMChatRoom 实现语聊房最核心的业务逻辑。

 

1、初始化

 

首先第一个步骤是初始化,而初始化所必须的 App 配置需要联系 ZEGO 技术支持获取。

Long appID = 214124124L;  // 联系 ZEGO 销售或售前工程师配置
String appSign = "xxx";   // 联系 ZEGO 销售或售前工程师配置
// 最后一个参数 application 指的是运行 ZIMChatRoom 的 Application 对象
ZIMChatRoom.getInstance().init(appID, appSign,this);
// 注册回调事件
ZIMChatRoom.getInstance().setZIMChatRoomEventHandler(new ZIMChatRoomEventHandler() {
    ......
});

2、用户登录

在登录IM业务时,我们需要使用 Token 鉴权的方式登录。ZIM 的鉴权 Token 详细获取方式可以参考 使用 Token 鉴权(Android即时通讯使用 Token 进行登录鉴权 - 开发者中心 - ZEGO即构科技)。

用户登录的代码如下:

ZIMChatRoomUserInfo user  = new ZIMChatRoomUserInfo();    // 设置user 的相关属性    
user.setUserID("USER_ID");    
user.setUserName("USER_NAME");   
String token = "xxx";  // 需要获取 
ZIMChatRoom.getInstance().login(user, token, new LoginCallback() {             
    @Override    
    public void onLogined(ZIMChatRoomErrorCode error) {    
    // 登录情况回调    
    } 
});

 

3、创建语聊房

 

做好了前边的流程,接下来就可以开始创建房间:(这里要补一个 RTC Token 的获取流程:开发者中心 - 即构科技

ZIMChatRoomInfo roomInfo = new ZIMChatRoomInfo();
// 根据需要设置房间的各种属性
roomInfo.setRoomID("ROOM_ID");
String rtcToken = "xxx";  // 需要获取 RTC Token
ZIMChatRoom.getInstance().createChatRoom(roomInfo, rtcToken, new CreateChatRoomCallback() {
   @Override
   public void onChatRoomCreated(ZIMChatRoomErrorCode error) {
       // 创建房间情况
   }
});

4、观众加入

房间搭建完毕,我们就可以先加入到房间:(这里要补一个 RTC Token 的获取流程:开发者中心 - 即构科技

String roomID = "ROOM_ID";
String rtcToken = "xxx";  // 需要获取 RTC Token
ZIMChatRoom.getInstance().joinChatRoom(roomID,rtcToken,new JoinChatRoomCallback() {
   @Override
   public void onChatRoomJoined(ZIMChatRoomErrorCode error) {
       // 加入房间情况
   }
});

 

5、观众上麦

 

上麦。上麦成功后,SDK 将会自动采集麦克风声音并进行推流:

int seatIndex = 2;  // 麦位下标位置 
ZIMChatRoom.getInstance().enterSeat(seatIndex, new EnterSeatCallback(){    
    @Override
    public  void onSeatEntered(ZIMChatRoomErrorCode error){
        // 处理上麦结果
});

注意:在上麦之前要确保麦克风权限已打开哦

6、邀请好友

 

除了观众主动上麦之外,房主也可以主动去邀请房间内的好友进行上麦:

 

String toUserID = "USERID_OF_INVITED"; // 接收邀请方的 userID
ZIMChatRoom.getInstance().sendInvitation(toUserID, new SendInvitationStatusCallback() {
    @Override
    public void onInvitationStatusSent(ZIMChatRoomErrorCode errorCode) {
    // 发送邀请的结果回调
    }
});

 

当另一个用户收到邀请请求后,会收到此回调通知:

 

// 接收邀请上麦处理
ZIMChatRoom.getInstance().setZIMChatRoomEventHandler(new ZIMChatRoomEventHandler() {
   @Override
   public void onReceiveInvitation(String fromUserID) {
       // 收到邀请信息,此时该用户可以主动调用上麦操作
   }
});

 

7、聊天

 

好啦,完成以上步骤之后我们就可以开始语音聊天了,而除了语聊房能实现的基本语音聊天之外,房间内的用户还可以进行公屏文字聊天:

ZIMChatRoom.getInstance().sendRoomMessage("YOUR_MESSAGE", new SendRoomMessageCallback() {
   @Override
   public void onRoomMessageSent(ZIMChatRoomErrorCode error) {
       // 发送房间聊天消息的结果
   }
});

 

8、送礼物

 

当然,你还可以为你的女朋友送上礼物:

 

int giftType = 1;  // 礼物类型可由开发者自定义,SDK 只作透传
ArrayList<String> toUserIDList = new ArrayList<>();  // 接收礼物的用户 ID 列表,需要开发者自己添加接收礼物的用户 ID
toUserIDList.add("GRIL_FRIEND");
ZIMChatRoom.getInstance().sendGiftMessage(giftType, toUserIDList, new SendGiftMessageCallback() {
   @Override
   public void onGiftMessageSent(ZIMChatRoomErrorCode error, List<String> sendFailToUsers) {
   // 接收发送礼物的结果以及接收礼物失败的用户列表
   }
});

 

这样,接受到礼物的用户将收到 onReceiveGiftMessage 通知,而房间内的其他用户将收到 onReceiveGiftBroadcastMessage 通知,便于在 UI 上展示一些酷炫文字和特效,提醒房间内的女友“你的男朋友为你送上礼物啦”~

 

//接收礼物
ZIMChatRoom.getInstance().setZIMChatRoomEventHandler(new ZIMChatRoomEventHandler() {
   @Override
   public void onReceiveGiftMessage(int giftType, String fromUserID) {
   // 对接收礼物进行操作
   }
   @Override
   public void onReceiveGiftBroadcastMessage(List<String> toUSerIDList, int giftType) {
   // 对接收到礼物广播操作
   }
});

 

9、下麦

 

当你不需要再在麦上聊天时,调用下麦即可即刻停止发送音频数据:

 

// 下麦操作
ZIMChatRoom.getInstance().leaveSeat(new LeaveSeatCallback(){
   @Override
   public void onSeatLeft(ZIMChatRoomErrorCode error){
       // 对下麦情况进行操作
   }
});

通过以上几个步骤,就基本上完成了语聊房的搭建上麦及其他操作,实现过程也很清晰一目了然,已经迫不及待要邀请女友上麦连线了!!!

 

三、效果呈现(示意图)

完整的搭建过程就是这样,保存了一些 demo 的截图,给大家看下:

 

 

 

四、结语

 

浪漫的方式有很多种,谁说程序员就不懂浪漫?

浪漫不只有鲜花和情话,还有程序员手写的代码。

不怕和程序员谈恋爱,只怕程序员懂浪漫。

毕竟他们浪漫起来,谁也招架不住。

女友的专属语聊房,你学废了嘛?赶快自己也动手搭一个,岂不美哉?

 

最后,来一波双十一福利,9.9元起送语聊房最佳实践文档,Demo+源码+视频解说,还有额外 1 万分钟使用时长。扫码咨询

标签:getInstance,内附,void,语聊,源码,new,ZIMChatRoom,public,硬核
From: https://www.cnblogs.com/zegoinfo/p/17803417.html

相关文章

  • FreeRTOS深入教程(队列内部机制和源码分析)
    (文章目录)前言本篇文章主要来为大家分析队列的内部机制和源码实现。一、队列结构体分析在FreeRTOS中队列会使用一个结构体来表示:1.int8_t*pcHead和int8_t*pcWriteTo:这些指针指向队列存储区的头部和下一个可写入的位置。队列存储区是一个用于存储队列中数据项的缓冲......
  • 直播平台源码,自定义下拉刷新控件
    直播平台源码,自定义下拉刷新控件 importFoundationimportUIKitimportSnapKitclassXRefreshControl:UIRefreshControl{  varobservation:NSKeyValueObservation?  varisLocalRefreshing:Bool=false  letindicator=UIProgressView(progressViewStyle:......
  • LIMS系统源码:从样品登记到检验全面管理实验室流程
    LIMS可用于管理完整的实验程序,从样品登记到检验、校核、审核到最终批准报告,建立在过程质量控制的基础上,对检测流程进行有效全面的管理,对影响质量的人、机、料、法、环因素加以控制,同时为质量改进提供数据依据。LIMS实验室信息管理系统,功能包括以下几个模块:委托管理:样品登记、样品接......
  • Kamailio 源码编译
    Kamailio源码编译一、环境1、OS:Debianbullseye2、版本:Kamailio-5.7.23、MySQL5.7 二、编译1、在Kamailio-5.7.2目录下执行如下指令,生产modules.lst文件makeFLAVOUR=kamailiocfg2、打开modules.lst文件,找到exclude_modules,将等号后面的db_mysql删除。然后执行编译......
  • 掌握《Android Framework源码开发揭秘》,成为移动开发领域的领跑者
    前言前两天被一条消息给震惊到了:阿里上半年裁员超1.36万人,今年将新增近6000名应届大学生。差点以为阿里扛不住了。。。。裁员这个事大家应该见怪不怪,这两年,我们已经被一波又一波的裁员浪潮,冲激得可以说是麻木了,但是1.36万这个数字还是挺吓人的。对于企业来说,这是调整经营策略、优化......
  • 基于微信小程序的美家买菜系统-计算机毕业设计源码+LW文档
    一、 论文选题的目的和意义如今,随着社会的不断变化与发展,计算机行业的快速兴起使得计算机技术不断提高。腾讯在推出微信小程序之后,在各种行业里面掀起一阵阵的热潮,很多APP应用被简化为小程序的功能迅速推出,同时也根据小程序的特性推出各种独具匠心的应用,相对传统的APP来说,微信小程......
  • 专业实践师生组织体系APP_-计算机毕业设计源码+LW文档
    摘 要随着我国教育事业的发展,如何更好的锻炼学生的实践能力已经成为当下很多高校研究的一个主要内容,传统的学生实践都是教育工作人样人工手动的方式在进行管理,这种管理方式非常的落后,为了能够提高高校专业实践师生组织管理效率,我们开发了本次的专业实践师生组织体系APP。本专业......
  • 基于Python的天气数据可视化平台-计算机毕业设计源码+LW文档
    开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:PyCharm浏览器:谷歌浏览器数据库设计:DROPTABLEIFEXISTSchongwubaike;/*!40101SET@saved_cs_client=@@character_set_client/;/!40101SETcharacter_se......
  • 成品直播源码推荐,去掉导航条和tabbar线条
    成品直播源码推荐,去掉导航条和tabbar线条去掉导航条底部线条 [self.navigationController.navigationBarsetBackgroundImage:[[UIImagealloc]init]forBarMetrics:UIBarMetricsDefault];  [self.navigationController.navigationBarsetShadowImage:[[UIImagealloc]i......
  • 手机直播源码,Flutter 自定义 虚线 分割线
    手机直播源码,Flutter自定义虚线分割线学习使用Flutter进行虚线自定义控件练习 //自定义虚线(默认是垂直方向)classDashedLindextendsStatelessWidget{ finalAxisaxis;//虚线方向 finaldoubledashedWidth;//根据虚线的方向确定自己虚线的宽度 finald......