iPhone播放音乐

发布时间:2016-12-11 18:06:32 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"iPhone播放音乐",主要涉及到iPhone播放音乐方面的内容,对于iPhone播放音乐感兴趣的同学可以参考一下。

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,修改如下: [cpp] view plaincopy //   //  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   首先,加入: [cpp] view plaincopy #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,修改如下: [cpp] view plaincopy //   //  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路径初始化AVAudioPlayer           player = [[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 原文链接:http://blog.csdn.net/htttw/article/details/7842295

上一篇:图像连通域的标定(OpenCv版)
下一篇:如何制作pcDuino量产固件

相关文章

关键词: iPhone播放音乐

相关评论