1

我想检测用户是否在运行中关闭了 Windows 应用商店应用程序上的麦克风。我知道这是可能的,因为 Audio Recorder 使用它。但是怎么做?

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

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

在此处输入图像描述

4

3 回答 3

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

于 2013-04-08T06:39:24.683 回答
2
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
}
于 2017-10-30T17:02:12.460 回答
0

唯一的方法是执行 initalizeAsync 并注意错误。阅读http://msdn.microsoft.com/en-us/library/windows/apps/hh768223.aspx了解更多信息。

关于你的后一个问题。不,无法得知权限状态已更改。

于 2014-06-23T13:20:11.260 回答