WeSing 用 Kotlin 和歌声连接用户 | Android 开发者故事
Bilibili 视频链接
https://www.bilibili.com/video/BV1vt4y1Y7KB/
腾讯视频链接
https://v.qq.com/x/page/b32101kchr1.html
"WeSing 这个名字,本身就包含着我们的愿景——大家一起来唱歌吧!就像好友们总是相约去 K 歌一样,WeSing 希望通过歌声将更多的人聚集到一起。"
—— Hary Zhang,Team Lead
通过应用中丰富的曲库,用户们得以在 WeSing 里随时随地唱自己喜欢的歌,方便切换的滤镜特效更能让自己仿佛身处量身定制的歌房一样。WeSing 团队更是为应用添加了直播、竞技之类的玩法,让用户通过歌声结交更多的朋友,也因此收获了大量的人气: 目前在 Google Play 上的下载量已经超过 5,000 万次。
△ K 歌特效一键切换
△ 对歌声有信心?来场直播让自己人气飙升吧
和朋友们 K 歌,玩法总是随心所欲的,以 K 歌为核心互动的 WeSing 自然也需要随时跟上用户们的口味。Kotlin 正在帮助团队做到这一点。
"Kotlin 凭借其高效、现代的语法,实现相同功能所写的代码行数平均能比 Java 少接近 30%,涉及到单例、数据类和 lambda 表达式的时候,甚至能减少 50% 以上的代码。"
—— Worm Chen, Software Engineer
目前 WeSing 核心的业务场景,包括录制、歌房和直播都用到了 Kotlin。更棒的是,Kotlin 对效率的提升也不仅仅限于 WeSing 这一个应用: 可跨产品灵活复用的 MV 录制组件里面 Kotlin 的比例也在逐渐升高。
△ MV 录制组件已经在其他产品里集成使用
而在应用稳定性方面,Kotlin 的空安全性也是团队颇为倚重的。只需要在 Java 代码的参数中加入适当的空安全注解,当其赋值给 Kotlin 的非空类型时就不会有编译错误。在实际使用中,Kotlin 确实显著地减少了 WeSing 应用的空指针异常数量,提高了应用稳定性。
"我们内部有专门的讲座和技术论坛去做 Kotlin 知识的分享和讨论,对 Java 很熟悉的开发者用两三天熟悉一下基本语法就可以上手了。"
—— Codd Zhang, Software Engineer
△ 团队内部的 Kotlin 技术论坛
维持 Kotlin 使用的积极性对 WeSing 团队来说并不困难。除了学习门槛不高之外,强大的工具支持也是一大助力。比如 Android Studio 提供了很方便的 Java 转 Kotlin 操作,如果需要维护一个 Java 代码且修改比较多的话,团队会让开发者直接把代码先转成 Kotlin,然后维护这份 Kotlin 代码。这些都进一步提升了大家使用 Kotlin 的积极性。
△ Convert Java File to Kotlin File 功能
极低的上手门槛、强大的现代化语法以及工具支持、丰富且稳健的互操作性和空安全性,这些都使得 Kotlin 在 WeSing 团队内很快普及开来。目前 WeSing 应用整体已经有大约 30% 的代码是使用 Kotlin 编写,这个比例还在持续增加。
Kotlin 正在助力 WeSing 打造欢唱的盛宴,我们也期待着您的作品也用 Kotlin 谱写出精彩的乐章!
您手上的项目中有多少在使用 Kotlin?欢迎在评论区和我们分享使用 Kotlin 的感想。
推荐阅读
点击屏末 | 阅读原文 | 查看更多开发者精彩故事
WeSing 用 Kotlin 和歌声连接用户 | Android 开发者故事相关推荐
- 3、2、1,开拍!Android 开发者故事大征集
开发者们的故事,其实每天都在发生.聚光灯下的,只是冰山一角. 但让开发者们出现在聚光灯下.麦克风前,很重要.因为创造者们,本就应该光彩夺目. Android 开发者故事的征集已经开始,您是否已经准备好 ...
- 网易云音乐的 Kotlin 乐章 | Android 开发者故事
腾讯视频链接 https://v.qq.com/x/page/z3206z0iutx.html Bilibili 视频链接 https://www.bilibili.com/video/BV1hy4y ...
- 让数字内容被平等获取 | Android 开发者故事
腾讯视频链接 https://v.qq.com/x/page/n3030nhxut2.html Bilibili 视频链接 https://www.bilibili.com/video/av78215 ...
- 卓盟科技: 动态资源加载技术背后的兼容性升级 | Android 开发者故事
在游戏变得日益复杂的今天,一根加载进度条不再仅仅只是开启冒险的倒计时,更是连接玩家与开发者的信使. 玩家们总是希望游戏能马上加载完毕,这意味着 "加载" 这件事情本身也有轻重缓急: ...
- 微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅
本文由微信开发团队工程是由"oneliang"原创发表于WeMobileDev公众号,内容稍有改动. 1.引言 Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBr ...
- kotlin 垂直滚动_在Android的Kotlin中检测点击或滚动
kotlin 垂直滚动 Build a responsive UI that shows or hides the toolbar in response to user clicks whilst ...
- 给Android开发者的kotlin使用
IO大会上说把Kotlin作为Android官方语言,虽然以前也听过,但是不了解,这不进来看看,尝试自己翻译一下,之前都是看别人的译文,直接看别人翻译过来的,可能可以节省时间,但是理解可能不够深入,加 ...
- ORA-01940无法删除当前已连接用户
原文地址:ORA-01940无法删除当前已连接用户作者:1736188794 1)查看用户的连接状况 select username,sid,serial# from v$session ------ ...
- ORACLE查看当前连接用户的权限信息或者角色信息
关于当前用户的相关信息,可以通过如下语句找到: 1 SQL> select * from all_objects where object_name like 'SESSION%'; 2 3 O ...
最新文章
- 某内存池中的指针用法
- 【微信小程序企业级开发教程】快递查询实例
- Android之 FLAG_ACTIVITY_CLEAR_TASK
- 【计算机网络复习 数据链路层】3.6.5 PPP、HDLC
- 百度Q2智能云增长强劲;据悉史上最大 AI 芯片诞生!中兴与奇瑞成立合资公司一起加快开发5G汽车……...
- 10桌面管理文件收纳_二十余件精选桌面好物推荐,让学习工作生活满满正能量!...
- 软件工程学习进度第六周暨暑期学习进度之第六周汇总
- cf(聚簇因子)调优,计划调优,SQL改造
- 分享一种固定页教在页面底部的方法
- c语言作业统计字符,C语言统计字符数(示例代码)
- java源程序编译的结果_java源程序编译后
- Objective C TCP 通讯实例
- Matlab 如何实现身份证号码快速识别
- c语言scan例子,SCAN和C-SCAN算法图解
- CATIA二次开发:工程图中文本的遍历和修改
- tf.app.flags
- josn转bln的方法
- 网易云课堂 计算机入门 期末 编程题
- 2017 百度之星 复赛 Valley Numer(数位dp)
- Kafka 如何给集群配置Scram账户认证
热门文章
- clientid离线_mui 个推获取Clientid的方法
- 记录一次简单拿站过程(日记)
- SharePoint/Office 365 视频教程
- SharePoint 图解教程
- 仿微信聊天-时间间隔五分钟
- 【大数据】十、社会网络图挖掘(Girvan-Newman、拉普拉斯矩阵、Simrank)
- WebSocket实现简单聊天功能案例
- 【龙芯1B例程】:串口中断实验
- 如何自学3D建模,需要什么前提吗?
- zynq7000系列PS端GPIO初始化函数XGpioPs_LookupConfig()和XGpioPs_CfgInitialize()详解