iOS音乐播放器开发(一)-思路与设计

我是配图

大家好 , 我是LEE. 一名有信仰的果粉Coder. 

非常感谢大家利用自己宝贵的时间来阅读我的文章 , 我并非大神 , 只是一枚努力成为大神的猿. 这篇文章主要写一个iOS系统下的音乐播放器 , 我会一步一步的去完成这个播放器的开发 , 并且会分析一些主要的技术点以及注意事项等 . 如果你是一个小白初学者 , 希望你看完后能够对你的提升有所帮助 , 如果你是一个老司机 , 希望可以得到你的指点 , 有任何不妥的地方 欢迎指正 , 我会认真改正 . 那么.. 开车了~

概述

明确一下我们都要做些什么:

我们主要以开发核心功能为主 , 附带几个额外的功能开发辅助演示 , 这里我选择5个扩展功能帮助演示这个Demo

    1. 我的歌曲功能 包括收藏歌曲 全部歌曲 最近播放等

    2. 设置功能 (在QQ音乐app中挑选一些有代表性的设置功能 比如主题颜色设置 , 流畅度设置 , 边听边存 , 音乐品质设置等)

    3. 下载缓存功能

    4. 收藏 , 喜欢 功能

    5. 分享功能

文章'主线'自然是一步一步的去按照功能开发 , 其中涉及到一些控件或者工具类和独立模块的封装 我会单独开一个'分支'文章去讲解 , 这样不仅可以避免打乱'主线'流程 , 也可以让大家在阅读的时候有选择性的去看.

思路

首先,我们要明确一点,思路的重要性. 我们在做一个功能的开发或一个项目的开发时 , 首先要做的并不是提笔就写 抬手就敲, 而是分析我们要做的是什么事,怎么样才能做到. 在做之前进行一系列的分析与思考, 从而构建出一个可行的思路,最后才是去做. 也就是说只有先知道了怎么做! 然后是才能去做!

设计

接下来我们谈一谈设计, 思路有了以后 还需要我们去认真的设计、完善我们的思路 , 最终形成一个完美的可靠的方案 , 我们之后只要围绕着这个方案一步一步去做 , 就一定会得到我们想要的结果 .

设计这个东西不光是和经验有关 , 当然经验多的人可能会少走些弯路 , 但绝对和态度分不开 , 设计的好坏直接决定你的代码质量以及可扩展性、易维护性等方方面面的东西 , 好的设计并不是说人家技术多牛* 人家脑袋多聪明 , 而是人家真的用心在思考 . 没错 良好的设计需要我们用心的思考 认真的态度决定着你的代码是否设计的足够合理 , 质量是否可靠 .

好了 , 说了这么多 其实我想表达的就是 动手前 一定要去想好怎么去做 多列出几种方案 , 分析对比优势劣势 , 最后综合比对 选出一个最适合当前情况使用的方案去做 , 正所谓三思而后行.


不扯大道理了 , 我们回到开发中 .

首先 , 我们在开发前要思考一下 , 我们要做的是音乐播放器 , 那么音乐播放器APP的主要功能是什么? 没错 , 播放音乐 , 那么如何在iOS设备上播放我们的音乐呢?

在iOS中音频播放从形式上可以分为音效播放和音乐播放。前者主要指的是一些短音频播放,通常作为点缀音频,对于这类音频不需要进行进度、循环等控制。后者指的是一些较长的音频,通常是主音频,对于这些音频的播放通常需要进行精确的控制。在iOS中播放两类音频分别使用AudioToolbox.frameworkAVFoundation.framework来完成音效和音乐播放。

看到这里 你应该知道了我们要用什么去实现我们的音乐播放了 , 那么我们具体怎样使用这个AVFoundation.framework呢? 后面开发的时候我会详细讲解 . 这里我们只要清楚我们要用到的东西就可以了.

继续我们的思考 , 既然已经知道用什么框架去播放音乐了 , 那么我们是不是要管理这个播放的音乐呢 , 控制他的开始、停止、进度等等 . 这就说明我们还需要一个管理的类 , 来控制播放的音乐 , 大家想一想 这个负责管理音乐播放的类怎样才能符合我们的需求 , 我们平时用到的音乐APP听歌时 , 不管我们跳转到哪个视图控制器 是不是音乐都依旧正常播放? 这说明什么? 说明播放音乐的类不属于任何视图控制器 他是独立的 , 那么我们有没有发现 一个音乐APP 可能有多个界面都可以控制音乐的播放 暂停等 , 这也就说明 多个界面调用的是同一个控制音乐播放的类 . 综合以上几点的分析 , 我们可以确定 我们要用到的是一个单例管理类 , 这样全局只存在一个这样的类 , 所有界面都调用这一个类去控制音乐播放 .

现在我们知道怎么做到控制一首歌曲的播放了 , 但 如果要实现多首歌曲的切换呢? 这样我们还需要一个管理类 去管理该播放哪一首歌曲 , 上一首是什么歌曲 下一首是什么歌曲 . 我们给这样的类起个名字 , 叫做播放队列管理类 , 总结一下 , 我们现在所分析出来的结果 : 要在iOS中实现播放音乐的功能 我们需要用到AVFoundation.framework框架 , 想要控制播放的歌曲 我们需要一个播放管理类 , 想要控制播放哪些歌曲 实现上一首 下一首的功能 , 我们还需要一个播放队列管理类 去管理多个歌曲 . 到这里 我们已经分析完了一个音乐播放器APP的核心功能都需要什么来实现了.

其实可想而知 , 无论你怎么做这个音乐播放器 , 都离不开这2个核心类 . 看到这里如果你有什么不明白的 可以在下面留言 , 这里强调一点 , 不要把控制播放的这些代码写在播放页面里 或者 写在什么视图控制器里 , 能独立出来的一定要独立出来 , 能封装出来的 绝对不和其他代码放在一起 . 这是我的编码原则 , 我个人认为分成一份份的代码永远比一大坨强 , 无论是复用性 还是 可读性.

下面我画了一个示意图来表示 这2个核心管理类与其他界面的关系 (用我初学iOS时写的一个QQ音乐播放器界面当素材)

核心类示意图

通过示意图 我们可以看出 , 各个界面都围绕这两个核心类展开各种功能的执行 , 结构非常清晰 , 每个模块间的执行流程一目了然 , 看到这里是不是刚开始的一头雾水全部都不见了?

好了 今天先说到这里 下一篇我们开始着手项目工程以及框架的搭建 See you later!

__总结 : 当我们准备要开发一个项目或者一个功能时 一定不要盲目的去写 , 先思考 先分析 , 找出其中不容易被发现细节 从各个方面去考虑 可能出现的不同情况 针对这些情况去设计一个有效可靠的方案 , 这样你就会朝着一个无比正确的方向前进. __

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容