在編寫好的程序代碼中加入如下代碼即可實(shí)現(xiàn)背景音樂。

在長(zhǎng)子等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需求定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),網(wǎng)絡(luò)營(yíng)銷推廣,成都外貿(mào)網(wǎng)站制作,長(zhǎng)子網(wǎng)站建設(shè)費(fèi)用合理。
代碼如下:
[self?schedule:?@selector(backgroundMusicManager)?interval:16];
/*設(shè)定背景音樂16秒*/
[[SimpleAudioEngine?sharedEngine]?preloadEffect:@"1.m4a"];?
[[SimpleAudioEngine?sharedEngine]?preloadEffect:@"2.m4a"];?
[[SimpleAudioEngine?sharedEngine]?preloadEffect:@"3.m4a"];?
[[SimpleAudioEngine?sharedEngine]?preloadEffect:@"4.m4a"];?
[[SimpleAudioEngine?sharedEngine]?preloadEffect:@"5.m4a"];?
[[SimpleAudioEngine?sharedEngine]?preloadEffect:@"6.m4a"];
/*添加音樂源文件*/
[self?backgroundMusicManager];
-(void)?backgroundMusicManager?{
float?intensity;
/*用自己的代碼控制你的音樂所處的強(qiáng)度*/
if?(intensity?=?0??intensity??0.1666f)?{
lastBGSoundPlaying?=?[[SimpleAudioEngine?sharedEngine]?playEffect:@"1.m4a"?pitch:1.0f?pan:0.0f?gain:0.35f];
}?else?if?(intensity?=?0.1666f??intensity??0.3333f)?{
lastBGSoundPlaying?=?[[SimpleAudioEngine?sharedEngine]?playEffect:@"2.m4a"?pitch:1.0f?pan:0.0f?gain:0.35f];
}?else?if?(intensity?=?0.3333f??intensity??0.5f)?{
lastBGSoundPlaying?=?[[SimpleAudioEngine?sharedEngine]?playEffect:@"3.m4a"?pitch:1.0f?pan:0.0f?gain:0.35f];
}?else?if?(intensity?=?0.5f??intensity??0.6666f)?{
lastBGSoundPlaying?=?[[SimpleAudioEngine?sharedEngine]?playEffect:@"4.m4a"?pitch:1.0f?pan:0.0f?gain:0.35f];
}?else?if?(intensity?=?0.6666f??intensity??0.8333f)?{
lastBGSoundPlaying?=?[[SimpleAudioEngine?sharedEngine]?playEffect:@"5.m4a"?pitch:1.0f?pan:0.0f?gain:0.35f];
}?else?if?(intensity?=?0.8333f)?{
lastBGSoundPlaying?=?[[SimpleAudioEngine?sharedEngine]?playEffect:@"6.m4a"?pitch:1.0f?pan:0.0f?gain:0.35f];
}?else?{
lastBGSoundPlaying?=?[[SimpleAudioEngine?sharedEngine]?playEffect:@"1.m4a"?pitch:1.0f?pan:0.0f?gain:0.35f];
}
}
/*插入動(dòng)態(tài)音樂*/
1、將手機(jī)與電腦用usb連接,電腦上的itunes自動(dòng)打開 如果你電腦里沒有安裝itunes軟件的話 請(qǐng)點(diǎn)擊“itunes下載”
2、點(diǎn)擊上面工具欄中文件下的“將文件添加到資料庫”,如果你想把文件夾里所有的歌曲都導(dǎo)入,就選擇“將文件夾添加到資料庫”
3、選擇王傳一的練習(xí),點(diǎn)擊打開
4、在資料庫的音樂里,看到這首練習(xí)已經(jīng)導(dǎo)入了
5、點(diǎn)擊設(shè)備
6、勾選音樂選項(xiàng)下的同步音樂,想把整個(gè)音樂庫中的歌曲都導(dǎo)入手機(jī)的話就選擇“整個(gè)音樂資料庫”,點(diǎn)擊下面的應(yīng)用即可
我們常常會(huì)在使用app的時(shí)候,邊聽音樂(網(wǎng)易云音樂,qq音樂等)邊使用軟件,如果我們?cè)赼pp中使用了聲音,例如“叮~”的一聲 提醒,就會(huì)導(dǎo)致音樂的停止播放。而像微信中的語音播放,會(huì)在播放完成后音樂恢復(fù)播放,這樣的體驗(yàn)就很好,那么需要怎么做呢?其實(shí)很簡(jiǎn)單,只需要一句話就可以。
當(dāng)你的app中的聲音播放完畢后,加上這一句話,被打斷的音樂便會(huì)恢復(fù)播放了。
當(dāng)然還可以設(shè)置讓app的聲音和其他音樂兼容(默認(rèn)是不兼容的)
withOptions后面的屬性是一個(gè)枚舉,不同的類型會(huì)有不同的效果,自己試試吧!
1.設(shè)置一個(gè)定時(shí)器
_timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
[_timer setFireDate:[NSDate distantFuture]];
2 timerAction方法實(shí)現(xiàn)
-(void)timerAction
{
//更新電平值
[_player updateMeters];
// NSLog(@"聲道:%d",_player.numberOfChannels);
//
// for (int i = 0; i_player.numberOfChannels; i++) {
// CGFloat power = [_player averagePowerForChannel:i];
// NSLog(@"%f",power);
// }
CGFloat power = ([_player averagePowerForChannel:0] + [_player averagePowerForChannel:1])/2;
// [self refreshWave:power];
[_waveView addPoint:power];
}
3獲得電平值以后寫一個(gè)waveView 視圖,里面不是有很多點(diǎn)嘛,用繪圖做
一、簡(jiǎn)單介紹
簡(jiǎn)單來說,音頻可以分為2種
(1)音效
又稱“短音頻”,通常在程序中的播放時(shí)長(zhǎng)為1~2秒
在應(yīng)用程序中起到點(diǎn)綴效果,提升整體用戶體驗(yàn)
(2)音樂
比如游戲中的“背景音樂”,一般播放時(shí)間較長(zhǎng)
框架:播放音頻需要用到AVFoundation.framework框架
二、音效的播放
1.獲得音效文件的路徑
復(fù)制代碼 代碼如下:
NSURL *url = [[NSBundle mainBundle] URLForResource:@"m_03.wav" withExtension:nil];
2.加載音效文件,得到對(duì)應(yīng)的音效ID
復(fù)制代碼 代碼如下:
SystemSoundID soundID = 0;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), soundID);
3.播放音效
復(fù)制代碼 代碼如下:
AudioServicesPlaySystemSound(soundID);
注意:音效文件只需要加載1次
4.音效播放常見函數(shù)總結(jié)
加載音效文件
復(fù)制代碼 代碼如下:
AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID)
釋放音效資源
復(fù)制代碼 代碼如下:
AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID)
播放音效
復(fù)制代碼 代碼如下:
AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)
播放音效帶點(diǎn)震動(dòng)
復(fù)制代碼 代碼如下:
AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)
三、程序示例
先導(dǎo)入需要依賴的框架
導(dǎo)入需要播放的音效文件素材
說明:AVFoundation.framework框架中的東西轉(zhuǎn)換為CF需要使用橋接。
代碼示例:
復(fù)制代碼 代碼如下:
YYViewController.m文件
//
// YYViewController.m
// 14-音效播放
//
// Created by apple on 14-8-8.
// Copyright (c) 2014年 yangyong. All rights reserved.
//
#import "YYViewController.h"
#import
@interface YYViewController ()
@end
復(fù)制代碼 代碼如下:
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//1.獲得音效文件的全路徑
NSURL *url=[[NSBundle mainBundle]URLForResource:@"buyao.wav" withExtension:nil];
//2.加載音效文件,創(chuàng)建音效ID(SoundID,一個(gè)ID對(duì)應(yīng)一個(gè)音效文件)
SystemSoundID soundID=0;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)url, soundID);
//把需要銷毀的音效文件的ID傳遞給它既可銷毀
//AudioServicesDisposeSystemSoundID(soundID);
//3.播放音效文件
//下面的兩個(gè)函數(shù)都可以用來播放音效文件,第一個(gè)函數(shù)伴隨有震動(dòng)效果
AudioServicesPlayAlertSound(soundID);
//AudioServicesPlaySystemSound(#systemsoundid)
}
@end
說明:點(diǎn)擊屏幕可以播放音效文件。
音樂的播放
一、簡(jiǎn)單說明
音樂播放用到一個(gè)叫做AVAudioPlayer的`類,這個(gè)類可以用于播放手機(jī)本地的音樂文件。
注意:
(1)該類(AVAudioPlayer)只能用于播放本地音頻。
(2)時(shí)間比較短的(稱之為音效)使用AudioServicesCreateSystemSoundID來創(chuàng)建,而本地時(shí)間較長(zhǎng)(稱之為音樂)使用AVAudioPlayer類。
二、代碼示例
AVAudioPlayer類依賴于AVFoundation框架,因此使用該類必須先導(dǎo)入AVFoundation框架,并包含其頭文件(包含主頭文件即可)。
導(dǎo)入必要的,需要播放的音頻文件到項(xiàng)目中。
代碼示例:
復(fù)制代碼 代碼如下:
//
// YYViewController.m
// 15-播放音樂
//
#import "YYViewController.h"
#import
@interface YYViewController ()
@end
復(fù)制代碼 代碼如下:
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//1.音頻文件的url路徑
NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
//2.創(chuàng)建播放器(注意:一個(gè)AVAudioPlayer只能播放一個(gè)url)
AVAudioPlayer *audioPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
//3.緩沖
[audioPlayer prepareToPlay];
//4.播放
[audioPlayer play];
}
@end
代碼說明:運(yùn)行程序,點(diǎn)擊模擬器界面,卻并沒有能夠播放音頻文件,原因是代碼中創(chuàng)建的AVAudioPlayer播放器是一個(gè)局部變量,應(yīng)該調(diào)整為全局屬性。
可將代碼調(diào)整如下,即可播放音頻:
復(fù)制代碼 代碼如下:
#import "YYViewController.h"
#import
@interface YYViewController ()
@property(nonatomic,strong)AVAudioPlayer *audioplayer;
@end
復(fù)制代碼 代碼如下:
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//1.音頻文件的url路徑
NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
//2.創(chuàng)建播放器(注意:一個(gè)AVAudioPlayer只能播放一個(gè)url)
self.audioplayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
//3.緩沖
[self.audioplayer prepareToPlay];
//4.播放
[self.audioplayer play];
}
@end
注意:一個(gè)AVAudioPlayer只能播放一個(gè)url,如果想要播放多個(gè)文件,那么就得創(chuàng)建多個(gè)播放器。
三、相關(guān)說明
新建一個(gè)項(xiàng)目,在storyboard中放三個(gè)按鈕,分別用來控制音樂的播放、暫停和停止。
程序代碼如下:
復(fù)制代碼 代碼如下:
#import "YYViewController.h"
#import
@interface YYViewController ()
@property(nonatomic,strong)AVAudioPlayer *player;
- (IBAction)play;
- (IBAction)pause;
- (IBAction)stop;
@end
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//1.音頻文件的url路徑
NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
//2.創(chuàng)建播放器(注意:一個(gè)AVAudioPlayer只能播放一個(gè)url)
self.player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
//3.緩沖
[self.player prepareToPlay];
}
- (IBAction)play {
//開始播放/繼續(xù)播放
[self.player play];
}
- (IBAction)pause {
//暫停
[self.player pause];
}
- (IBAction)stop {
//停止
//注意:如果點(diǎn)擊了stop,那么一定要讓播放器重新創(chuàng)建,否則會(huì)出現(xiàn)一些莫名其面的問題
[self.player stop];
}
@end
注意:如果點(diǎn)了“停止”,那么一定要播放器重新創(chuàng)建,不然的話會(huì)出現(xiàn)莫名其妙的問題。
點(diǎn)擊了stop之后,播放器實(shí)際上就不能再繼續(xù)使用了,如果還繼續(xù)使用,那么后續(xù)的一些東西會(huì)無法控制。
推薦代碼:
復(fù)制代碼 代碼如下:
#import "YYViewController.h"
#import
@interface YYViewController ()
@property(nonatomic,strong)AVAudioPlayer *player;
- (IBAction)play;
- (IBAction)pause;
- (IBAction)stop;
@end
復(fù)制代碼 代碼如下:
@implementation YYViewController
#pragma mark-懶加載
-(AVAudioPlayer *)player
{
if (_player==Nil) {
//1.音頻文件的url路徑
NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
//2.創(chuàng)建播放器(注意:一個(gè)AVAudioPlayer只能播放一個(gè)url)
self.player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
//3.緩沖
[self.player prepareToPlay];
}
return _player;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (IBAction)play {
//開始播放/繼續(xù)播放
[self.player play];
}
- (IBAction)pause {
//暫停
[self.player pause];
}
- (IBAction)stop {
//停止
//注意:如果點(diǎn)擊了stop,那么一定要讓播放器重新創(chuàng)建,否則會(huì)出現(xiàn)一些莫名其面的問題
[self.player stop];
self.player=Nil;
}
@end
四、播放多個(gè)文件
點(diǎn)擊,url,按住common建查看。
可以發(fā)現(xiàn),這個(gè)url是只讀的,因此只能通過initWithContentsOfUrl的方式進(jìn)行設(shè)置,也就意味著一個(gè)播放器對(duì)象只能播放一個(gè)音頻文件。
那么如何實(shí)現(xiàn)播放多個(gè)音頻文件呢?
可以考慮封裝一個(gè)播放音樂的工具類,下一篇文章將會(huì)介紹具體怎么實(shí)現(xiàn)。
分享標(biāo)題:ios開發(fā)音樂,自己開發(fā) ios音樂播放軟件 教程
文章網(wǎng)址:http://chinadenli.net/article2/dssphoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站收錄、網(wǎng)站維護(hù)、品牌網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)