8

スピーカーの状態を管理する方法に従いました。

AudioSession.h

enum {
    kAudioSessionOverrideAudioRoute_None    = 0,
    kAudioSessionOverrideAudioRoute_Speaker = 'spkr'
};

私のクラス

@synthesize speakerEnabled;

...

- (void)setSpeakerEnabled:(BOOL)enable {
speakerEnabled = enable;
if(enable) {
    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;  
    AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute
                             , sizeof (audioRouteOverride)
                             , &audioRouteOverride);
 } else {
    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None;  
    AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute
                             , sizeof (audioRouteOverride)
                             , &audioRouteOverride);
 }
}

ただし、iPhone でのみ動作し、iPad では何も起こりません。

  • ボタンを押すと: Speaker On、 に入り、;if(enable)AudioSessionSetProperty受け取ります。kAudioSessionOverrideAudioRoute_Speaker

  • ボタンを押すと: Speaker Off、 に入り、;elseAudioSessionSetProperty受け取ります。kAudioSessionOverrideAudioRoute_None

デバッグを開始しましたが、デバイス間の違いが見つかりません。

私は iPad2 iOS 6.1 を持っています。

私は何か見落としてますか?

私を助けてください

編集

LombaX が言うように、起動アプリケーションAVAudioSessionカテゴリに追加しました。

NSError *err = nil;
    BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&err];

    if(!success){
        [MyLogger logc:MyLoggerLog format:"%@",[err localizedDescription]];
    }

success = YES

それでもうまくいきません。

4

2 に答える 2