IOS開發中AVFoundation中AVAudioPlayer的使用


IOS開發中如何調用音頻播放組件

 

1、與音頻相關的頭文件等都在AVFoundation.h中,所以第一步是添加音頻庫文件:

#import <AVFoundation/AVFoundation.h>

 

2、先找一段要播放的音頻文件,我這里找到是一個mp3文件,然后添加到項目中:

 

3、使用NSBundle獲取這個文件並轉化成NSData類型:

 NSString *filepath = [[NSBundle mainBundle]pathForResource:@"bbb" ofType:@"mp3"];
 NSData *data = [[NSData data]initWithContentsOfFile:filepath];

 

4、聲明一個全局變量的AVAudioPlayer對象player:

@interface ViewController (){
    AVAudioPlayer *player;
}

@end

 

5、初始化全局變量player:

 player = [[AVAudioPlayer alloc]initWithData:data error:nil];

 

6、添加一個開始、暫停播放的按鈕:

   UIButton *myBtn = [[UIButton alloc]initWithFrame:CGRectMake(100, 200, 214, 80)];
    myBtn.backgroundColor = [UIColor orangeColor];
    myBtn.layer.cornerRadius = 20;
    myBtn.layer.masksToBounds = YES;
    myBtn.enabled = YES;
    [myBtn setTitle:@"開始播放" forState:UIControlStateNormal];
    [myBtn addTarget:self action:@selector(myBtnAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:myBtn];

 

7、編寫按鈕的方法,點擊按鈕之后檢測player是否在播放,如果在播放,就停止播放,如果未播放,就開始播放,其中停止播放和開始播放調用的是player對象的play方法和pause方法:

-(void)myBtnAction :(UIButton*)sender{
    
    if (player.playing) {
        [player pause];
        [sender setTitle:@"開始按鈕" forState:UIControlStateNormal];
    }else{
       [player play];
        [sender setTitle:@"暫停按鈕" forState:UIControlStateNormal];
    }
}

 

8、添加一個音量滑塊,音量滑塊添加一個方法volumeslidervaluechange:,當值改變時觸發這個方法:

//    音量滑塊
    UISlider *volumeslider = [[UISlider alloc]initWithFrame:CGRectMake(20, 330, 374, 20)];
    volumeslider.value = 0.9;
    [volumeslider addTarget:self action:@selector(volumeslidervaluechange:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:volumeslider];

 

9、實現volumeslidervaluechange:方法,當滑塊值改變時,改變音頻播放器的音量大小:

-(void)volumeslidervaluechange:(UISlider*)sender{
    player.volume = sender.value;
}

 

模擬運行並點擊按鈕就可以聽到美妙的音樂了:

 

 以下是完整代碼:

//
//  ViewController.m
//  ceshi
//
//  Created by mac on 16/5/24.
//  Copyright © 2016年 mzw. All rights reserved.
//

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController (){
    AVAudioPlayer *player;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
//    設置當前view背景色
    self.view.backgroundColor = [UIColor lightGrayColor];
    
    
//    獲取項目樹中的音頻文件
    NSString *filepath = [[NSBundle mainBundle]pathForResource:@"bbb" ofType:@"mp3"];
//    把獲取的音頻文件轉化為nsdata類型
    NSData *data = [[NSData data]initWithContentsOfFile:filepath];
    
//    初始化一個音頻播放器
    player = [[AVAudioPlayer alloc]initWithData:data error:nil];

    
//    創建一個button,點擊button開始或暫停音頻播放器的播放
    UIButton *myBtn = [[UIButton alloc]initWithFrame:CGRectMake(100, 200, 214, 80)];
    myBtn.backgroundColor = [UIColor orangeColor];
    myBtn.layer.cornerRadius = 20;
    myBtn.layer.masksToBounds = YES;
    myBtn.enabled = YES;
    [myBtn setTitle:@"開始播放" forState:UIControlStateNormal];
    [myBtn addTarget:self action:@selector(myBtnAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:myBtn];
    
    
    //    音量滑塊
    UISlider *volumeslider = [[UISlider alloc]initWithFrame:CGRectMake(20, 330, 374, 20)];
    volumeslider.value = 0.9;
    [volumeslider addTarget:self action:@selector(volumeslidervaluechange:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:volumeslider];
    


}


-(void)myBtnAction :(UIButton*)sender{
//    如果音頻播放器處於播放狀態,點擊后就暫停播放,如果處於未播放狀態,就開始播放
    if (player.playing) {
        [player pause];
        [sender setTitle:@"開始按鈕" forState:UIControlStateNormal];
    }else{
       [player play];
        [sender setTitle:@"暫停按鈕" forState:UIControlStateNormal];
    }
}

-(void)volumeslidervaluechange:(UISlider*)sender{
    player.volume = sender.value;
}


@end

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM