Как я могу обнаружить из моего приложения, если внешний микрофон подключен к устройству?Как я могу обнаружить внешний микрофон в iOS?
2
A
ответ
3
Попробуйте это:
let route = AVAudioSession.sharedInstance().currentRoute
for port in route.outputs {
if port.portType == AVAudioSessionPortHeadphones {
// Headphones located
}
}
EDIT: сообщение OP изменение вопрос -
Когда приложение работает вам нужно зарегистрироваться AVAudioSessionRouteChangeNotification
, чтобы прослушать изменения следующим образом:
NSNotificationCenter.defaultCenter().addObserver(self, selector:"audioRouteChangeListener:", name: AVAudioSessionRouteChangeNotification, object: nil)
dynamic private func audioRouteChangeListener(notification:NSNotification) {
let audioRouteChangeReason = notification.userInfo![AVAudioSessionRouteChangeReasonKey] as UInt
switch audioRouteChangeReason {
case AVAudioSessionRouteChangeReason.NewDeviceAvailable.rawValue:
println("headphone plugged in")
case AVAudioSessionRouteChangeReason.OldDeviceUnavailable.rawValue:
println("headphone pulled out")
default:
break
}
}
0
С быстрым 2.0 этот код работает
func audioRouteChangeListenerCallback (notif: NSNotification){
let userInfo:[NSObject:AnyObject] = notif.userInfo!
let routChangeReason = UInt((userInfo[AVAudioSessionRouteChangeReasonKey]?.integerValue)!)
switch routChangeReason {
case AVAudioSessionRouteChangeReason.NewDeviceAvailable.rawValue:
print("Connected");
break;
case AVAudioSessionRouteChangeReason.OldDeviceUnavailable.rawValue:
do {
try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker)
} catch _ {
}
print("Connected");
break;
case AVAudioSessionRouteChangeReason.CategoryChange.rawValue:
break;
default:
break;
}
}
0
С AVAudioSession
вы можете перечислить availableInputs
let session = AVAudioSession.sharedInstance()
_ = try? session.setCategory(AVAudioSessionCategoryRecord, withOptions: [])
print(AVAudioSession.sharedInstance().availableInputs)
Он возвращает массив AVAudioSessionPortDescription
. И вы можете иметь тип микрофона типа «проводной или встроенный» типа portType.
PS: Он работает только на реальном устройстве, а не на симуляторе.
1
swift3:
NotificationCenter.default.addObserver(self, selector: #selector(audioRouteChangeListener(notification:)), name: NSNotification.Name.AVAudioSessionRouteChange, object: nil)
@objc private func audioRouteChangeListener(notification: Notification) {
let rawReason = notification.userInfo![AVAudioSessionRouteChangeReasonKey] as! UInt
let reason = AVAudioSessionRouteChangeReason(rawValue: rawReason)!
switch reason {
case .newDeviceAvailable:
print("headphone plugged in")
case .oldDeviceUnavailable:
print("headphone pulled out")
default:
break
}
}
Смежные вопросы
- 1. обнаружить удар в Android микрофон
- 2. Как обнаружить, присутствует ли микрофон
- 3. как обнаружить разрешение на микрофон всплывает
- 4. может iPhone обнаружить цифровой сигнал через микрофон?
- 5. Как использовать внешний микрофон на Android?
- 6. Как проверить, используется ли внешний микрофон через ADB
- 7. (iOS + StoreKit) Могу ли я обнаружить, когда я в песочнице?
- 8. Как я могу обнаружить любой объект с видеокамеры в IOS?
- 9. HTML5 Аудиозапись не работает Внешний микрофон
- 10. Как я могу обнаружить скрипач?
- 11. Как я могу обнаружить эти звуковые аномалии?
- 12. Как заставить внешний микрофон и динамики телефона в Android?
- 13. Как я могу переопределить микрофон по умолчанию в Flex?
- 14. как обнаружить внешний кадр объекта
- 15. Могу ли я настроить внешний вид push-уведомления в iOS?
- 16. Как я могу обнаружить касание в cocos2d?
- 17. Как я могу обнаружить onKeyUp в AngularJS?
- 18. Имитировать микрофон (виртуальный микрофон)
- 19. Как обнаружить emoji iOS
- 20. iOS: микрофон устройства доступа в фоновом режиме
- 21. Как я могу обнаружить «путь» встроенного ресурса?
- 22. Как я могу обнаружить нефункциональные события-указатели?
- 23. Как я могу обнаружить устройство пользователя?
- 24. TcpListener: Как я могу обнаружить разрыв клиента?
- 25. Как я могу обнаружить различные сигналы управления?
- 26. Как я могу обнаружить, когда черепица проходит?
- 27. Как я могу обнаружить Javascript безделье?
- 28. Как я могу обнаружить незападные символы?
- 29. Как я могу обнаружить изменения у ребенка
- 30. Как обнаружить пользовательский внешний веб-сайт
, как я могу определить, если микрофон подключен к устройству, если приложение работает ?. Я хочу, чтобы каждый раз, когда я включаю микрофон, я хочу получать мгновенное уведомление. –
См. Мой обновленный комментарий @ GökhanT! – Abhinav
Спасибо @Abhinav –