【音乐播放器】控制台、SDL、搜索、无损音乐支持、顺滑体验
c4droid吧
全部回复
仅看楼主
level 12
Naurex👀 楼主
一楼上图
2014年03月31日 17点03分 1
level 12
Naurex👀 楼主
前段时间一直在使用JAVA和C++做开发,想回归一下C语言。二模也刚刚过,放松了一下,就写了个简单的音乐播放器,有终端模拟器、SDL1.2、SDL2,3个版本。
SDL自身的音频只能播放wav,需要借助SDL_mixer这个库,但是我没有采用SDL_Mixer库。第一个原因是SDL_Mixer在SDL2中mp3文件链接不上,是个BUG,也就是说SDL2的mixer库无法播放mp3文件,第二个原因是SDL_Mixer无法在终端模拟器下播放,所以,我使用了SLES。
搜索功能我只做了终端模拟器的,SDL没有时间做了(方法也很简单,加个TextInput和一个列表上去)。
2014年03月31日 17点03分 2
level 12
Naurex👀 楼主
支持音频有mp3、ape(无损音乐)、ogg、m4a、wav(其他不常见我就没加入了),要是想过滤ogg、wav文件,可以去finddir.c中找到对应函数修改。
SDL2是一个很好的图形库,反正我用了觉得很好,不比安卓的SurfaceView差,精简而强悍,它是适合做游戏的,不适合做界面,虽然有个教程,但是我觉得那个教程讲的还是很浅,只能说入门,很多东西都没有提到,建议结合API来看。
那些说SDL效率低的,其实都是自己的原因。运用得巧妙的话,效率还是很高的!不过得吐槽一下SDL的字体渲染,创建Surface速度很慢,我创建了10个Surface,帧数直接降低了100!而且显示效果很差,虽说使用Blended显示效果会比Solid好很多,但是你的帧数又要低个20!如果你做的游戏有很多文字的话,那么选择其他的字体库吧。
2014年03月31日 17点03分 3
level 12
Naurex👀 楼主
音乐播放我没有采用本地储存扫描结果的方式,而是每次启动都需要进行扫描。但是会很快!说实在不得不佩服C语言的文件扫描,速度是一流的,第一次启动,或者第一次开机扫描会比较慢(也就几秒钟),第二次扫描是基本是秒扫完。SDL1.2支持上下滑动列表,但是选歌还是得按确定键。SDL1.2我没有加入暂停功能,默认按键被占满了,不想调用其他按键了。
2014年03月31日 17点03分 4
level 12
Naurex👀 楼主
这个源码纯C语言编写,GCC编译器也可以运行,运用大量指针和链表操作,还有一些线程操作,不熟悉的指针跟链表的人看了可能会很困难。还有扫描文件采用了Dir指针+跌送法。其实这些都没什么难。
个人觉得难在用SDL模仿安卓的ListView列表,虽然说SDL2支持触屏,但是只是最原始的触摸,很多功能都是需要自己写
,我采用了链表,还有尽量优化算法来写歌曲的滚动列表,效果还不错,没有丝毫卡顿(比天天动听等播放器的列表滚动还流畅,大家可以对比一下)
2014年03月31日 17点03分 5
level 12
Naurex👀 楼主
说了好多废话,下面进入正题。首先进行下载(地址楼下),下载完先别急打开,先听我的指示进行设置,不然你会运行不了。(或者你可以看里面的README.txt说明)
不需要手动移动文件夹,不要随意删除文件,需要进行参数设置。
若要自己导出apk,请把image.dat放到sdcard根目录。
首先进入设置,假如你使用G++编译器,找到G++参数设置(英文版G++ arguments),在(c4droid:SRC)后面加个空格,再加上-lOpenSLES,同时要与后面的参数留个空格,l是小写字母L,不是符号,也不是大写 i 。
修改后的参考:
cd (c4droid:GCCROOT)tmpdir
export TEMP=(c4droid:GCCROOT)tmpdir
(c4droid:GCCROOT)bin/(c4droid:PREFIX)-g++ (c4droid:SRC) -lOpenSLES -lm -ldl -llog -
lz
-I(c4droid:CURSRCDIR) -Wfatal-errors (c4droid:MODEARGS) -o (c4droid:BIN)
(c4droid:ERROUT)
假如你使用GCC编译器,找到GCC参数设置(英文版GCC arguments),在(c4droid:SRC)后面加个空格,再加上-lOpenSLES,同时要与后面的参数留个空格,l是小写字母L,不是符号,也不是大写 i 。
修改后的参考:
cd (c4droid:GCCROOT)tmpdir
export TEMP=(c4droid:GCCROOT)tmpdir
(c4droid:GCCROOT)bin/(c4droid:PREFIX)-gcc (c4droid:SRC) -lOpenSLES -lm -ldl -llog -lz -I(c4droid:CURSRCDIR) -Wfatal-errors (c4droid:MODEARGS) -o (c4droid:BIN)
(c4droid:ERROUT)
2014年03月31日 17点03分 6
楼主课余时间这么多?
2014年04月03日 02点04分
回复 周木青华 :码代码速度比较快,睡前码一个半小时
2014年04月03日 07点04分
楼主什么年级?
2014年04月07日 14点04分
回复 w1260944046 :高三
2014年04月07日 14点04分
level 12
Naurex👀 楼主
2014年03月31日 17点03分 7
2014年04月21日 02点04分
level 12
Naurex👀 楼主
永久防吞地址
ht哈tp://pa哈n.baidu.c哈om/sha哈re/link?shareid=349298哈4580&uk=2905224086哈
2014年03月31日 17点03分 8
更新v1.1版,修复部分bug ht别tp:/吞/pa我n.bai吧du.co吧m/sh吧are/link?shar吧eid=3457172532&uk=2905吧224086吧
2014年04月21日 02点04分
level 12
Naurex👀 楼主
这个时候没有睡觉的留个爪
2014年03月31日 17点03分 9
[阴险]
2014年04月03日 05点04分
level 13
吾莫名的看到此帖,顶了上去[啊!]
你才打小广告了,你全家都打小广告了(≥▽≤)
   --来自广告客户端
2014年03月31日 17点03分 10
level 7
留爪。。顺带膜拜下大神
2014年03月31日 17点03分 11
[太开心]
2014年03月31日 23点03分
回复 傻傻_痴痴 :大神为什么我手机导出的apk不能用啊?
2014年04月01日 04点04分
level 11
[真棒]给赞!
2014年03月31日 18点03分 12
[太开心]
2014年03月31日 23点03分
level 11
顶帖膜拜
2014年03月31日 22点03分 13
sles跨平台吗
2014年03月31日 22点03分
回复 twtfcu3 :跨平台,不过主要是针对嵌入式移动设备
2014年03月31日 23点03分
level 11
顶一个
2014年03月31日 22点03分 14
[太开心]
2014年03月31日 23点03分
level 11
c语言居然也能做到这么强大
   --来自助手版贴吧客户端
2014年03月31日 23点03分 15
这个还不足以说明C语言的强大!真正C语言的强大在于底层的开发,速度也是比c++快,千万不要把C语言当成是入门语言才去学,也不要为了学c++而学c
2014年03月31日 23点03分
回复 @ :[真棒]
2014年04月01日 04点04分
回复 傻傻_痴痴 :[勉强]
2014年04月08日 16点04分
level 15
为啥没精?
2014年03月31日 23点03分 16
忘了 @qw3752258
2014年03月31日 23点03分
level 13
楼主都是用手机编写C语言,C++和Java的嘛?[疑问]
2014年04月01日 00点04分 17
在家自然用电脑,不过学校时间居多,就用手机
2014年04月01日 05点04分
回复 傻傻_痴痴 :你觉得作为一个高一学生的话有必要为了学c,c++,java而去去买台笔记本吗?虽然c4droid和AIDE已经比较完善了
2014年04月10日 11点04分
回复 music_fans_i :高中生?首先携带是个问题,而且学校肯定不给,很不方便,其实c4droid跟AIDE也足够了
2014年04月10日 11点04分
level 12
居然比surface view还快?一定要去试试
2014年04月01日 00点04分 18
不过两者各有优点
2014年04月01日 00点04分
level 11
发现大神
2014年04月01日 00点04分 19
level 11
感到森森的压力……
顶一个!
2014年04月01日 01点04分 20
1 2 3 4 尾页