スピーカーの状態を管理する方法に従いました。
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
、 に入り、;else
をAudioSessionSetProperty
受け取ります。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
それでもうまくいきません。