iOS 音乐播放器的实现

一:现在好多公司都要开始植入音频播放,所以我也做研究下;音乐播放其实很简单,ios已经帮我们实现了这样的一个播放器 AVAudioPlayer。请看代码
//
//  WFMusicViewController.m
//  WFUtils
//
//  Created by PC on 4/8/16.
//  Copyright © 2016 ibmlib. All rights reserved.
//
#import "WFMusicViewController.h"
#import @interface WFMusicViewController ()@property (strong, nonatomic) AVAudioPlayer *musicPlayer;
@property (strong, nonatomic) UIButton *btnPlay;
@property (strong, nonatomic) UIProgressView *progressView;
/*** 计时器 ***/
@property (strong, nonatomic) NSTimer *timer;
@end
@implementation WFMusicViewController
- (NSTimer *)timer
{
if(_timer == nil)
{
_timer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(updateProgress) userInfo:nil repeats:YES];
}
return _timer;
}
#pragma mark - 初始化相关
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.title = @"雪千寻-轻音乐";
// *** 1. 初始化播放器
[self initMusicPlayer];
// *** 2. 初始化播放、暂停按钮
[self createPlayButton];
// *** 3. 初始化进度条
[self createProgress];
}
- (void)initMusicPlayer
{
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"轻音乐 - 雪千寻.mp3" ofType:nil];
self.musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:filePath] error:nil];
self.musicPlayer.delegate = self;
}
- (void)createPlayButton
{
self.btnPlay = [UIButton buttonWithType:UIButtonTypeCustom];
self.btnPlay.frame = CGRectMake(50, self.view.frame.size.height - 100, 100, 50);
self.btnPlay.center = CGPointMake(self.view.center.x, self.btnPlay.center.y);
self.btnPlay.backgroundColor = [UIColor greenColor];
[self.btnPlay setTitle:@"播放" forState:UIControlStateNormal];
[self.btnPlay setTitle:@"暂停" forState:UIControlStateSelected];
[self.btnPlay addTarget:self action:@selector(actionToPlay:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.btnPlay];
}
- (void)createProgress
{
self.progressView = [[UIProgressView alloc] initWithFrame:CGRectMake(10, 200, self.view.frame.size.width - 20, 20)];
[self.view addSubview:self.progressView];
}
#pragma mark -
- (void)updateProgress
{
float progress = self.musicPlayer.currentTime / self.musicPlayer.duration;
[self.progressView setProgress:progress animated:YES];
}
- (void)actionToPlay:(UIButton *)sender
{
if(!sender.selected)
{
if(![self.musicPlayer isPlaying])
{
[self.musicPlayer play];
self.timer.fireDate = [NSDate distantPast];
}
}
else
{
[self.musicPlayer pause];
self.timer.fireDate = [NSDate distantFuture];
}
sender.selected = !sender.selected;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - delegate AVAudioPlayer
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"音乐播放结束");
self.btnPlay.selected = NO;
[self.progressView setProgress:0];
[self.timer invalidate];
self.timer = nil;
}
/* if an error occurs while decoding it will be reported to the delegate. */
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError * __nullable)error
{
}
/* AVAudioPlayer INTERRUPTION NOTIFICATIONS ARE DEPRECATED - Use AVAudioSession instead. */
/* audioPlayerBeginInterruption: is called when the audio session has been interrupted while the player was playing. The player will have been paused. */
- (void)audioPlayerBeginInterruption:(AVAudioPlayer *)player NS_DEPRECATED_IOS(2_2, 8_0)
{
}
/* audioPlayerEndInterruption:withOptions: is called when the audio session interruption has ended and this player had been interrupted while playing. */
/* Currently the only flag is AVAudioSessionInterruptionFlags_ShouldResume. */
- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags NS_DEPRECATED_IOS(6_0, 8_0)
{
}
- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withFlags:(NSUInteger)flags NS_DEPRECATED_IOS(4_0, 6_0)
{
}
- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player
{
}
@end

iOS 音乐播放器的实现相关推荐

  1. ios音乐播放器-仿QQ音乐

    这篇文章主要写一个iOS系统下的音乐播放器 , 包括简单的仿QQ音乐播放器界面.音乐播放.歌词解析.后台控制等  ,如果你正好需要 , 希望你看完后能够对你的提升有所帮助 , 当然,阅读中如果发现什么 ...

  2. 卡拉OK效果的实现-iOS音乐播放器

    自己编写的音乐播放器偶然用到这个模块,发现没有思路,而且上网搜了搜,关于这方面的文章不是很多,没找到满意的结果,然后自己也是想了想,最终实现了这种效果,想通了发现其实很简单. 直接上原理: 第一种: ...

  3. 基于IOS音乐播放器在线歌词同步小程序系统(音乐小程序)

    目 录 目 录 1 摘 要 3 Abstract 4 1 导论 6 1.1 背景问题 6 1.2 选题意义 6 1.3 本文内容 7 2 核心功能 9 2.1 功能调研 9 2.2 可行性分析 12 ...

  4. android+仿ios+音乐播放器,iOS简单的音乐播放器(仿QQ音乐)

    AVPlayer实现基本的播放,暂停,上一首,下一首,调节音量,调节进度等,正在学习的新人可以看下,有什么不足可以互相学习,谢谢支持 qq音乐.gif 这个是我写的一个简单的低仿QQ音乐, 如果你也喜 ...

  5. iOS音乐播放器小技巧

    在没有网络的情况下,音频的后台播放比较简单,google一下可以搜到很多资料,但是如果每次歌曲的请求都是通过网络,就不成了,有时可以也扛不了几首,这里总结下实现方法,可以实现像电台一样的功能,后台播放 ...

  6. iOS音乐播放器的后台播放和远程控制

    iOS的后台任务一直有很严格的限制,一般情况下只有几类情况能使用后台任务,下面介绍其中的一种 音乐的后台播放. 1.要支持后台任务,首先你得告诉系统你需要后台任务,所以你首先在Info.plist文件 ...

  7. iOS高仿微信悬浮窗、忍者小猪游戏、音乐播放器、支付宝、今日头条布局滚动效果等源码...

    iOS精选源码 iOS WKWebView的使用源码 模仿apple music 小播放器的交互实现 高仿微信的悬浮小窗口 iOS仿支付宝首页效果 [swift]仿微信悬浮窗 类似于今日头条,网易新闻 ...

  8. iOS之基于FreeStreamer的简单音乐播放器(模仿QQ音乐)

    代码地址如下: http://www.demodashi.com/demo/11944.html 天道酬勤 前言 作为一名iOS开发者,每当使用APP的时候,总难免会情不自禁的去想想,这个怎么做的?该 ...

  9. iOS开发拓展篇—音频处理(音乐播放器3)

    iOS开发拓展篇-音频处理(音乐播放器3) 说明:这篇文章主要介绍音频工具类和播放工具类的封装. 一.控制器间数据传递 1.两个控制器之间数据的传递 第一种方法:self.parentViewCont ...

  10. iOS开发:音乐播放器

    /******************       iOS开发:音乐播放器     *****************/ 要求:给button一个触发事件,点击一下播放歌曲,显示暂停提示: 再点击一下 ...

最新文章

  1. 空调系统故障类型与故障案例集
  2. 0913作业(冒泡排序、二分查找法、模拟摇乐游戏)
  3. wordpress备份方法比较
  4. DEDECMS 关键字不能小于2个字节!
  5. 很多人认为自己赚不到钱是因为没钱,真的是这样吗?
  6. Postresql初始安装后用户的创建
  7. 2021年中国低密度PET泡沫市场趋势报告、技术动态创新及2027年市场预测
  8. SQL SERVER 2014无法启动T-SQL调试的解决方法(亲自实践)
  9. 华为手表表盘的数字什么意思_手表的陀飞轮、月相、逆跳都是什么意思?
  10. 睡前1分钟 坚持瘦下来(信不信由你)
  11. cocos2d0基础篇笔记二
  12. Kafka 分布式消息系统 基础概念剖析
  13. 395.至少有K个重复字符的最长子串
  14. html中怎么写行内样式,css行内样式是什么?
  15. 读书笔记之财报就像一本故事书
  16. 基于Booth算法的64位浮点乘法器的实现
  17. 解决Mac无法睡眠问题
  18. 数字化到底有什么用?
  19. mysql flush pri_mysql命令flush privileges
  20. Scratch3.0——助力新进程序员理解程序(案例一、画画的蝴蝶)

热门文章

  1. 国内外酒店软件公司发展简介(转)
  2. 云服务器怎么连,云主机连接操作步骤是怎样的?
  3. 前端目标——天猫网页
  4. 淘宝API item_history_price - 获取商品历史价格信息
  5. Deep Inductive Logic Reasoning深度感应逻辑推理模型 论文笔记
  6. 美国服务器电影网站版权问题,为什么说选择美国服务器做电影网站比较好
  7. 遇到问题--mongodb--Prematurely reached end of stream
  8. APIO2019 打铁记
  9. 如何将分表汇总到总表_如何快速将几个分表合并到一张表
  10. 【论文笔记】Enhancing Adversarial Example Transferability with an Intermediate Level Attack