#import <UIKit/UIKit.h>

#import <AVFoundation/AVFoundation.h>

@interface ViewController : UIViewController

@property (strong, nonatomic) AVAudioPlayer *mediaPlayer;

@property (strong, nonatomic) UIButton *playBtn;

@property (strong, nonatomic) UIButton *stopBtn;

@property (strong, nonatomic) UIButton *pauseBtn;

@property (strong, nonatomic) UILabel *showLabel;

@property (strong, nonatomic) UISlider *processView;

@end

@implementation ViewController

NSTimer *timer;

NSString *totalTimeShowText;

- (void)viewDidLoad {

[super viewDidLoad];

// 播放器初始化 - 文件路径

NSURL *playFileUrl = [[NSBundle mainBundle]URLForResource:@"test" withExtension:@"mp3"];

_mediaPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:playFileUrl error:nil];

// 播放按钮

_playBtn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 50)];

_playBtn.backgroundColor = [UIColor grayColor];

[_playBtn setTitle:@"play" forState:UIControlStateNormal];

[_playBtn addTarget:self action:@selector(play) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:_playBtn];

//暂停按钮

_stopBtn = [[UIButton alloc]initWithFrame:CGRectMake(300, 100, 100, 50)];

_stopBtn.backgroundColor = [UIColor grayColor];

[_stopBtn setTitle:@"stop" forState:UIControlStateNormal];

[_stopBtn addTarget:self action:@selector(stop) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:_stopBtn];

//停止按钮

_pauseBtn = [[UIButton alloc]initWithFrame:CGRectMake(500, 100, 100, 50)];

_pauseBtn.backgroundColor = [UIColor grayColor];

[_pauseBtn setTitle:@"pause" forState:UIControlStateNormal];

[_pauseBtn addTarget:self action:@selector(pause) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:_pauseBtn];

// 显示文字

_showLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 200, 800, 50)];

_showLabel.textColor = [UIColor redColor];

int totalTime = _mediaPlayer.duration;

int minuts = totalTime/60;

int seconds = totalTime%60;

NSString *minusShow = minuts < 10 ? [NSString stringWithFormat:@"0%i", minuts] : [NSString stringWithFormat:@"%i", minuts];

NSString *secondsShow = seconds < 10 ? [NSString stringWithFormat:@"0%i", seconds] : [NSString stringWithFormat:@"%i", seconds];

totalTimeShowText = [NSString stringWithFormat:@"%@:%@", minusShow, secondsShow];

_showLabel.text = [NSString stringWithFormat:@"00:00 %@", totalTimeShowText];

[self.view addSubview:_showLabel];

// 进度

_processView = [[UISlider alloc]initWithFrame:CGRectMake(100, 260, 500, 15)];

[_processView addTarget:self action:@selector(slideProcess) forControlEvents:UIControlEventValueChanged];

[self.view addSubview:_processView];

}

// 播放

-(void)play

{

NSLog(@"play...");

if(!_mediaPlayer.isPlaying)

{

[_mediaPlayer play];

}

if(!timer)

{

timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(upgrocess) userInfo:nil repeats:YES];

}

}

//停止

-(void)stop

{

if(_mediaPlayer.isPlaying)

{

[_mediaPlayer stop];

}

}

//停止

-(void)pause

{

[_mediaPlayer pause];

}

// 更新进度

-(void)upgrocess

{

_processView.value = _mediaPlayer.currentTime/_mediaPlayer.duration;

int minus = _mediaPlayer.currentTime/60;

int seconds = (int)_mediaPlayer.currentTime%60;

NSString *minusShow = minus < 10 ? [NSString stringWithFormat:@"0%i", minus] : [NSString stringWithFormat:@"%i", minus];

NSString *secondsShow = seconds < 10 ? [NSString stringWithFormat:@"0%i", seconds] : [NSString stringWithFormat:@"%i", seconds];

NSString *currentTimeText = [NSString stringWithFormat:@"%@:%@", minusShow, secondsShow];

_showLabel.text = [NSString stringWithFormat:@"%@ / %@", currentTimeText, totalTimeShowText];

}

// 拖动

-(void)slideProcess

{

_mediaPlayer.currentTime = _mediaPlayer.duration * _processView.value;

[self upgrocess];

}

音乐播放器 AVAudioPlayer、定时器、UISlider的更多相关文章

  1. Swift 3 :基于 AVAudioPlayer 的简单音乐播放器

    2017.05.22 17:46* 字数 1585 阅读 5095评论 0喜欢 8赞赏 2 https://www.jianshu.com/p/4d5c257428a1 学习ios以来差不多接近两个月 ...

  2. OCiOS开发:音频播放器 AVAudioPlayer

    简单介绍 AVAudioPlayer音频播放器可以提供简单的音频播放功能.其头文件包括在AVFoudation.framework中. AVAudioPlayer未提供可视化界面,须要通过其提供的播放 ...

  3. iOS 简单音乐播放器 界面搭建

    如图搭建一个音乐播放器界面,具备以下几个简单功能: 1,界面协调,整洁. 2,点击播放,控制进度条. 3.三收藏歌曲,点击收藏,心形收藏标志颜色加深. 4,左右按钮,切换歌曲图片和标题. 5,点击中间 ...

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

    iOS开发拓展篇—音频处理(音乐播放器4) 说明:该文主要介绍音乐播放器实现过程中的一些细节控制. 实现的效果: 一.完整的代码 YYPlayingViewController.m文件 // // Y ...

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

    iOS开发拓展篇—音频处理(音乐播放器5) 实现效果: 一.半透明滑块的设置 /** *拖动滑块 */ - (IBAction)panSlider:(UIPanGestureRecognizer *) ...

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

    iOS开发拓展篇—音频处理(音乐播放器6) 一.图片处理 说明: Aspect表示按照原来的宽高比进行缩放. Aspectfit表示按照原来的宽高比缩放,要求看到全部图片,后果是不能完全覆盖窗口,会留 ...

  7. ios开发学习- 简易音乐播放器2 (基于iPhone4s屏幕尺寸)-- 歌词解析--plist文件应用--imageNamed图片加载耗内存

    声明:(部分图片来自网络,如果侵犯了您的权益请联系我,会尽快删除!) 又是音乐播放器,不过这次和上次不一样了,准确说这次更像播放器了,初学者不建议看这个,可以先看前面一个音乐播放器(1),当然 我没加 ...

  8. iso 开发学习--简易音乐播放器(基于iPhone4s屏幕尺寸)

    三个按钮  一个进度条 贴图(软件中部分图片,来自网络,如果侵犯了您的权益,请联系我,会立刻撤下) 核心代码 // // ViewController.m // 08-10-MusicPlayer / ...

  9. ios开发:一个音乐播放器的设计与实现

    github地址:https://github.com/wzpziyi1/MusicPlauer 这个Demo,关于歌曲播放的主要功能都实现了的.下一曲.上一曲,暂停,根据歌曲的播放进度动态滚动歌词, ...

随机推荐

  1. phpstorm8注册码

    phpstorm8注册码 phpstorm 8 注册码   用户名:Learn Programming License key:(包括LICENSE BEGIN和LICENSE END部分) ==== ...

  2. Yii源码阅读笔记(二十)

    View中应用布局和缓存内容部分: /** * Begins recording a block. * This method is a shortcut to beginning [[Block]] ...

  3. Yii源码阅读笔记(三)

    接着上次的继续阅读BaseYii.php vendor/yiisoft/yii2/BaseYii.php—— public static function getRootAlias($alias)// ...

  4. PowerDesigner连接MySQL,建立逆向工程图解

    传说中,程序员们喜欢用powerDesign进行数据库建模.通常都是先设计出物理模型图,在转换出数据库需要的SQL语句,从而生成数据库.但,江湖中流传着"powerDesign逆向工程&qu ...

  5. The Producer-Consumer Relationship

    //Listing 3-1. The Producer-Consumer Relationship Version 1 public class PC { public static void mai ...

  6. Jquery小例子:全选按钮、加事件、挂事件;parent()语法;slideToggle()语法;animate()语法;元素的淡入淡出效果:fadeIn() 、fadeOut()、fadeToggle() 、fadeTo();function(e):e包括事件源和时间数据;append() 方法

    function(e): 事件包括事件源和事件数据,事件源是指是谁触发的这个事件,谁就是事件源(div,按钮,span都可以是事件源),时间数据是指比如点击鼠标的事件中,事件数据就是指点击鼠标的左建或 ...

  7. nRF51822之app_button控制uart的开启和关闭

    为什么要使用app_button来控制uart的开启和关闭 还是先上datesheet中uart开启的时候需要HFCLK,需要消耗大量大电流.所以在我们需要的时候需要通过io来通知nrf51822开启 ...

  8. BLE-NRF51822教程19-Battery Service

    Battery Service是有关电池特性方面的服务,如果需要它,在初始化时将它加入到蓝牙协议栈. 如果通过ble_bas_battery_level_update(),电池电量将会通知,Batte ...

  9. 【Android测试】【随笔】Bugtags初体验

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5410003.html 前言 早晨接到一个临时任务,就是尝试 ...

  10. 【Java 基础篇】【第十课】多态

    Java的多态使用方法和C++基本是一样的. 看代码吧. public class ten { public static void main(String[] args) { Human guest ...