2012-03-06 26 views
7

Tôi đang viết một ứng dụng sẽ ghi lại âm thanh từ micrô. Vấn đề của tôi là tôi cần phải biết khi nào người dùng cắm vào giắc cắm và tháo giắc cắm ra.Jack Sensing in C#

Tôi đã xem xét Win32_SoundDevice Lớp WMI và dường như với tôi không có tài sản nào như vậy mà tôi có thể kiểm tra trạng thái của Jack.

Sau đó, tôi tìm thấy RegisterEndpointNotificationCallback trong IMMDeviceEnumerator mà dường như làm những gì tôi cần nhưng tôi không có đầu mối làm thế nào để làm điều này trong C#. Có ai biết cách sử dụng phương pháp MMDeviceEnumerator để kiểm tra trạng thái cổng âm thanh không? Bất kỳ trợ giúp đánh giá cao.

Trả lời

1

Bạn có thể muốn xem dự án sau đó mã nguồn mở NAudio.

Tôi đã duyệt mã của họ và có vẻ như họ có một trình bao bọc Net. Cho số IMMDeviceEnumerator interface của bạn.

Vì dự án này nằm trong Giấy phép Công cộng của Microsoft nên có thể sử dụng được trong dự án của bạn.

0

Check-out với đoạn mã sau:

var enumerator = new MMDeviceEnumerator(); 
var d = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia); 
Console.WriteLine(d.Properties[new Guid("46d16a2c-5654-41c0-911e-7860d2bce7ee")].Value.ToString()); 

này trở lại tài sản của 1 (cắm) hoặc 0 (Unplugged) ..

Bạn phải có thư viện NAudio tham chiếu ..

+0

Tôi nhận được một tham chiếu "đối tượng không được thiết lập để một trường hợp của một đối tượng" lỗi trong hướng dẫn, các guid là gì? – kakopappa