环信编程大赛优秀开源项目系列之一:“文播”一款文字直播APP
根据IDC数据显示,中国有近200万开发者,身为一个程序员,我们生活在一个 IT 系统越发复杂且多变化的时代。有时候执行一个简单的开源项目,开发一个基础功能都需要精准定义并耗费大量时间专注任务。随着云计算的兴起,API 和SDK开始作为软件之间重要媒介而作为一种独立应用而存在,“一切皆软件,一切皆API,一切皆SDK”。通过API和SDK可以让开发者摆脱繁重的基础功能底层开发,短时间即可让App拥有各种诸如内置IM、统计等基础功能组件能力。
5月14日,由环信联合猿圈共同推出的“首届环信编程大赛”颁奖典礼在中关村义创空间隆重举行。本次环信编程大赛历时两个月,由线上初赛、决赛和颁奖典礼三个环节组成,总计报名人数2000+,收到决赛项目100+。最终由评委会认定的13个优秀开源项目及开发者集体亮相颁奖典礼。其中“方圆十里”、“高仿微信“和“咚咚”三个开源项目名列前三,共同分享了15000元奖金和价值12000元的专属表情包。
其余入围的十余个优秀开源项目同样引起了到场开发者的热烈追捧,环信将分期将入围的优秀项目代码免费开源给小伙伴们。今天我们带来的是一款基于环信sdk进行个性化改造的文字直播平台App——“文播”。典型的使用场景包括经典的文字直播项目——直播球赛,以及现在流行的直播游戏,再加上直播生活技能、直播课程等,都能在“文播”里找到对应的频道。
功能:
技术:
心得
介绍
特别感谢以下企业的大力支持:
项目托管地址:https://sourceforge.net/p/wenbo-im/git/ci/master/tree/
“文播”源码下载及演讲PPT下载↓↓↓
5月14日,由环信联合猿圈共同推出的“首届环信编程大赛”颁奖典礼在中关村义创空间隆重举行。本次环信编程大赛历时两个月,由线上初赛、决赛和颁奖典礼三个环节组成,总计报名人数2000+,收到决赛项目100+。最终由评委会认定的13个优秀开源项目及开发者集体亮相颁奖典礼。其中“方圆十里”、“高仿微信“和“咚咚”三个开源项目名列前三,共同分享了15000元奖金和价值12000元的专属表情包。
优秀项目开发者合影
这枚可爱的小鲜肉竟然是本次环信编程大赛发起人,目前单身,私信可获得联系方式!
其余入围的十余个优秀开源项目同样引起了到场开发者的热烈追捧,环信将分期将入围的优秀项目代码免费开源给小伙伴们。今天我们带来的是一款基于环信sdk进行个性化改造的文字直播平台App——“文播”。典型的使用场景包括经典的文字直播项目——直播球赛,以及现在流行的直播游戏,再加上直播生活技能、直播课程等,都能在“文播”里找到对应的频道。
“文播”项目负责人董艺菲分享技术开发细节
“文播”APP界面截图
功能:
本项目是一款基于环信sdk进行个性化改造的文字直播平台性的安卓app。
在参赛报名的时候,曾想过这样一个问题:一款完全为IM而生的sdk,到底能有如何的潜力?因此,另辟蹊径将环信提供的IM群聊功能,通过重新设计,改造成了现在的文字直播的平台类型app。
每个直播间,其实就是一个“只有群创建者才能发言”的IM群组或讨论组,再进行一些界面上的改造,就可以实现一款类似于从早期非智能机时代流行至今的纯文字直播的app。
典型的使用场景包括经典的文字直播项目——直播球赛,以及现在流行的直播游戏,再加上直播生活技能、直播课程等,都能在《文播》里找到对应的频道。
提交的该版本目前为纯游客端,主播端另行实现。
技术:
·客户端使用DrCoSu工作室开源的dileber框架,MVP设计模式,整个项目冗余较低。
·融合环信SDK,并进行了个性化的改造。
·采用.9格式存储图片,ttf方式呈现界面与图标,各个机型兼容性较好。
·服务端采用Java(Spring),配合ngix和redis极大提升了访问响应速度。
·采用http通信和json、xml等数据格式,移植性和通用性好。
心得
重复造轮子虽然好,但是在实际开发中,往往可以使用更好的方式来加快你的节奏,从中获得更大的成就感。
环信SDK在即时通讯云领域是一款足够优秀的SDK。配合JPush和好的创意,能实现无限多的可能性。
创意是一款新型软件的核心竞争力。
介绍
文字的直播,一样精彩。
特别感谢以下企业的大力支持:
义创空间提供颁奖场地
萌岛从自有形象库中授权一套价值12000元的表情包
Emokit赞助Apple Watch一台
猿圈全程提供技术评测支持
项目托管地址:https://sourceforge.net/p/wenbo-im/git/ci/master/tree/
“文播”源码下载及演讲PPT下载↓↓↓
9 个评论
app运行会报错,下面是报错信息
08-04 13:47:05.689: E/AndroidRuntime(20820): FATAL EXCEPTION: main
08-04 13:47:05.689: E/AndroidRuntime(20820): Process: com.dyf.wenbo, PID: 20820
08-04 13:47:05.689: E/AndroidRuntime(20820): java.lang.NoClassDefFoundError: Failed resolution of: Lcom/hyphenate/chat/EMOptions;
08-04 13:47:05.689: E/AndroidRuntime(20820): at com.dyf.wenbo.utils.HuanXinUtil.init(HuanXinUtil.java:24)
08-04 13:47:05.689: E/AndroidRuntime(20820): at com.dyf.wenbo.app.MApplication.onCreate(MApplication.java:19)
08-04 13:47:05.689: E/AndroidRuntime(20820): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1021)
08-04 13:47:05.689: E/AndroidRuntime(20820): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5967)
08-04 13:47:05.689: E/AndroidRuntime(20820): at android.app.ActivityThread.access$1700(ActivityThread.java:197)
08-04 13:47:05.689: E/AndroidRuntime(20820): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1742)
08-04 13:47:05.689: E/AndroidRuntime(20820): at android.os.Handler.dispatchMessage(Handler.java:102)
08-04 13:47:05.689: E/AndroidRuntime(20820): at android.os.Looper.loop(Looper.java:145)
08-04 13:47:05.689: E/AndroidRuntime(20820): at android.app.ActivityThread.main(ActivityThread.java:6872)
08-04 13:47:05.689: E/AndroidRuntime(20820): at java.lang.reflect.Method.invoke(Native Method)
08-04 13:47:05.689: E/AndroidRuntime(20820): at java.lang.reflect.Method.invoke(Method.java:372)
08-04 13:47:05.689: E/AndroidRuntime(20820): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
08-04 13:47:05.689: E/AndroidRuntime(20820): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
08-04 13:47:05.689: E/AndroidRuntime(20820): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.hyphenate.chat.EMOptions" on path: DexPathList[[zip file "/data/app/com.dyf.wenbo-1/base.apk"],nativeLibraryDirectories=[/data/app/com.dyf.wenbo-1/lib/arm, /vendor/lib, /system/lib]]
08-04 13:47:05.689: E/AndroidRuntime(20820): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
08-04 13:47:05.689: E/AndroidRuntime(20820): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
08-04 13:47:05.689: E/AndroidRuntime(20820): at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
08-04 13:47:05.689: E/AndroidRuntime(20820): ... 13 more
08-04 13:47:05.689: E/AndroidRuntime(20820): Suppressed: java.lang.ClassNotFoundException: com.hyphenate.chat.EMOptions
08-04 13:47:05.689: E/AndroidRuntime(20820): at java.lang.Class.classForName(Native Method)
08-04 13:47:05.689: E/AndroidRuntime(20820): at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
08-04 13:47:05.689: E/AndroidRuntime(20820): at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
08-04 13:47:05.689: E/AndroidRuntime(20820): at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
08-04 13:47:05.689: E/AndroidRuntime(20820): ... 14 more
08-04 13:47:05.689: E/AndroidRuntime(20820): Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available