如何在 Windows 10 通用应用程序中使用 isTypePresent 检测相机是否可用
How to detect is a camera is available using isTypePresent in a Windows 10 Universal Application
在为 Windows 10 开发通用应用程序时,我们鼓励您使用 IsTypePresent
检测特定于设备的硬件。 (Microsoft 将此功能称为“Light up'). An 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()
方法。
我想知道是否有一种简单的方法来识别可用于其他硬件(尤其是相机)的其他字符串。
IsTypePresent 不用于检测硬件存在,而是用于检测 API 存在。在您的代码片段中,它检查 HardwareButtons class 是否存在供应用程序调用,而不是设备是否具有硬件按钮(在这种情况下,它们可能会一起出现,但这不是 IsTypePresent 正在寻找的)。
与相机一起使用的 MediaCapture class 是通用 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!
在为 Windows 10 开发通用应用程序时,我们鼓励您使用 IsTypePresent
检测特定于设备的硬件。 (Microsoft 将此功能称为“Light up'). An 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()
方法。
我想知道是否有一种简单的方法来识别可用于其他硬件(尤其是相机)的其他字符串。
IsTypePresent 不用于检测硬件存在,而是用于检测 API 存在。在您的代码片段中,它检查 HardwareButtons class 是否存在供应用程序调用,而不是设备是否具有硬件按钮(在这种情况下,它们可能会一起出现,但这不是 IsTypePresent 正在寻找的)。
与相机一起使用的 MediaCapture class 是通用 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!