如何检测是在Windows 10 Universal Application中使用isTypePresent可以使用相机

时间:2015-06-12 17:36:48

标签: c# windows windows-10 windows-10-mobile

在开发适用于Windows 10的Universal Application时,建议您使用IsTypePresent检测设备特定的硬件。 (Microsoft将此功能称为' Light up')。检查设备后退按钮的example from the documentation是:

if(Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons")) Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;

这里很清楚,字符串"Windows.Phone.UI.Input.HardwareButtons"作为参数传递给IsTypePresent()方法。

我想知道是否有一种简单的方法来识别我可以用于其他硬件的其他字符串,特别是相机。

1 个答案:

答案 0 :(得分:9)

IsTypePresent不用于检测硬件存在,但用于检测API存在。在您的代码段中,它会检查应用程序是否存在要调用的HardwareButtons类,而不是设备是否有硬件按钮(在这种情况下,它们可能会在一起,但这不是什么IsTypePresent正在寻找)。

与相机一起使用的MediaCapture类是Universal API契约的一部分,因此始终存在且可调用。如果没有合适的音频或视频设备,初始化将失败。

要查找硬件设备,可以使用Windows.Devices.Enumeration命名空间。这是一个查询相机并查找第一个ID的快速代码段。

var devices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(Windows.Devices.Enumeration.DeviceClass.VideoCapture);

if (devices.Count < 1)
{
    // There is no camera. Real code should do something smart here.
    return;
}

// Default to the first device we found
// We could look at properties like EnclosureLocation or Name
// if we wanted a specific camera
string deviceID = devices[0].Id;

// Go do something with that device, like start capturing!