[iPhone Dev] 아이폰이 매너 모드 (silent mode, vibration mode?)로 전환 되는 것을 감지하기
Jan 10
iphone audio, audio session, dev, iphone, iphone dev, iso, silent mode, vibration mode 4 Comments
안녕하세요.
일이 있어서 SNS를 한 동안 중단하였다가 블로그부터 다시 재개합니다.
조금 늦었지만, 흑룡의 해 복 많이 받으시고, 원하시는 것을 꾸준히 하셔서 성취하시길 기원합니다.
(문의나 댓글에 답변을 못 드려 죄송합니다. 이 후 성실히 답변하겠습니다. T.T)
* 아이폰의 좌측 상단의 스위치로 매너 모드 (silent / vibration mode, 진동 모드?) 로 전환 되는 것을 감지하기 코드입니다.
참고로 Audio route가 헤드폰인 경우는 매너 모드 전환이 감지되지 않습니다. 당연하겠죠.
아래와 같이 audio session을 초기화하고 listener를 등록하는 코드는 한 번만 해줘야겠죠?
// init AudioSessionInitialize(NULL, NULL, NULL, NULL); AudioSessionAddPropertyListener (kAudioSessionProperty_AudioRouteChange, audioRouteChangeListenerCallback, self);
그리고 아래와 같이 listener에 등록한 콜백으로 매너 모드 전환을 알 수 있겠죠?
물론 audio session route 변경도 알 수 있습니다.
// call back
void audioRouteChangeListenerCallback(
void * inClientData,
AudioSessionPropertyID inID,
UInt32 inDataSize,
const void * inData);
void audioRouteChangeListenerCallback(
void * inClientData,
AudioSessionPropertyID inID,
UInt32 inDataSize,
const void * inData) {
UInt32 routeSize = sizeof (CFStringRef);
CFStringRef route;
AudioSessionGetProperty (kAudioSessionProperty_AudioRoute, &routeSize, &route);
NSLog(@"route: %@", route);
if(CFStringGetLength(route) > 0)
NSLog(@"Vibration Off");
else
NSLog(@"Vibration On");
}
Ref
http://stackoverflow.com/questions/7798891/detect-silent-mode-in-ios5
http://stackoverflow.com/questions/287543/how-to-programmatically-sense-the-iphone-mute-switch
