2012-03-06 7 views
0

私のアプリケーションがバックグラウンドになった後、私はSoloAmbientを設定したい(そしてiPhoneのすべての音楽を消したい)。SoloAmbientとapplicationDidEnterBackground

私はそのようなコードを書いたが、それは効果アプリで

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または他のアプリから)iまだ再生されていません。

修正方法?アプリがバックグラウンドに移動したとき、SoloAmbientを開き、すべてを沈黙させる方法を教えてください。たぶん音楽を寝る機会は他にありますか?

答えて

0

あなたのアプリはバックグラウンドモードのplistでオーディオバックグランドを要求し、アクティブにしてバックグラウンドに入る前にオーディオセッションを設定し、サウンドの再生を開始する必要があります(無音など)。それ以外の場合、オーディオセッションは新しいフォアグラウンドアプリに属します。

+0

から行くことができますが、 'audioSession = [AVAudioSession sharedInstance]移動することを意味します; \t [audioSession setDelegate:self]; 'didFinishLaunchingWithOptions? 「音を出し始める」とはどういう意味ですか? –

+0

アプリがサウンドを再生していない場合、アプリがバックグラウンドに入ったときに実行され続けることはないため、オーディオセッションの種類についての発言はなくなります。 – hotpaw2

+1

私はアプリを保つために「静かな」音楽を演奏するループを持っています。私はそこでセッションを使います: '[self.silentSession setCategory:AVAudioSessionCategoryPlayback error:nil]; UInt32 doSetProperty = 1; AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers、sizeof(doSetProperty)、&doSetProperty); [self.silentSession setActive:YESエラー:nil]; 'しかし、デリゲートにはありません。 –

0

あなたはメディアプレーヤフレームワーク

#import <MediaPlayer/MediaPlayer.h> 

してから、この

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

を使用してiPodの再生状態を検出し、そこ

+0

しかし、私はiPodだけを止めたくありません。ストリーミングや他のアプリからの音楽など、それぞれの可能な音楽を沈黙させたい。そのため、iPodを基本的に停止する代わりに、SoloAmbientを使用したかったのです。 –

関連する問題