iOS 가 휴대 전화 음소 거 키 와 사 이 드 볼 륨 키 를 정확하게 감청 하 는 방법 예시
3665 단어 ios감청 하 다사 이 드 볼 륨 키
우리 의 앱 에는 이러한 Feature 가 있 습 니 다.사용자 가 볼 륨 키 를 통 해 최대 볼 륨 으로 조절 할 때 Toast 가 팝 업 됩 니 다.사용자 에 게 현재 볼 륨 이 가장 크다 는 것 을 알려 줍 니 다.볼 륨 키 를 계속 누 르 면 초대형 볼 륨 모드 로 설정 할 수 있 습 니 다(오디 오 파일 의 볼 륨 조절 을 통 해).처음에 우 리 는 앱 에서 감청 이름 이'AVSystemController'였 다.SystemVolumeDid Change Notification 의 시스템 알림 을 통 해 사용자 가 사 이 드 볼 륨 키 를 통 해 휴대 전화 볼 륨 을 조절 하 는 사건 을 알 수 있 습 니 다.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onVolumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];
이 알림 을 처리 하 는 방법 은 다음 과 같 습 니 다.
- (void)onVolumeChanged:(NSNotification *)notification {
if ([[notification.userInfo objectForKey:@"AVSystemController_AudioCategoryNotificationParameter"] isEqualToString:@"Audio/Video"]) {
if ([[notification.userInfo objectForKey:@"AVSystemController_AudioVolumeChangeReasonNotificationParameter"] isEqualToString:@"ExplicitVolumeChange"]) {
CGFloat volume = [[notification.userInfo objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue];
if (volume != MAX_VOLUME) {
// todo
} else {
// todo
}
}
}
}
문제점 을 발견 하 다이 코드 는 우리 앱 에서 줄곧 잘 작 동 하고 있다.하지만 최근 한동안 테스트 인원 이 버 전 을 컴 파일 해 볼 륨 을 최대 로 조절 한 뒤 Toast 알림 이 뜨 지 않 고 튀 어 나 오기 도 했다.디 버 깅 을 통 해 가끔'AVSystem Controller'를 들 을 수 있 습 니 다.SystemVolumeDid Change Notification 시스템 알림 은 가끔 없 을 때 도 있 고 흔 들 리 기도 합 니 다.한동안 모두 가 어떻게 된 일 인지 몰라 서 골 치가 아 팠 다.이 코드 는 이전에 발 표 된 정식 버 전에 서 이런 문제 가 발생 한 적 이 없 기 때문이다.
포 지 셔 닝 문제
이전 에는 버 전이 없 었 는데,현재 의 버 전 은 틀림없이 고 친 문제 라 는 것 을 설명 한다.체크 아웃 이 되 기 전의 commt 만 이 언제 제출 되 었 는 지 하나씩 테스트 합 니 다.하지만 이렇게 오 랜 시간 을 들 였 지만 언제 제출 했 는 지 알 아내 지 못 했다.마지막 으로 하루 를 괴 롭 혔 습 니 다.우리 쪽 의 한 미녀 동료 샤 론 은 마지막 으로 이 문 제 를 해 결 했 습 니 다.그녀 는 stackoverflow 에서 비슷 한 문 제 를 찾 았 습 니 다.우리 가 삭제 하기 전에 이어폰 라인 을 통 해 App 의 Feature 를 제어 할 때 이 코드 를 삭제 해서 생 긴 것 을 발 견 했 습 니 다.이 코드 는 원 격 제어 사건 을 감청 하기 시작 한 것 이다.
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
NSNotificationCenter 가 감청 한 알림"AVSystemControllerSystemVolumeDid Change Notification 이 Remote Control Events 와 관련 이 있다 니,이어폰 라인 에 도 볼 륨 조절 버튼 이 있 기 때 문 일 까??아 는 친구 가 있 으 면 댓 글 을 남 겨 서 소통 할 수 있 습 니 다.ios 음소 거 키 를 어떻게 감청 합 니까?
음소 거 여 부 를 판단 합 니 다:
- (BOOL)isMuted
{
CFStringRef route;
UInt32 routeSize = sizeof(CFStringRef);
OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &routeSize, &route);
if (status == kAudioSessionNoError)
{
if (route == NULL || !CFStringGetLength(route))
return TRUE;
}
return FALSE;
}
음소 거 키 듣 기:
- (BOOL)addMutedListener
{
OSStatus s = AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange,
audioRouteChangeListenerCallback,
self);
return s == kAudioSessionNoError;
}
리 셋 함수:
void audioRouteChangeListenerCallback (void *inUserData,
AudioSessionPropertyID inPropertyID,
UInt32 inPropertyValueSize,
const void *inPropertyValue
)
{
if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return;
BOOL muted = [mediaVolume isMuted];
// add code here
}
총결산이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.