如何停止 AudioToolbox 声音?
Posted
技术标签:
【中文标题】如何停止 AudioToolbox 声音?【英文标题】:How can I stop AudioToolbox sound? 【发布时间】:2013-03-12 19:38:46 【问题描述】:我有两种不同的按钮按下声音动作。当我按下一个按钮时它应该播放一个声音,当我按下另一个时它应该停止第一个声音并播放另一个声音,我该怎么做?
谢谢,
-(void) onButtonPressAlbina
[soundID2 stop];
NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"albina" ofType:@"m4a"];
SystemSoundID soundID;
AudioservicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath: soundPath], &soundID);
AudioServicesPlaySystemSound (soundID);
-(void) onButtonPressBalena
NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"balena" ofType:@"m4a"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath: soundPath], &soundID);
AudioServicesPlaySystemSound (soundID);
【问题讨论】:
【参考方案1】:您无法停止通过“AudioServicesPlaySystemSound
”播放的声音,但您可以改为使用“AVAudioPlayer
”。
在您的对象中保留对“AVAudioPlayer
”的引用,然后您可以在需要停止它时调用"stop
"。
播放
#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVAudioPlayer.h>
AVAudioPlayer *player;
// ...
NSString *path;
NSError *error;
path = [[NSBundle mainBundle] pathForResource:@"albina" ofType:@"m4a"];
if ([[NSFileManager defaultManager] fileExistsAtPath:path])
player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];
player.volume = 0.5f;
[player prepareToPlay];
[player setNumberOfLoops:0];
[player play];
停止
if (player != nil)
if (player.isPlaying == YES)
[player stop];
【讨论】:
以上是关于如何停止 AudioToolbox 声音?的主要内容,如果未能解决你的问题,请参考以下文章
如何制作 SystemSoundID 数组?使用 AudioToolbox 框架