因此,我有一個應用程序,即使屏幕關閉,我也想繼續工作。 以前,當我想這樣做時,我使用了這個技巧 - 我在背景(AudioServicesPlaySystemSound)循環中播放無聲/空聲音,所以如果用戶按下開/關按鈕,應用程序仍然在後臺工作 - 所以它絕不允許iPhone進入睡眠模式 - 它只是關閉了屏幕,可能是wifi或藍牙(以及iPod Touch加速度計,據我所知)。它的工作。我想在我的新應用程序中使用相同的技巧,但是當我現在測試它時,它似乎不再起作用。即使關閉了屏幕,但後臺播放的聲音(使用AVAudioPlayer播放的聲音)也不會播放(即使當我關閉屏幕時,後臺播放的聲音也會播放(當我用一些聲音替換「空」音頻文件時)再次)。 我不知道它在哪一點停止工作(它確實在3.x操作系統上工作)。難道我做錯了什麼?蘋果是否改變/修復了即使屏幕關閉也可讓您的應用程序工作的「黑客」?是否有其他方法可以讓設備進入睡眠狀態(並減少電池電量),但是繼續工作?關閉屏幕播放聲音/不要讓iPhone進入睡眠狀態
這是我用它來播放背景/無聲聲音代碼:
-(void) playSilentSound
{
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef silentUrl = CFBundleCopyResourceURL (mainBundle, CFSTR ("silence"), CFSTR ("aiff"), NULL);
AudioServicesCreateSystemSoundID (silentUrl, &silentSound);
silentTimer = [NSTimer scheduledTimerWithTimeInterval: 2.0 target: self selector:@selector(playSilence) userInfo: nil repeats: YES];
}
-(void) playSilence
{
AudioServicesPlaySystemSound (silentSound);
}
這是我怎麼打,如果關閉屏幕應該連打聲:
-(BOOL) playSound: (NSString *) path withLoops: (BOOL) loops stopAfter: (int) seconds
{
NSError *error;
player = [[AVAudioPlayer alloc] initWithContentsOfURL: [NSURL fileURLWithPath: path] error: &error];
player.delegate = self;
player.numberOfLoops = 0;
player.volume = volume;
secondsPlayed = 0;
loop = loops;
BOOL played = [player play];
if(played && seconds > 0)
{
timer = [[NSTimer scheduledTimerWithTimeInterval: 0.5 target: self selector: @selector(stopPlaying:) userInfo: [NSNumber numberWithInt: seconds] repeats: YES] retain];
secondsLimit = seconds;
} else {
secondsLimit = -1;
}
}
-(void) stopPlaying:(NSTimer*)theTimer
{
if(secondsLimit > 0 && (secondsPlayed + [player currentTime]) >= secondsLimit)
{
[player stop];
[timer release];
timer = nil;
}
}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)sender successfully:(BOOL)flag
{
if(sender == player)
{
if(flag) { secondsPlayed += sender.duration; }
if(loop) { [player play]; }
}
}
代碼可能有點複雜 - 可能只是前幾行 - 它是這樣製作的,所以你只能播放X秒的聲音(如果聲音比X短,它會播放幾個循環,直到總時間> = X )。當然,當屏幕一直處於開啓狀態時,一切正常。如果你發現代碼在你的項目中很有用(比如playSound:withLoops:stopAfter :) - 隨意使用它(但是如果你給我發一條消息會很酷,所以我會知道我的幫助: ))。
非常感謝!這一行代碼將我的背景音頻重新帶回了生活。 – 2017-12-30 16:13:35