Tag: avaudioplayer

第一次播放声音时,AVAudioPlayer启动缓慢

我试图通过iPhone上的AVAudioPlayer播放(非常短 – less于2秒)的audio文件来消除启动延迟。 首先,代码: NSString *audioFile = [NSString stringWithFormat:@"%@/%@.caf", [[NSBundle mainBundle] resourcePath], @"audiofile"]; NSData *audioData = [NSData dataWithContentsOfMappedFile:audioFile]; NSError *err; AVAudioPlayer *audioPlayer = [(AVAudioPlayer*)[AVAudioPlayer alloc] initWithData:audioData error:&err]; audioPlayer.delegate = self; [audioPlayer play]; 一旦完成,我还实现了audioPlayerDidFinishPlaying方法来释放AVAudioPlayer。 我第一次播放audio时,延迟是可以触摸的 – 至less2秒。 然而,之后,声音立即播放。 我怀疑罪魁祸首是最初从闪存中读取很长一段时间的[NSData dataWithContentsOfMappedFile],但后来读取的速度很快。 不过,我不确定如何testing。 是这样吗? 如果是的话,我应该只是预先caching的NSData对象,积极清理它们在低内存条件?

在iPhone上播放声音,甚至在静音模式下

我想创build一个应用程序,它可以在iPhone处于静音模式时创build声音,音乐或系统声音。 在静音模式下,是否可以播放任何types的音乐,无论是音乐还是系统音调?

AVAudioPlayer淡出音量

我有一个AVAudioPlayer播放一些audio(杜!) audio在用户按下button时启动。 当他们释放它,我想audio淡出。 我正在使用接口生成器…所以我试图挂钩一个function“触摸里面”,淡出audio超过1秒,然后停止。 有任何想法吗? 谢谢

如何在静音模式下开始播放audio并locking在iOS 6中?

最终用户进程 打开应用 打开“静音模式”。 按'lockingbutton' 应用程序仍可以在数小时后开始播放声音,而不是在此期间播放任何audio。 这样做的应用程序 许多闹钟应用程序已经设法做到这一点,我不认为他们正在使用沉默的audio,以保持应用程序运行,因为他们不听起来,如果你真的退出应用程序与家庭。 闹钟临 我的时钟 波形报警 惊慌 的iHome … …他们是否保持循环运行后被locking一些如何或它是一个通知(它无法播放声音沉默)启动应用程序备份播放audio或其他方法? 现行方法已实施 AVAudioPlayer使用: AudioSessionInitialize(nil, nil, nil, nil); AudioSessionSetActive(YES); UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof(sessionCategory),&sessionCategory); 并将Info.plist设置为: 所需的背景模式(UIBackGroundModes) – 应用程序播放audio(audio) 现在 即使在应用程序正在运行和屏幕上时,我也可以播放audio。 如果audio已经运行,那么应用程序可以通过主屏幕buttonclosures,audio将会运行。 但是如果应用程序没有播放audio,并且屏幕被locking,所有的线程都将被终止,audio也不会播放。 这些应用程序如何设法解决这个问题? 迄今为止发现的可能方法 答:使用“beginBackgroundTaskWithExpirationHandler:”以无限循环保持应用程序无限期运行。 优点: 看起来你可以在很多情况下完成这项工作,甚至当用户按下回家时也是如此。 缺点: 据我所知,这与苹果政策相违背。 将会使用更多的资源 注释: 我几乎已经有了这个工作,可能会有一些调整。 这似乎不是所有这些其他警报正在做的事情,因为他们不会继续运行,如果你按家庭BTN。 这表明他们使用了一些方法,允许他们在locking状态下运行但不在BG中。 (这是我需要的) 另外,当你问你有多less时间跑步时,你会得到10分钟。 通过在那里放下一个无限循环,数字实际上会下降到0,然后进入底片数小时。(testing)我不知道这将在现实世界或应用程序接受方面如何performance。 B.使用无声audio循环来构成连续audio播放媒体中心 优点: 在locking状态下工作,并在大多数情况下保持运行。 缺点: […]

耳机是否插入? IOS 7

开发一个iPhone应用程序,audio文件也需要通过耳机收听。 如何检查耳机是否插入,以便我可以告诉用户插入耳机。 我从另一个线程有以下代码,但audioSessionGetProperty方法已被弃用。 任何人都知道如何改变下面的代码来使这个工作或有自己的代码/解决scheme。 谢谢。 – (BOOL)isHeadsetPluggedIn { UInt32 routeSize = sizeof (CFStringRef); CFStringRef route; //Maybe changing it to something like the following would work for iOS7? //AVAudioSession* session = [AVAudioSession sharedInstance]; //OSStatus error = [session setCategory:kAudioSessionProperty_AudioRoute…? //the line below is whats giving me the warning OSStatus error = AudioSessionGetProperty (kAudioSessionProperty_AudioRoute, &routeSize, &route); /* Known […]

用AVAudioPlayer播放声音

我试图用AVAudioPlayer播放声音,但它不会工作。 编辑1:仍然不起作用。 编辑2 :此代码的作品。 我的设备处于静音模式。 import UIKit import AVFoundation class ViewController: UIViewController { var audioPlayer = AVAudioPlayer() override func viewDidLoad() { super.viewDidLoad() var alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("button-09", ofType: "wav")) println(alertSound) var error:NSError? audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error) audioPlayer.prepareToPlay() audioPlayer.play() }

AVAudioPlayer在debugging模式下抛出断点

每当我加载的应用程序停止,就像我已经在这一行上设置了一个断点: self.audioPlayer = [[[AVAudioPlayer alloc] initWithData:[dataPersister loadData:self.fileName] error:&outError] autorelease]; 这条线上面没有任何断点。 它只发生在我以debugging模式运行应用程序,并没有崩溃后的断点。 当我点击“继续执行程序”时,应用程序没有任何事情发生。 这是使用initWithData调用的loadData方法: -(NSData*)loadData:(NSString*)fileName { NSString *dataPath = [self.path stringByAppendingPathComponent:fileName]; dataPath = [dataPath stringByStandardizingPath]; NSData *data = [[[NSData alloc] initWithContentsOfFile:dataPath]autorelease ]; return data; } loadData函数似乎工作正常。 请求的mp3文件在断点后加载和播放没有任何问题。 你有什么想法我做错了吗? 编辑:我跑了一个backtrace,当它停在断点。 这是输出: (lldb)bt * thread#1:tid = 0x1c03,0x30df1724 libc ++ abi.dylib`__cxa_throw,stop reason = breakpoint 1.2 frame#0:0x30df1724 libc ++ abi.dylib`__cxa_throw […]

在iOS4上input背景音乐

谈论在后台播放audio时,文档写得相当糟糕。 它给人的印象是,所有你必须做的继续播放你正在播放的audio只是添加一个键/值对info.plist文件和wallah,这是魔术。 然而,这种情况并非如此。 例如,如果我播放2分钟长的mp3,显然audio足够长,可以在我点击主页button将我的应用程序发送到背景后播放。 问题是,即使我在我的info.plist文件中有这个键/值对,它会暂停audio,然后在切换回应用程序时继续播放。 苹果声明,所有的audio支持背景和声音的框架应该继续播放,直到它结束,然后苹果将暂停你的应用程序。 所以,我的问题是:他们在做什么,我失踪了? 我是否也必须以某种方式使用他们的新委托或在applicationDidEnterBackground上调用audio? 对我来说,这是没有意义的,因为我没有保存状态(他们为我做快速的应用程序切换),或真正处理任何事情在背景中,而不是他们认为应该自动处理的audio。

使用AVAudioPlayer不工作检测iPhone的环/静音/静音开关?

我尝试过使用这些方法来试图检测Ring / Silent开关是否激活: 如何以编程方式感应iPhone静音开关? AVAudioSession类别不起作用文档指示 但在我的iPhone 4上,“状态”值始终是“扬声器”(并且由CFStringGetLength(状态)返回的长度值始终为7)。 有没有人使用这种方法成功? 如果是这样,在什么样的设备和SDK版本? 我这样称呼它: – (BOOL)deviceIsSilenced { CFStringRef state; UInt32 propertySize = sizeof(CFStringRef); OSStatus audioStatus = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state); if (audioStatus == kAudioSessionNoError) { NSLog(@"audio route: %@", state) // "Speaker" regardless of silent switch setting, but "Headphone" when my headphones are plugged in return (CFStringGetLength(state) <= 0); } return […]

使用AVAudioplayer在后台播放音乐

即使应用程序在后台运行,我也想播放音乐。 我检查了所有的stackoverflow链接,但没有一个工作。 请帮助需要今天做。 我曾经使用下面的代码: NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"Day At The Beach" ofType: @"mp3"]; NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath]; NSError *error; playerTemp = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error]; playerTemp.numberOfLoops = 0; AudioSessionSetActive(true); [playerTemp play];