你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> iOS開發拓展篇―音樂的播放

iOS開發拓展篇―音樂的播放

編輯:關於IOS

一、簡單說明

    音樂播放用到一個叫做AVAudioPlayer的類,這個類可以用於播放手機本地的音樂文件。   注意:     (1)該類(AVAudioPlayer)只能用於播放本地音頻。     (2)時間比較短的(稱之為音效)使用AudioServicesCreateSystemSoundID來創建,而本地時間較長(稱之為音樂)使用AVAudioPlayer類。       二、代碼示例     AVAudioPlayer類依賴於AVFoundation框架,因此使用該類必須先導入AVFoundation框架,並包含其頭文件(包含主頭文件即可)。             導入必要的,需要播放的音頻文件到項目中。   代碼示例:   復制代碼  1 //  2 //  YYViewController.m  3 //  15-播放音樂  4 //  5   6 #import "YYViewController.h"  7 #import <AVFoundation/AVFoundation.h>  8   9 @interface YYViewController () 10  11 @end 12  13 @implementation YYViewController 14  15 - (void)viewDidLoad 16 { 17     [super viewDidLoad]; 18      19 } 20  21 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 22 { 23      24     //1.音頻文件的url路徑 25     NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil]; 26      27     //2.創建播放器(注意:一個AVAudioPlayer只能播放一個url) 28     AVAudioPlayer *audioPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil]; 29      30     //3.緩沖 31     [audioPlayer prepareToPlay]; 32      33     //4.播放 34     [audioPlayer play]; 35 } 36  37 @end 復制代碼 代碼說明:運行程序,點擊模擬器界面,卻並沒有能夠播放音頻文件,原因是代碼中創建的AVAudioPlayer播放器是一個局部變量,應該調整為全局屬性。   可將代碼調整如下,即可播放音頻:   復制代碼  1 #import "YYViewController.h"  2 #import <AVFoundation/AVFoundation.h>  3   4 @interface YYViewController ()  5 @property(nonatomic,strong)AVAudioPlayer *audioplayer;  6 @end  7   8 @implementation YYViewController  9  10 - (void)viewDidLoad 11 { 12     [super viewDidLoad]; 13      14 } 15  16 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 17 { 18      19     //1.音頻文件的url路徑 20     NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil]; 21      22     //2.創建播放器(注意:一個AVAudioPlayer只能播放一個url) 23     self.audioplayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil]; 24      25     //3.緩沖 26     [self.audioplayer prepareToPlay]; 27      28     //4.播放 29     [self.audioplayer play]; 30 } 31  32 @end 復制代碼 注意:一個AVAudioPlayer只能播放一個url,如果想要播放多個文件,那麼就得創建多個播放器。       三、相關說明   新建一個項目,在storyboard中放三個按鈕,分別用來控制音樂的播放、暫停和停止。        程序代碼如下:   復制代碼  1 #import "YYViewController.h"  2 #import <AVFoundation/AVFoundation.h>  3   4 @interface YYViewController ()  5 @property(nonatomic,strong)AVAudioPlayer *player;  6 - (IBAction)play;  7 - (IBAction)pause;  8 - (IBAction)stop;  9 @end 10  11 @implementation YYViewController 12  13 - (void)viewDidLoad 14 { 15     [super viewDidLoad]; 16      17     //1.音頻文件的url路徑 18     NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil]; 19      20     //2.創建播放器(注意:一個AVAudioPlayer只能播放一個url) 21     self.player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil]; 22      23     //3.緩沖 24     [self.player prepareToPlay]; 25  26 } 27  28 - (IBAction)play { 29     //開始播放/繼續播放 30     [self.player play]; 31 } 32  33 - (IBAction)pause { 34     //暫停 35     [self.player pause]; 36 } 37  38 - (IBAction)stop { 39     //停止 40     //注意:如果點擊了stop,那麼一定要讓播放器重新創建,否則會出現一些莫名其面的問題 41     [self.player stop]; 42 } 43 @end 復制代碼 注意:如果點了“停止”,那麼一定要播放器重新創建,不然的話會出現莫名其妙的問題。     點擊了stop之後,播放器實際上就不能再繼續使用了,如果還繼續使用,那麼後續的一些東西會無法控制。   推薦代碼:   復制代碼  1 #import "YYViewController.h"  2 #import <AVFoundation/AVFoundation.h>  3   4 @interface YYViewController ()  5 @property(nonatomic,strong)AVAudioPlayer *player;  6 - (IBAction)play;  7 - (IBAction)pause;  8 - (IBAction)stop;  9 @end 10  11 @implementation YYViewController 12  13 #pragma mark-懶加載 14 -(AVAudioPlayer *)player 15 { 16     if (_player==Nil) { 17          18         //1.音頻文件的url路徑 19         NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil]; 20          21         //2.創建播放器(注意:一個AVAudioPlayer只能播放一個url) 22         self.player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil]; 23          24         //3.緩沖 25         [self.player prepareToPlay]; 26     } 27     return _player; 28 } 29  30 - (void)viewDidLoad 31 { 32     [super viewDidLoad]; 33 } 34  35 - (IBAction)play { 36     //開始播放/繼續播放 37     [self.player play]; 38 } 39  40 - (IBAction)pause { 41     //暫停 42     [self.player pause]; 43 } 44  45 - (IBAction)stop { 46     //停止 47     //注意:如果點擊了stop,那麼一定要讓播放器重新創建,否則會出現一些莫名其面的問題 48     [self.player stop]; 49     self.player=Nil; 50 } 51 @end 復制代碼 如果點擊了停止按鈕,那麼音樂會從頭開始播放。
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved