어떤 오디오 장치가 iphone/ipad/ipod에 연결되어 있는지 감지하는 방법을 알아 내려고합니다. 오디오 경로 통화 및 라우트 변경 콜백에 대한 모든 정보를 알고 있지만 첨부 된 정보는 알려주지 않습니다. 오디오가 현재 라우팅되는 위치 만보고합니다. 예를 들어 오디오가 스피커를 통해 라우팅되는 동안 헤드폰 및/또는 블루투스가 계속 연결되어 있는지 알아야합니다. 또는 예를 들어 사용자가 블루투스를 사용하는 동안 헤드셋을 연결 한 다음 블루투스 연결을 끊기로 결정한 경우 오디오가 여전히 헤드폰을 통해 전달되는 경우에도 블루투스 연결이 끊어 졌음을 알아야합니다.첨부 된 오디오 장치 감지 iOS
7
A
답변
0
AudioSession 속성에서 InputSources 및 OutputDestinations의 목록을 가져올 수 있습니다. 이 세션의 속성을 확인 :
kAudioSessionProperty_InputSources
kAudioSessionProperty_OutputDestinations
를 각각의 세부 사항을 조회하려면 사용할 수 있습니다
kAudioSessionProperty_InputSource
kAudioSessionProperty_OutputDestination
1
을에서 iOS 5의 경우에 사용한다 : 불행하게도
CFStringRef newRoute;
size = sizeof(CFStringRef);
XThrowIfError(AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &size, &newRoute), "couldn't get new audio route");
if (newRoute)
{
CFShow(newRoute);
if (CFStringCompare(newRoute, CFSTR("HeadsetInOut"), NULL) == kCFCompareEqualTo) // headset plugged in
{
colorLevels[0] = .3;
colorLevels[5] = .5;
}
else if (CFStringCompare(newRoute, CFSTR("SpeakerAndMicrophone"), NULL) == kCFCompareEqualTo)
}
0
iOS11 현재, 현재 연결된 출력 장치의 목록을 안정적으로 가져올 API가없는 것 같습니다. 현재 경로가 변경되면 AVAu를 통해 (현재 라우트 된) 장치 1 개만 보입니다. dioSession의 currentRoute.outputs
, 여러 장치가 여전히 연결되어있을 수 있습니다. 적절한 오디오 세션 모드 (예 AVAudioSessionModeVoiceChat
또는 AVAudioSessionModeVideoChat
)를 사용하는 경우
그러나, 입력 및 즉, HFP 프로파일 블루투스 장치를 포함 하나 AVAudioSession의 availableInputs
, 그 비아 가능한 입력들의리스트를 얻을 수있다 해당 장치가 활성 경로가 아닌 경우에도 입력이 표시됩니다. 예를 들어 사용자가 Bluetooth에서 스피커로 MPVolumeView
을 통해 수동 무시를 수행 할 때 및 HFP가 양방향 IO (두 입력이 모두 있기 때문에) 출력)를 확인한 후에는 입력을보고 출력 HFP Bluetooth를 사용할 수 있는지 여부를 판단 할 수 있습니다. 내 응용 프로그램에서 비슷한 문제가
BOOL isBtInputAvailable = NO;
NSArray *inputs = [[AVAudioSession sharedInstance] availableInputs];
for (AVAudioSessionPortDescription* port in inputs) {
if ([port.portType isEqualToString:AVAudioSessionPortBluetoothHFP]) {
isBtInputAvailable = YES;
break;
}
}
관련 문제
- 1. Silverlight 감지 장치
- 2. . NET에서 모바일 브라우저 장치 감지
- 3. iPhone에서 오디오 장치 선택
- 4. 서명되지 않은 실행 파일을 실행하여 Jailbroken IOS 장치 감지
- 5. LaTeX에서 출력 장치 감지
- 6. iOS SDK와 타사 오디오 편집기간에보고 된 오디오 길이가 왜 부적절합니까?
- 7. 오디오 스펙트럼 감지
- 8. 임베디드 시스템에서 오디오 감지
- 9. 웹 사이트 용 감지 장치
- 10. iOS 배경 오디오 아이콘
- 11. IOS 오디오 중단
- 12. iOS 내부 오디오 녹음
- 13. 오디오 장치, 스피커 설정 변경
- 14. 오디오 입력 장치 나열 - VBA
- 15. iPhone - 근처의 블루투스 장치 감지
- 16. 내 네트워크에 연결된 장치 감지
- 17. xcode로 장치 감지! {iPhone SDK}
- 18. Tkinter 및 USB 장치 감지
- 19. 오디오 또는 비디오 감지 라이브러리
- 20. IOS 힘 장치 회전 여기
- 21. 회전 애니메이션없이 IOS 회전 장치
- 22. 녹음 된 오디오 파일
- 23. iOS 웹 앱의 배경 오디오
- 24. 백그라운드에서 청크 오디오 녹음 iOS
- 25. 시스템에 연결된 오디오 입력 장치 및 출력 장치 검색
- 26. iOS 사용자 감지 터치 릴리스
- 27. OSX 10.6에서 첨부 된 iOS/iPod과 프로그래밍 방식으로 상호 작용합니다.
- 28. 오디오 대기 시간 OpenAL 또는 RemoteIO 오디오 장치
- 29. Windows에서 전체 오디오 장치 이름 가져 오기
- 30. 플래시 플레이어 오디오 출력 장치 변경
, 내 응용 프로그램이 제대로 스트림을 재생하지만 오디오 출력 (분리 헤드폰)을 변경하는 경우, 그것은 재생을 중지 .. u는 변경 될 때 오디오 출력을 감지하는 방법을 figureout 않았다? –
예, 경로 변경을 감지하는 것은 AudioSessionPropertyListener 콜백을 통해 수행됩니다. 그런 다음 속성 수신기는 AudioSessionAddPropertyListener 함수를 통해 등록됩니다. 그러나 그것은 제가 위에서 한 것을 시도한 것이 아닙니다. 내 앱에서 사용자에게 사용 가능한 라우팅 옵션을 올바르게 표시하기 위해 어떤 기기가 연결되어 있는지 감지해야합니다. – Cliff