ios 장치에는 대화 형 동영상이 있습니다. 동영상이 시작되면 (탭) 동영상 시작 부분에있는 사람이 헤드셋을 연결하라는 메시지를 표시합니다. 연결되어 있으면 동영상이 자동으로 스토리로 바로 넘어갑니다 (비디오 스토리로 곧바로 이동). 나는 어떻게해야합니까? 그리고 코드를 작성하는 방법?헤드셋이 iOS 장치에 연결되어 있는지 감지합니다.
답변
먼저 AudioRoute 변경 등록을해야합니다 : -
여기AudioSessionAddPropertyListener (kAudioSessionProperty_AudioRouteChange,
audioRouteChangeListenerCallback,
self);
당신은 당신의 경로를 변경하는 이유를 묘사 할 수 있습니다 : -
CFDictionaryRef routeChangeDictionary = inPropertyValue;
CFNumberRef routeChangeReasonRef =
CFDictionaryGetValue (routeChangeDictionary,
CFSTR (kAudioSession_AudioRouteChangeKey_Reason));
SInt32 routeChangeReason;
CFNumberGetValue (routeChangeReasonRef, kCFNumberSInt32Type, &routeChangeReason);
if (routeChangeReason == kAudioSessionRouteChangeReason_OldDeviceUnavailable)
{
// your statements for headset unplugged
}
if (routeChangeReason == kAudioSessionRouteChangeReason_NewDeviceAvailable)
{
// your statements for headset plugged
}
이미 연결되어있는 헤드셋으로 사용자가 시작 (탭)하면 어떻게됩니까? 설정은 기본적으로 설정된다는 의미입니까? 내 말은, [routeChangeReason == kAudioSessionRouteChangeReason_HeadsetUnavailable]이라고 쓸 수 있나요? – user1369476
routeChangeReason == kAudioSessionRouteChangeReason_NewDeviceAvailable 이미 플러그가 꽂혀있는 헤드셋에 대해이 문장을 제공했습니다. –
고마워요.하지만이 알고리즘의 의미는 다음과 같습니다. 처음에 플러그를 뽑으면 5 초 후에 B를 재생합니다 (누군가 헤드셋을 가지고 있지 않기 때문에) 헤드셋이 위의 질문에 따라 연결되면 B를 재생 한 다음 B를 똑바로 재생합니다. 비디오를 재생 한 다음 재생 중에 플러그를 뽑으면 곧바로 재생 한 다음 외부 스피커로 이동합니다. – user1369476
이 될 수있는 다른 방법 :
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
{
...
}
else if (CFStringCompare(newRoute, CFSTR("SpeakerAndMicrophone"), NULL) == kCFCompareEqualTo){
....
}
}
먼저 장치가 헤드셋에 연결되어 있는지 확인합니다.
+(BOOL)isHeadsetPluggedIn {
AVAudioSessionRouteDescription* route = [[AVAudioSession sharedInstance] currentRoute];
for (AVAudioSessionPortDescription* desc in [route outputs]) {
if ([[desc portType] isEqualToString:AVAudioSessionPortHeadphones])
return YES;
}
return NO;
}
그런 다음 bool 값을 기반으로 자신의 조건을 작성하십시오. 아래처럼 뭔가 ... 당신이 화면에있을 때 헤드셋이 제거되면 알고 싶은 넣다
if (isHeadphonesConnected) {
//Write your own code here
}else{
}
은 또한 알림을 등록 할 수 있습니다.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(audioRoutingListenerCallback:)
name:AVAudioSessionRouteChangeNotification
object:nil];
- (void)audioRoutingListenerCallback:(NSNotification*)notification
{
NSDictionary *interuptionDict = notification.userInfo;
NSInteger routeChangeReason = [[interuptionDict valueForKey:AVAudioSessionRouteChangeReasonKey] integerValue];
switch (routeChangeReason) {
case AVAudioSessionRouteChangeReasonNewDeviceAvailable:
NSLog(@"Headphone/Line plugged in");
/*Write your own condition.*/
break;
case AVAudioSessionRouteChangeReasonOldDeviceUnavailable:
NSLog(@"Headphone/Line was pulled.");
/*Write your own condition.*/
break;
case AVAudioSessionRouteChangeReasonCategoryChange:
// called at start - also when other audio wants to play
break;
}
}
- 1. 헤드셋이 연결되어 있는지 확인하는 방법은 무엇입니까?
- 2. 소켓 프로그램이 자체에 연결되어 있는지 여부를 감지합니다.
- 3. 유선 헤드셋이 전화에 연결되어 있는지 확인하는 방법이 있습니까
- 4. 외부 헤드셋이 iPhone에 연결되어 있는지 확인하는 방법은 무엇입니까?
- 5. 헤드셋이 삽입되어 있는지 확인하십시오.
- 6. iOS - iDevice에 전원이 연결되어 있는지 감지하는 방법
- 7. 트위터가 iOS 5에 연결되어 있는지 확인하십시오.
- 8. 블루투스 장치가 iPad 응용 프로그램에 연결되어 있는지 감지합니다.
- 9. Windows Phone 7이 데스크톱 Zune 소프트웨어에 연결되어 있는지 감지합니다.
- 10. Android 2.2는 응용 프로그램 시작시 내 Bluetooth 헤드셋이 연결되어 있는지 여부를 알려줍니다.
- 11. libmemcached - 연결되어 있는지 확인합니다.
- 12. 인터넷이 연결되어 있는지 감지
- 13. Android가 자동차에 있는지 감지합니다.
- 14. 블루투스 장치가 연결되어 있는지 감지하는 방법
- 15. 스피커가 연결되어 있는지 검색 하시겠습니까?
- 16. Android : 헤드폰이 연결되어 있는지 확인
- 17. 무선 AP가 연결되어 있는지 확인하십시오.
- 18. Dojo - 이벤트가 연결되어 있는지 확인하십시오.
- 19. 두 정점이 연결되어 있는지 확인
- 20. TcpClient가 연결되어 있는지 어떻게 확인합니까?
- 21. js 사용자가 연결되어 있는지 확인하십시오.
- 22. JavaScript를 사용하여 ios 장치에 앱이 설치되어 있는지 확인하는 방법은 무엇입니까?
- 23. X11 창에 장식이 있는지 감지합니다.
- 24. 방향이 틀린 그래프에주기가 있는지 감지합니다.
- 25. 페이지가 웹캠의 프레임에 있는지 감지합니다.
- 26. google.maps.MarkerImage 객체가 비어 있는지 감지합니다.
- 27. 보기의 WebView가 이미로드되어 있는지 감지합니다.
- 28. DST가 현재 활성화되어 있는지 감지합니다.
- 29. 나가는 포트가 차단되어 있는지 감지합니다.
- 30. 카메라가 이미 열려 있는지 감지합니다.
http://i48.tinypic.com/1g3lgl.jpg 은 PIC에 블러 부를 무시 – user1369476
http://stackoverflow.com/questions/3575463/detecting-if-headphones- [이 (참고 iphone에 연결됨) 링크. –
AudoRoute 변경 사항을 등록하는 방법은 무엇입니까? – user1369476