iPhone播放音乐

今天我们简要介绍如何在iPhone中播放音乐:

强烈建议你参考官方文档(需要登录):

http://developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html%23//apple_ref/doc/uid/TP40008067

1.

打开XCode,新建一个Window-based Application,项目名称是MusicPlayer:

2.

打开MainWindow.xib,按下图加入控件:

其中,最上面是两个Label,左边的Current(sec)始终不变,右边的0显示当前已播放的时间,下面是一个Slider,类似与一般播放器的进度条,再下面是音量调节的Slider,它们的min都是0.0,max都是1.0。最底下是两个Button。

3.

由于播放声音需要用到AVFoundation.framework,因此我们将它加入到我们的工程中:

右击Frameworks,选择Add/Existing Frameworks,加入AVFoundation:

4.

打开MusicPlayerAppDelegate.h,修改如下:

//
//  MusicPlayerAppDelegate.h
//  MusicPlayer
//
//  Created by HuTao on 8/8/12.
//  Copyright __MyCompanyName__ 2012. All rights reserved.
//#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>@interface MusicPlayerAppDelegate : NSObject <UIApplicationDelegate>
{UIWindow * window;IBOutlet UIButton * btnPlay;IBOutlet UILabel * labelVolume;IBOutlet UILabel * labelCurrentTime;IBOutlet UISlider * sliderCurrentTime;NSTimer * playTimer;AVAudioPlayer * player;
}@property (nonatomic, retain) IBOutlet UIWindow * window;
@property (nonatomic, retain) IBOutlet UIButton * btnPlay;
@property (nonatomic, retain) IBOutlet UILabel * labelVolume;
@property (nonatomic, retain) IBOutlet UILabel * labelCurrentTime;
@property (nonatomic, retain) IBOutlet UISlider * sliderCurrentTime;-(IBAction)soundStartOrPause:(id)sender;
-(IBAction)soundStop:(id)sender;
-(IBAction)volumeChanged:(id)sender;
-(IBAction)currentTimeChanged:(id)sender;-(void)updateSoundAt:(float)percent;
-(void)updateCurrentTime;
-(void)initPlayer;@end

首先,加入:

#import <AVFoundation/AVFoundation.h>

其次:

btnLabel,labelVolume,labelCurrentTime,sliderCurrentTime都是控件对应的Outlet:

btnLabel:在点击了Start按钮后文本需要变成Pause,所以我们给Button也增加了一个Outlet;

labelVolume,labelCurrentTime:在滑动Slider时对应的Label也需要变化以反应当前值;

sliderCurrentTime:歌曲播放时需要通过Slider来反应当前已播放的时间,因此Slider也需要一个Outlet。

之后的playerTimer会每一定时间运行一次,根据当前已播放的时间更新进度条;AVAudioPlayer是AVFoundation提供的播放音乐的一个类。


之后的四个IBAction分别是:按下Start按钮;按下Stop按钮;滑动音量的Slider;滑动已播放时间的Slider对应的Action。

5.

打开MusicPlayerAppDelegate.m,修改如下:

//
//  MusicPlayerAppDelegate.m
//  MusicPlayer
//
//  Created by HuTao on 8/8/12.
//  Copyright __MyCompanyName__ 2012. All rights reserved.
//#import "MusicPlayerAppDelegate.h"@implementation MusicPlayerAppDelegate@synthesize window;
@synthesize btnPlay;
@synthesize labelVolume;
@synthesize labelCurrentTime;
@synthesize sliderCurrentTime;#pragma mark -
#pragma mark Application lifecycle- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{//初始化AVAudioPlayer[self initPlayer];[window makeKeyAndVisible];return YES;
}-(void)initPlayer
{NSString * path = [[NSBundle mainBundle] pathForResource:@"北京欢迎你" ofType:@"mp3"];//判断是否找到该音乐文件  if (path){NSLog(@"Init sound");//用path路径初始化AVAudioPlayerplayer = [[AVAudioPlayer alloc]initWithContentsOfURL:[[NSURL alloc]initFileURLWithPath:path]error:nil];//初始化播放器  [player prepareToPlay];  //设置播放循环次数:如果numberOfLoops为负数 音频文件就会一直循环播放下去  player.numberOfLoops = -1;  //设置音频音量:volume的取值范围在[0.0f, 0.1f]之间  player.volume = 0.5f;//将当前播放进度调为0[self updateSoundAt:0.0f];}
}-(void)updateSoundAt:(float)percent
{float atTime = (player ? player.duration * percent : 0.0f);NSString * time = [NSString stringWithFormat:@"%d", (int)atTime];labelCurrentTime.text = time;sliderCurrentTime.value = percent;
}-(IBAction)soundStartOrPause:(id)sender
{//点击Start按钮后开始播放音乐  if(player)   {UIButton * btn = (UIButton *)sender;if(![player isPlaying])   {NSLog(@"Start sound");[player play];[btn setTitle:@"Pause" forState:UIControlStateNormal];if(!playTimer){playTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(updateCurrentTime) userInfo:nil repeats:YES];}}else{NSLog(@"Pause sound");[player pause];[btn setTitle:@"Start" forState:UIControlStateNormal];}}
}-(void)updateCurrentTime
{[self updateSoundAt:1.0 * player.currentTime / player.duration];
}-(IBAction)soundStop:(id)sender
{//停止播放声音  if(player){NSLog(@"Stop sound");player.currentTime = 0;[player stop];[btnPlay setTitle:@"Start" forState:UIControlStateNormal];[self updateSoundAt:0.0f];}
}  -(IBAction)volumeChanged:(id)sender
{UISlider * slider = (UISlider *)sender;NSString * value = [[NSString alloc]initWithFormat:@"%d%%", (int)(slider.value * 100)];labelVolume.text = value;player.volume = slider.value;[value release];
}-(IBAction)currentTimeChanged:(id)sender
{UISlider * slider = (UISlider *)sender;int time = (player ? slider.value * player.duration : 0);player.currentTime = time;[self updateSoundAt:slider.value];
}- (void)dealloc
{[window release];[btnPlay release];[labelVolume release];[labelCurrentTime release];[sliderCurrentTime release];[super dealloc];
}@end

有几点说明:

1.先将要播放的音乐加入到Resouces中;

2. playTimer定时器每0.5秒运行一次,更新当前的进度条;

6.

下面要开始将控件和IBOutlet以及IBAction相连接了:

(a)

打开MainWindow.xib,按住Ctrl键,鼠标从Music Player Delegate上拖动到相应的Label上,将它和IBOutlet相连接:

要注意的是不要忘了连接btnStart!一共要连两个Slider,两个Label和一个Button。

(b)

右键Button,选择Touch Up Inside,将后面的小圆圈拖动到Music Player Delegate上,连接相应的IBAction:

要注意的是Slider需要连接ValueChanged事件:

7.

运行结果如下:

最后我把代码也上传上来了:

http://download.csdn.net/detail/htttw/4484442

完成!

iPhone播放音乐相关推荐

  1. matlab 播放声音,matlab播放音乐

    最近在做计算,写了一些matlab代码,脑壳还疼,所以决定发挥一下逗B精神,写一个程序玩一下. 想了想,既然写代码的时候喜欢听歌,而且我的电脑打开网易音乐的速度巨慢(不知道为什么..),那些一个程序直 ...

  2. 如何在远程计算机上播放音乐,如何用iPhone远程遥控电脑播放音乐教程

    您可能感兴趣的话题: iPhone 核心提示:Remote是苹果自家的遥控应用.一秒钟就可以让手机变成遥控器,控制家里电脑上的iTunes资料库播放音乐.而且完美兼容iPhone.iPad.iPod ...

  3. 如何用计算机放音乐,教你如何用iPhone远程遥控电脑播放音乐教程

    Remote是苹果自家的遥控应用.一秒钟就可以让手机变成遥控器,控制家里电脑上的iTunes资料库播放音乐.而且完美兼容iPhone.iPad.iPod touch等等设备. 今天就给您说说它的详细使 ...

  4. iPhone开发播放音乐与按钮声音

    1.背景音乐播放,支持mp3格式 循环播放长音乐. 这种播放音乐的方式导入框架#import <AVFoundation/AVFoundation.h>: NSString *musicF ...

  5. iphone 微信打开H5自动播放音乐问题

    解决iphone 微信H5自动播放音乐问题 --由于苹果的ios系统的安全保护较严格,iphone手机打开微信H5的时候(针对于已对audio标签设置 autoplay为true的H5),通常要先点击 ...

  6. 解决iphone 微信H5自动播放音乐问题

    解决iphone 微信H5自动播放音乐问题 参考文章: (1)解决iphone 微信H5自动播放音乐问题 (2)https://www.cnblogs.com/hlhs/p/11157401.html ...

  7. iOS8 用AVAudioPlayer播放音乐(Swift)

    AVAudioPlayer 类提供了播放音频文件的功能,在本次教程中,我们将对一个音乐文件进行播放暂停和停止操作,此外还会显示标题和播放时间.本次教程使用iOS8和Xcod6.3.1 打开Xcode创 ...

  8. iPhone 播放音频声音文件

    播放音频声音文件 iphone开发中播放声音文件主要使用AVAudioPlayer 类,它的功能非常强大支持播放音频的格式也非常的多,我们可以把它看成一个高级的音乐播放器,它支持的播放格式有 ■ AA ...

  9. 计算机锁屏之后QQ音乐停止播放了,MAC电脑如何在息屏状态下让QQ音乐能继续播放音乐...

    MAC电脑如何在息屏状态下让QQ音乐能继续播放音乐 一般MAC电脑息屏之后,大部分的应用都是会停止运行的,比如QQ音乐,就不会再播放音乐.今天小编就跟大家分享下MAC电脑如何在息屏状态下让QQ音乐能继 ...

最新文章

  1. php excel类 ,phpExcel使用方法介绍
  2. Entity Framework技术系列之1:数据访问技术概述
  3. Asp.Net Identity 深度解析 之 注册登录的扩展
  4. php 批量压缩png,利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)...
  5. 【Android游戏开发之八】游戏中添加音频-详解MediaPlayer与SoundPool的利弊以及各个在游戏中的用途!...
  6. Android之SparseArray<E>详解
  7. JS之颠倒数组元素的reverse方法
  8. 《一线架构师实践指南》—— 读后总结
  9. Mac 10.12安装数据库管理工具MySQL Workbench
  10. DEX VMP与ARM VMP
  11. idea报错Cannot resolve jdk.tools:jdk.tools:1.7
  12. 修复华为移动服务器,移动app云服务器异常
  13. Javascript面试题 把AaaBbbcccc 变成AaaBbbCcc
  14. nginx反向代理实践:将某个指定的域名代理到指定的服务
  15. 计算机模拟器demo,房东模拟器(The Tenants)demo试玩版
  16. 神之bug 嵌套RecyclerView谜之滚动
  17. survival | 生存分析(1):生存曲线(上)
  18. 三星android se干啥得,结果竟然这样!看iPhone SE与最强Android旗舰三星S7对比!
  19. unity虚拟仿真PC端需要掌握的技术
  20. 计算机在职博士好毕业么,北京大学计算机在职博士生毕业以后学历会提升么

热门文章

  1. PuTTY的简介及使用
  2. ueditor 工具栏配置_Ueditor文本编辑工具栏自定义
  3. 了解前端工程化之组件化——Vue组件
  4. 简易实用的Web Notification桌面通知
  5. 基于Wallpaper Engine的html插件罗盘时钟实现及简易桌面替换
  6. 【无标题】第一章:进入丰富多彩的计算机世界(一部分)
  7. Excel粘贴长文本数字 精度丢失
  8. 做网站如何选择利于优化的服务器
  9. 全球与中国货船维修保养市场深度研究分析报告
  10. 安卓平台 使用Jword生成word文档到本地【亲测成功】