• 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 开发者故事相关推荐

  1. 3、2、1,开拍!Android 开发者故事大征集

    开发者们的故事,其实每天都在发生.聚光灯下的,只是冰山一角. 但让开发者们出现在聚光灯下.麦克风前,很重要.因为创造者们,本就应该光彩夺目. Android 开发者故事的征集已经开始,您是否已经准备好 ...

  2. 网易云音乐的 Kotlin 乐章 | Android 开发者故事

    腾讯视频链接 https://v.qq.com/x/page/z3206z0iutx.html Bilibili 视频链接 https://www.bilibili.com/video/BV1hy4y ...

  3. 让数字内容被平等获取 | Android 开发者故事

    腾讯视频链接 https://v.qq.com/x/page/n3030nhxut2.html Bilibili 视频链接 https://www.bilibili.com/video/av78215 ...

  4. 卓盟科技: 动态资源加载技术背后的兼容性升级 | Android 开发者故事

    在游戏变得日益复杂的今天,一根加载进度条不再仅仅只是开启冒险的倒计时,更是连接玩家与开发者的信使. 玩家们总是希望游戏能马上加载完毕,这意味着 "加载" 这件事情本身也有轻重缓急: ...

  5. 微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅

    本文由微信开发团队工程是由"oneliang"原创发表于WeMobileDev公众号,内容稍有改动. 1.引言 Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBr ...

  6. kotlin 垂直滚动_在Android的Kotlin中检测点击或滚动

    kotlin 垂直滚动 Build a responsive UI that shows or hides the toolbar in response to user clicks whilst ...

  7. 给Android开发者的kotlin使用

    IO大会上说把Kotlin作为Android官方语言,虽然以前也听过,但是不了解,这不进来看看,尝试自己翻译一下,之前都是看别人的译文,直接看别人翻译过来的,可能可以节省时间,但是理解可能不够深入,加 ...

  8. ORA-01940无法删除当前已连接用户

    原文地址:ORA-01940无法删除当前已连接用户作者:1736188794 1)查看用户的连接状况 select username,sid,serial# from v$session ------ ...

  9. ORACLE查看当前连接用户的权限信息或者角色信息

    关于当前用户的相关信息,可以通过如下语句找到: 1 SQL> select * from all_objects where object_name like 'SESSION%'; 2 3 O ...

最新文章

  1. 某内存池中的指针用法
  2. 【微信小程序企业级开发教程】快递查询实例
  3. Android之 FLAG_ACTIVITY_CLEAR_TASK
  4. 【计算机网络复习 数据链路层】3.6.5 PPP、HDLC
  5. 百度Q2智能云增长强劲;据悉史上最大 AI 芯片诞生!中兴与奇瑞成立合资公司一起加快开发5G汽车……...
  6. 10桌面管理文件收纳_二十余件精选桌面好物推荐,让学习工作生活满满正能量!...
  7. 软件工程学习进度第六周暨暑期学习进度之第六周汇总
  8. cf(聚簇因子)调优,计划调优,SQL改造
  9. 分享一种固定页教在页面底部的方法
  10. c语言作业统计字符,C语言统计字符数(示例代码)
  11. java源程序编译的结果_java源程序编译后
  12. Objective C TCP 通讯实例
  13. Matlab 如何实现身份证号码快速识别
  14. c语言scan例子,SCAN和C-SCAN算法图解
  15. CATIA二次开发:工程图中文本的遍历和修改
  16. tf.app.flags
  17. josn转bln的方法
  18. 网易云课堂 计算机入门 期末 编程题
  19. 2017 百度之星 复赛 Valley Numer(数位dp)
  20. Kafka 如何给集群配置Scram账户认证

热门文章

  1. clientid离线_mui 个推获取Clientid的方法
  2. 记录一次简单拿站过程(日记)
  3. SharePoint/Office 365 视频教程
  4. SharePoint 图解教程
  5. 仿微信聊天-时间间隔五分钟
  6. 【大数据】十、社会网络图挖掘(Girvan-Newman、拉普拉斯矩阵、Simrank)
  7. WebSocket实现简单聊天功能案例
  8. 【龙芯1B例程】:串口中断实验
  9. 如何自学3D建模,需要什么前提吗?
  10. zynq7000系列PS端GPIO初始化函数XGpioPs_LookupConfig()和XGpioPs_CfgInitialize()详解