2013-07-25 36 views
6

Tôi đã cố gắng để lấy danh sách các thiết bị có sẵn đầu vào âm thanh trên iPhone bằng cách sử dụng mã này:kAudioSessionProperty_InputSources thực sự tốt cho điều gì?

CFArrayRef arrayRef; 
UInt32 size = sizeof(arrayRef); 
OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_InputSources, &size, &arrayRef); 
assert(status == noErr); 
NSArray *array = (__bridge NSArray *)arrayRef; 

Các công trình cuộc gọi và trả về mà không có lỗi, nhưng các mảng kết quả luôn luôn là trống rỗng, không có vấn đề gì phần cứng Tôi đã kết nối với nó. Tôi đã thử hai tai nghe thông thường cho điện thoại di động, một tai nghe gốc từ Apple và một từ Samsung và hai loại micro USB (một iXY from RodeiM2X from Tascam), nhưng mảng luôn luôn trống. Vì vậy, tôi tự hỏi những loại nguồn đầu vào nào thực sự sẽ được liệt kê bởi tài sản này? Nó có thể sử dụng được không?

Bằng cách sử dụng gọi lại người nghe trên các tuyến âm thanh, tôi đã có thể xác minh rằng tất cả 4 thiết bị được phát hiện chính xác. Tôi cũng có thể ghi lại âm thanh với từng thiết bị, vì vậy tất cả chúng đều hoạt động bình thường. Tôi sử dụng iPhone 4S với iOS 6.1.3 (10B329).

Trả lời

2

Tôi rất mới lập trình âm thanh trên iPhone nên tôi không có câu trả lời cho câu hỏi về đặc tính cụ thể nào tốt, nhưng nếu bạn muốn danh sách đầu vào âm thanh, tôi nghĩ điều này sẽ hoạt động:

NSArray * ais = [[AVAudioSession sharedInstance] availableInputs]; 

Điều này cung cấp một mảng các đối tượng AVAudioSessionPortDescription.

for (id object in ais) { 
    AVAudioSessionPortDescription * pd = (AVAudioSessionPortDescription*)object; 
    NSLog(@"%@",pd.portName); 
} 
2

Thuộc tính bạn đang đề cập đến là chỉ cho các nguồn đầu vào âm thanh trong một phụ kiện âm thanh USB kèm theo thông qua kết nối camera iPad bộ, như đã đề cập trong AudioSessionServices tham chiếu lớp.

Để có được một mảng đó không phải là con số không, bạn sẽ cần phải thử nghiệm với nói một USB Audio Workstation mà cắm vào kết nối camera iPad bộ.

Đây là liên kết liệt kê một số phần cứng sử dụng bộ kết nối máy ảnh số iPad.

Connecting USB audio interfaces using the Apple iPad Camera Connection Kit.

Cũng từ các tài liệu tham khảo lớp

Nếu không có nguồn đầu vào âm thanh có sẵn từ các phụ kiện kèm theo, giá trị của tài sản này là một mảng trống.

Vì vậy, từ danh sách tìm thấy trong các liên kết ở trên (cuộn xuống danh sách của một số thiết bị tương thích phụ hướng), các thiết bị bạn sẽ quan tâm đến, mà mang lại một kết quả bằng không!, Sẽ có một số thiết bị mà cung cấp đầu vào âm thanh chẳng hạn như Nguyên tắc iO4, iO2 hoặc iO2 express.

CHỈNH SỬA: có thành tích trong câu trả lời được cung cấp bởi Shawn Hershey, liên quan đến việc sử dụng thay thế khách quan không được dùng nữa. Tuy nhiên, bạn sẽ quan tâm nhất đến thuộc tính port portType của lớp AVAudioSessionPortDescription. (có sẵn từ iOS 6.0) Hai hằng số quan tâm là - AVAudioSessionPortLineInAVAudioSessionPortUSBAudio. Đầu tiên được đề cập là cho đầu vào âm thanh thông qua kết nối dock, đó là cách micro thử nghiệm của bạn được đề cập kết nối.

Trong iOS 7.0 trở lên, bạn có thể truy vấn thuộc tính availableInputs của lớp AVAudioSession. Trong iOS 6, bạn chỉ có thể truy vấn thuộc tính currentRoute.

Tôi thấy điều này kỹ thuật Q & Một rất hữu ích - AVAudioSession - microphone selection

+1

Hình như bạn là đúng. "' kAudioSessionProperty_InputSources' "chỉ dành cho đầu vào âm thanh dựa trên USB. Đó là điều không may, vì không có cách nào không được dùng để nhận tất cả các đầu vào âm thanh thông qua các chức năng Core Foundation/C (không phải là Objective-C cụ thể). –

+0

@MichaelDautermann Cảm ơn bạn, tôi đồng ý rằng điều đó là không may, vì các lựa chọn thay thế cấp cao hơn sẽ mang lại nhiều chi phí hơn. – Bamsworld

+0

@MichaelDautermann và những người khác, bạn có thể cho tôi biết lựa chọn thay thế Mục tiêu-C nào có để có được các thiết bị đầu vào không kết nối máy ảnh không? Có phải đó là câu hỏi được Shawn Hershey đề cập trong câu trả lời cho câu hỏi này không? –

Các vấn đề liên quan