我想知道一件事。我希望你的人能指导我。
我正在创建一个需要一些音频警报的应用程序。我为此目的使用AVAudioPlayer
。
我还设置了这样的音频会话(在我的主委托类中):
//to play from sleep
OSStatus result = AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, self);
UInt32 category = kAudioSessionCategory_MediaPlayback;
result = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), category);
AudioSessionSetActive(YES);
如果我的屏幕被强行锁定,我可以播放音乐,但如果iPhone自动进入睡眠模式,我将无法播放mp3文件。
一般情况下,10分钟后,我的应用程序中没有任何音乐。谁能告诉我我错过了什么?如果你知道我的问题,请指导我。
编辑1
我目前正在使用kAudioSessionCategory_MediaPlayback。 我在我的代码中写了它,我把它贴在这里。
编辑2
我想从睡觉的iphone开始播放音频。
如果你知道,请帮助我。
编辑3
idleTimerDisabled,消耗我的电池?
我正在创建一个警报,因此该应用程序可以运行长达10个小时。 它会禁用屏幕上的灯光吗? 然后我可以使用它。 我已经看到一些在iPhone上运行的应用程序,它从睡眠模式播放音乐。
让我试试这个,谢谢你的回复。
答案 0 :(得分:4)
我在this thread here以及this thread on SO中找到了答案。
正在发生的事情是iPhone在10分钟后(屏幕锁定后)进入深度睡眠模式,停止NSTimer并进入低功耗模式。即使您将类别设置为MediaPlayback,它也会执行此操作,除非您实际播放声音。给出的解决方案是定期播放“静音”声音文件,以防止它进入深度睡眠模式。
这是我在深度睡眠发生时在控制台日志中看到的内容(警告来自我的时钟应用程序):
Thu Dec 24 09:25:09 unknown Clock[16346] <Warning>: ClockDigital itemInterval=0 curInterval=0 needsUpdate=YES
Thu Dec 24 09:25:09 unknown Clock[16346] <Warning>: BatteryIcon itemInterval=6 curInterval=0 needsUpdate=NO
Thu Dec 24 09:25:09 unknown CommCenter[28] <Notice>: Telling CSI to go low power.
Thu Dec 24 09:25:09 unknown CommCenter[28] <Notice>: CSI can enter low power, so now telling to do so.
Thu Dec 24 09:25:09 unknown CommCenter[28] <Notice>: Will sleep. Heard from CSI in 0.00501698 seconds
Thu Dec 24 09:25:10 unknown kernel[0] <Debug>: AppleSynopsysOTGCore::sleepWakeNotification: Sysmtem Going to sleep
Thu Dec 24 09:25:10 unknown kernel[0] <Debug>: AirPort: Disabled AppleBCMWLAN (link 2, sys 1, user 1)
Thu Dec 24 09:25:10 unknown kernel[0] <Debug>: AppleBCMWLAN::setPOWER() [kernel_task]: Setting power state to 0
Thu Dec 24 09:25:10 unknown kernel[0] <Debug>: AppleMultitouchN1SPI: disabled power
Thu Dec 24 09:25:10 unknown kernel[0] <Debug>: AppleBCMWLAN Left BSS: @ 0xcf3cc800, BSSID = 00:0f:a3:1c:9f:0c, rssi = -53, rate = 54 (100%), channel = 7, encryption = 0x2, ap = 1, failures = 0, age = 26, ssid[ 8] = "mggm.ap1"
Thu Dec 24 09:25:10 unknown kernel[0] <Debug>: AirPort: Link Down on en0
Thu Dec 24 09:25:10 unknown kernel[0] <Debug>: AppleBCMWLAN::powerOff Ready to power off
Thu Dec 24 09:25:10 unknown kernel[0] <Debug>: AppleBCMWLAN::setPowerStateGated() : Powering Off and sleeping
Thu Dec 24 09:25:10 unknown kernel[0] <Debug>: AppleBCMWLAN::powerOff Ready to power off
Thu Dec 24 09:25:10 unknown configd[22] <Error>: WiFi:[283368310.000857]: Unable to dispatch message to client dataaccessd (0x10000004)
Thu Dec 24 09:25:10 unknown configd[22] <Error>: WiFi:[283368310.013365]: Unable to dispatch message to client apsd (0x10000004)
Thu Dec 24 09:25:10 unknown Clock[16346] <Warning>: ClockVC: adjusted interval: 0.993291
Thu Dec 24 09:25:10 unknown configd[22] <Error>: WiFi:[283368310.018146]: Error initiating scan request: 82
Thu Dec 24 09:25:10 unknown kernel[0] <Debug>: AppleBCMWLAN::setPOWER(): IOKit power off. Discarding request.
Thu Dec 24 09:25:10 unknown Clock[16346] <Warning>: CalendarDay itemInterval=5 curInterval=0 needsUpdate=NO
Thu Dec 24 09:25:10 unknown Clock[16346] <Warning>: BatteryState itemInterval=6 curInterval=0 needsUpdate=NO
Thu Dec 24 09:25:10 unknown Clock[16346] <Warning>: MindfulnessBell itemInterval=2 curInterval=0 needsUpdate=NO
Thu Dec 24 09:25:10 unknown Clock[16346] <Warning>: ClockDigital itemInterval=0 curInterval=0 needsUpdate=YES
Thu Dec 24 09:25:10 unknown Clock[16346] <Warning>: BatteryIcon itemInterval=6 curInterval=0 needsUpdate=NO
Thu Dec 24 09:25:10 unknown kernel[0] <Debug>: System Sleep
答案 1 :(得分:0)
您需要使用其他音频会话类别。您可以查看文档here。
我认为您应该使用的是kAudioSessionCategory_MediaPlayback
。
答案 2 :(得分:0)
为防止您的应用在 n 分钟后沉默,您可能还需要将UIApplication
的{{1}}属性设置为idleTimerDisabled
。
答案 3 :(得分:0)
你应该试试这个
[[AVAudioSession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
从http://www.mindyourcode.com/ios/iphone/how-to-play-audio-in-iphone-sleep-mode/
的教程中引用