Tôi đang cố gắng tìm ra cách phát hiện xem thiết bị âm thanh nào được kết nối trên iphone/ipad/ipod. Tôi biết tất cả về các cuộc gọi đường âm thanh và cuộc gọi lại thay đổi tuyến đường nhưng những điều này không cho tôi biết bất kỳ điều gì về nội dung được đính kèm. Họ chỉ báo cáo nơi âm thanh hiện đang định tuyến. Tôi cần phải biết, ví dụ, nếu tai nghe và/hoặc bluetooth vẫn được gắn trong khi âm thanh được định tuyến thông qua loa. Hoặc, ví dụ: nếu người dùng cắm tai nghe trong khi sử dụng bluetooth thì hãy quyết định ngắt kết nối bluetooth, tôi cần biết rằng bluetooth bị ngắt kết nối ngay cả khi âm thanh vẫn đang định tuyến qua tai nghe.Phát hiện thiết bị âm thanh đính kèm iOS
Trả lời
Bạn có thể nhận được từ các thuộc tính AudioSession danh sách các InputSources và OutputDestinations. Kiểm tra các thuộc tính Session:
kAudioSessionProperty_InputSources
kAudioSessionProperty_OutputDestinations
Và để truy vấn các thông tin chi tiết của mỗi, bạn có thể sử dụng:
kAudioSessionProperty_InputSource
kAudioSessionProperty_OutputDestination
Trong trường hợp của iOS 5 bạn nên sử dụng:
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)
}
Thật không may , như iOS11, có vẻ như không có API để nhận danh sách các thiết bị đầu ra hiện tại một cách đáng tin cậy - ngay sau khi thay đổi tuyến đường hiện tại, bạn chỉ thấy 1 thiết bị (hiện được định tuyến) qua AVAu dioSession's currentRoute.outputs
, mặc dù nhiều thiết bị vẫn có thể được đính kèm.
Tuy nhiên, đối đầu vào, và bao gồm các thiết bị Bluetooth với hồ sơ HFP, nếu chế độ âm thanh phiên thích hợp được sử dụng (AVAudioSessionModeVoiceChat
hoặc AVAudioSessionModeVideoChat
chẳng hạn), người ta có thể có được danh sách của các đầu vào có sẵn thông qua AVAudioSession của availableInputs
, và những đầu vào được liệt kê ở đó ngay cả khi thiết bị đó không phải là tuyến đang hoạt động - điều này rất hữu ích khi người dùng đang thực hiện ghi đè thủ công qua số MPVolumeView
từ Bluetooth sang loa, và từ HFP là IO 2 chiều (có cả hai đầu vào và đầu ra), bạn có thể đánh giá liệu đầu ra HFP Bluetooth vẫn có sẵn bằng cách xem các đầu vào.
BOOL isBtInputAvailable = NO;
NSArray *inputs = [[AVAudioSession sharedInstance] availableInputs];
for (AVAudioSessionPortDescription* port in inputs) {
if ([port.portType isEqualToString:AVAudioSessionPortBluetoothHFP]) {
isBtInputAvailable = YES;
break;
}
}
- 1. Chọn thiết bị Âm thanh trên iPhone
- 2. Phát âm thanh bất kể mức âm lượng thiết bị
- 3. iOS: Thay đổi Âm lượng Thiết bị
- 4. Phát hiện iOS Simulator và thiết bị iOS
- 5. Âm thanh mô phỏng iOS
- 6. android: Phát hiện mức âm thanh
- 7. pdf dưới dạng tệp đính kèm email trong thiết bị iOS
- 8. Cách xử lý phát âm thanh nền trong khi thiết bị iOS bị khóa hoặc trên một ứng dụng khác?
- 9. Cách tải tuyến đường hoặc tập tin âm thanh của thiết bị âm thanh từ thiết bị trong Android?
- 10. iOS: Thiết bị âm thanh Thao tác điều khiển từ xa AudioXuffer (tức là hiệu ứng âm thanh từ micrô)
- 11. Làm cách nào để có được mức âm thanh hiện tại của thiết bị đầu ra âm thanh hiện tại?
- 12. iOS âm thanh Cắt
- 13. Phát (và phát lại) âm thanh trên thiết bị di động safari
- 14. Phát hiện âm thanh Bpm Thư viện
- 15. Âm thanh nền iOS dừng khi màn hình bị khóa
- 16. Ghi lại âm thanh iOS
- 17. iOS: gửi email với tập tin đính kèm thêm một đính kèm (.txt) nộp tự động
- 18. Ghi và phát âm thanh đồng thời trong iOS
- 19. iOS: Âm thanh và video từ Airplay
- 20. Phát âm thanh có các nút điều khiển trong iOS
- 21. Khung âm thanh: luồng, chiến lược, thiết bị
- 22. Phát hiện hướng thiết bị
- 23. Thiết bị Android nhận được thiết bị âm thanh tổng thể trong pcm
- 24. Cắt âm thanh với iOS
- 25. iOS: Kiểm soát âm lượng phần cứng thiết bị
- 26. Âm thanh luồng Android tới các thiết bị khác
- 27. Cách sử dụng Thiết bị âm thanh trên iPhone
- 28. Phát âm thanh trên iPad
- 29. Ghi âm thanh vào đĩa từ thiết bị IO
- 30. Làm thế nào để phát hiện khi một thiết bị âm thanh đã được cắm (windows vista) trong C#
Tôi gặp vấn đề tương tự trong ứng dụng, nếu tôi thay đổi đầu ra âm thanh (tai nghe chưa cắm), nó dừng phát .. bạn có biết cách phát hiện khi đầu ra âm thanh bị thay đổi không? –
Có, phát hiện thay đổi tuyến đường được thực hiện thông qua gọi lại AudioSessionPropertyListener. Trình nghe thuộc tính sau đó được đăng ký thông qua chức năng AudioSessionAddPropertyListener. Tuy nhiên đó không phải là những gì tôi đã cố gắng làm ở trên. Trong ứng dụng của tôi, tôi cần phải phát hiện thiết bị nào được kết nối để hiển thị chính xác các tùy chọn định tuyến sẵn có cho người dùng. – Cliff