我想检测用户是否在运行中关闭了 Windows 应用商店应用程序上的麦克风。我知道这是可能的,因为 Audio Recorder 使用它。但是怎么做?
更新:我希望收到有关麦克风被禁用的事件的通知。
这有什么关系吗?http://msdn.microsoft.com/en-us/library/windows/desktop/dd370810(v=vs.85).aspx
我想检测用户是否在运行中关闭了 Windows 应用商店应用程序上的麦克风。我知道这是可能的,因为 Audio Recorder 使用它。但是怎么做?
更新:我希望收到有关麦克风被禁用的事件的通知。
这有什么关系吗?http://msdn.microsoft.com/en-us/library/windows/desktop/dd370810(v=vs.85).aspx
你可以这样检查。
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
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
}
唯一的方法是执行 initalizeAsync 并注意错误。阅读http://msdn.microsoft.com/en-us/library/windows/apps/hh768223.aspx了解更多信息。
关于你的后一个问题。不,无法得知权限状态已更改。