1. 程式人生 > >iOS開發 切換聽筒和揚聲器

iOS開發 切換聽筒和揚聲器

[[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; //建議在播放之前設定yes,播放結束設定NO,這個功能是開啟紅外感應

//新增監聽

[[NSNotificationCenter defaultCenter] addObserver:self

                                         selector:@selector(sensorStateChange:)

                                             name:@"UIDeviceProximityStateDidChangeNotification"

                                           object:nil];

//處理監聽觸發事件

-(void)sensorStateChange:(NSNotificationCenter *)notification;

{

 //如果此時手機靠近面部放在耳朵旁,那麼聲音將通過聽筒輸出,並將螢幕變暗(省電啊)

 if ([[UIDevice currentDevice] proximityState] == YES)

    {

 NSLog(@"Device is close to user");

        [[AVAudioSession sharedInstance

] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

    }

    else

    {

 NSLog(@"Device is not close to user");

        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

    }

}

//初始化播放器的時候如下設定

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;

AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,

                        sizeof(sessionCategory),

                        &sessionCategory);

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;

AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,

                         sizeof (audioRouteOverride),

                         &audioRouteOverride);

AVAudioSession *audioSession = [AVAudioSession sharedInstance];

//預設情況下揚聲器播放

[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

[audioSession setActive:YES error:nil];