SoloAmbient и applicationDidEnterBackground - PullRequest
0 голосов
/ 06 марта 2012

Я хочу установить SoloAmbient (и отключить всю музыку в iPhone) после того, как мое приложение перейдет в фоновый режим.

Я написал такой код, но он не работает

MyAppDelegate.h

@interface MyAppDelegate : UIResponder <UIApplicationDelegate> {
AVAudioSession *audioSession;
}
@property (strong, nonatomic) AVAudioSession *audioSession;

MyAppDelegate.m

- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"Application entered background state.");

//[self.DelcloseSession setCategory:AVAudioSessionCategorySoloAmbient error:nil];  
//[self.DelcloseSession setActive:YES error:nil];

audioSession = [AVAudioSession sharedInstance];
[audioSession setDelegate:self];

NSError *averr = nil;
[audioSession setCategory:AVAudioSessionCategoryPlayback error:&averr]; 
if(averr)
{
    NSLog(@"audioSession: %@ %d %@", [averr domain], [averr code], [[averr userInfo] description]);
}

averr = nil;
[audioSession setActive:YES error:&averr];
if(averr)
{
    NSLog(@"audioSession: %@ %d %@", [averr domain], [averr code], [[averr userInfo] description]);
}

averr = nil;
[audioSession setCategory:AVAudioSessionCategorySoloAmbient error:&averr];
if(averr)
{
    NSLog(@"audioSession: %@ %d %@", [averr domain], [averr code], [[averr userInfo] description]);
}   

Фактически приложение отправляет мне журнал «audioSession: NSOSStatusErrorDomain 560161140 (null)», и музыка на iPhone (с iPod или другого приложения) все еще воспроизводится.

Как это исправить? Как сделать, чтобы при переходе приложения в фоновый режим оно открывало SoloAmbient и заставляло все замолчать? Может быть, есть еще какая-нибудь возможность поспать под музыку?

Ответы [ 2 ]

0 голосов
/ 06 марта 2012

Вы можете определить состояние воспроизведения iPod, используя среду медиаплеера

#import <MediaPlayer/MediaPlayer.h>

, а затем это

if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying) {
    //iPod is playing
} else {
    //iPod is not playing
}

и оттуда

0 голосов
/ 06 марта 2012

Ваше приложение должно будет запросить звуковой фон в его фоновом режиме, установить аудиосессию и начать воспроизведение звука (тишина и т. Д.), Прежде чем уйти в отставку и перейти в фоновый режим.В противном случае аудиосеанс принадлежит новому приложению переднего плана.

...