有没有办法检测到Windows Store App上的麦克风被禁用?

时间:2013-04-06 21:32:10

标签: windows-store-apps

我想检测用户是否即时关闭了Windows应用商店应用中的麦克风。我知道这是可能的,因为Audio Recorder使用它。但是如何?

更新:我希望被麦克风被禁用的事件通知。

这与此有关吗? http://msdn.microsoft.com/en-us/library/windows/desktop/dd370810(v=vs.85).aspx

enter image description here

3 个答案:

答案 0 :(得分:2)

你可以这样检查。

bool IsMicAvailable = true;
try
{
    var MyMediaCapture = new MediaCapture();
    var settings = new MediaCaptureInitializationSettings();
    settings.StreamingCaptureMode = StreamingCaptureMode.Audio;
    await MyMediaCapture.InitializeAsync(settings);
}
catch (Exception)
{
    IsMicAvailable = false;
}

if(IsMicAvailable)
    //TODO : The logic of recording audio
else
    //TODO : Display error message

基本上,如果麦克风权限已关闭,则会发生System.UnauthorizedAccessException,如果未连接麦克风,则会发生System.Exception&它包含消息Exception from HRESULT: 0xC00DABE0

答案 1 :(得分:0)

唯一的方法是进行initalizeAsync并注意错误。有关详细信息,请阅读http://msdn.microsoft.com/en-us/library/windows/apps/hh768223.aspx

关于你的后一个问题。不,没有办法知道许可状态已经改变。

答案 2 :(得分:0)

var deviceAccessInfo = DeviceAccessInformation.CreateFromDeviceClass(DeviceClass.AudioCapture);
deviceAccessInfo.AccessChanged += OnDeviceAccessChanged;

void OnDeviceAccessChangedDeviceAccessInformation sender, DeviceAccessChangedEventArgs args)
{
    if (args.Status == DeviceAccessStatus.DeniedByUser)
    ; // handle
    else if (args.Status == DeviceAccessStatus.Allowed)
    ; // handle
}