我想检测用户是否即时关闭了Windows应用商店应用中的麦克风。我知道这是可能的,因为Audio Recorder使用它。但是如何?
更新:我希望被麦克风被禁用的事件通知。
这与此有关吗? http://msdn.microsoft.com/en-us/library/windows/desktop/dd370810(v=vs.85).aspx
答案 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
}