private static bool IsWvga
{
get { return App.Current.Host.Content.ScaleFactor == 100; }
}
 
private static bool IsWxga
{
get { return App.Current.Host.Content.ScaleFactor == 160; }
}
 
private static bool Is720p
{
get { return App.Current.Host.Content.ScaleFactor == 150; }
}

硬件配置

摄像头(Camera)

#if WINDOWS_PHONE_8   // Windows Phone 8
try
{
BackCameraExist = PhotoCaptureDevice.AvailableSensorLocations.Contains<CameraSensorLocation>(CameraSensorLocation.Back);
FrontCameraExist = PhotoCaptureDevice.AvailableSensorLocations.Contains<CameraSensorLocation>(CameraSensorLocation.Front);
}
catch (System.Exception e)
{
MessageBox.Show(e.Message);
}
 
#else // Windows Phone 7
FrontCameraExist = Microsoft.Devices.Camera.IsCameraTypeSupported(Microsoft.Devices.CameraType.FrontFacing);
BackCameraExist = Microsoft.Devices.Camera.IsCameraTypeSupported(Microsoft.Devices.CameraType.Primary);
#endif

闪光灯(Flash)

    if (BackCameraExist)
{
var cam = new Microsoft.Devices.PhotoCamera(Microsoft.Devices.CameraType.Primary);
BackCameraFlashExist = cam.IsFlashModeSupported(Microsoft.Devices.FlashMode.On);
}
 
if (FrontCameraExist)
{
var cam = new Microsoft.Devices.PhotoCamera(Microsoft.Devices.CameraType.FrontFacing);
FrontCameraFlashExist = cam.IsFlashModeSupported(Microsoft.Devices.FlashMode.On);
}

罗盘(Compass)

#if WINDOWS_PHONE_8  // Windows Phone 8
if (Compass.GetDefault() != null)
{
CompassExist = true;
}
 
#else // Windows Phone 7
CompassExist = Microsoft.Devices.Sensors.Compass.IsSupported;
#endif

NFC

#if WINDOWS_PHONE_8  // Windows Phone 8
// ID_CAP_NETWORKING ID_CAP_PROXIMITY
if (ProximityDevice.GetDefault() != null)
{
ProximityExist = true;
}
#else // Windows Phone 7
// Windows Phone 7 不支持NFC功能
#endif

陀螺仪(Gyroscope)

#if WINDOWS_PHONE_8  // Windows Phone 8
// 目前Gyrometer.GetDefault()在陀螺仪不支持时会抛出异常,以MSDN文档描述的返回null不符。
try
{
if (Gyrometer.GetDefault() != null)
{
GyroscopeExist = true;
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
 
#else // Windows Phone 7
GyroscopeExist = Microsoft.Devices.Sensors.Gyroscope.IsSupported;
#endif

加速传感器(Accelerometer)

#if WINDOWS_PHONE_8  // Windows Phone 8
if (Accelerometer.GetDefault() != null)
{
AccelerometerExist = true;
}
 
#else // Windows Phone 7
AccelerometerExist = Microsoft.Devices.Sensors.Accelerometer.IsSupported;
#endif

磁倾仪传感器(Inclinometer)

#if WINDOWS_PHONE_8  // Windows Phone 8
if (Windows.Devices.Sensors.Inclinometer.GetDefault() != null)
{
InclinometerExist = true;
}
 
#else // Windows Phone 7
// Windows Phone 7 不支持
#endif

方向传感器(Orientation)

#if WINDOWS_PHONE_8  // Windows Phone 8
if (Windows.Devices.Sensors.OrientationSensor.GetDefault() != null)
{
OrientationSensorExist = true;
}
 
#else // Windows Phone 7
OrientationSensorExist = Microsoft.Devices.Sensors.Motion.IsSupported;
#endif

震动设备(VibrationDevice)

#if WINDOWS_PHONE_8  // Windows Phone 8
if (Windows.Phone.Devices.Notification.VibrationDevice.GetDefault() != null)
{
VibrationDeviceExist = true;
}
 
#else // Windows Phone 7
if (Microsoft.Devices.VibrateController.Default != null)
{
VibrationDeviceExist = true;
}
#endif

电量传感器(Battery)

#if WINDOWS_PHONE_8  // Windows Phone 8
if (Windows.Phone.Devices.Power.Battery.GetDefault() != null)
{
BatterySensorExist = true;
}
 
#else // Windows Phone 7
// Windows Phone 7 不支持
#endif

SD卡(SD Card)

#if WINDOWS_PHONE_8 // Windows Phone 8
var devices = await ExternalStorage.GetExternalStorageDevicesAsync();
SDCardExist = (devices != null && devices.Count() > 0);
#else // Windows Phone 7
// Windows Phone 7 不支持SD卡
#endif

内存判断(Memory)

#if WINDOWS_PHONE_8 // Windows Phone 8
MemoryCurrentUsed = Windows.Phone.System.Memory.MemoryManager.ProcessCommittedBytes.ToString();
MemoryMaxAvailable = Windows.Phone.System.Memory.MemoryManager.ProcessCommittedLimit.ToString();
 
#else // Windows Phone 7
// 通过DeviceExtendedProperties类获取
#endif

Windows Phone 应用的功能和硬件要求

在获取设备硬件信息之前,你还 需要在清单文件中标记你的应用需要的功能(CAPABILITIES) 。另外你还 可以在清单文件中指定应用的硬件要求(REQUIREMENTS),以确保只有满足硬件要求的设备才能在应用商店中查看并下载安装你的应用

要了解应用功能和硬件要求,可以在下面链接查看: http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/jj206936.aspx

应用清单文件

文件路径:工程目录->Properties->WMAppManifest.xml

应用清单文件设计器(Windows Phone 8)

我们可以通过清单文件设计器来标记应用的功能和硬件要求,但是在设计器中不能够标记全部的功能或硬件要求(比如ID_REQ_MEMORY_300),这时你就需要用“查看代码”的方式打开WMAppManifest.xml文件进行编辑。

示例代码

File:HardwareFinder.zip

 
This page was last modified on 18 July

Windows Phone 硬件检测的更多相关文章

  1. Windows下如何检测用户修改了系统时间并且把系统时间改回来

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Windows下如何检测用户修改了系统时间并且把系统时间改回来.

  2. 星语硬件检测专家 V4.3 官方版

    软件名称: 星语硬件检测专家 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 15.8MB 图片预览: 软件简介: 星语硬件检测专家是一款功能非常强大的硬件 ...

  3. 801硬件检测工具DragonHD的使用

    801硬件检测工具DragonHD的使用 2018/11/28 13:39 版本:V1.0 开发板:SC3817R 1.客户要认证器件,使用了全志官方的工具:DragonHD.exe 打开之后可以见用 ...

  4. linux和Windows双系统让 Windows 把硬件时间当作 UTC

    linux和Windows双系统让 Windows 把硬件时间当作 UTC Windows设置如下:开 始->运行->CMD,打开命令行程序(Vista则要以管理员方式打开命令行程序方可有 ...

  5. DirectX11 With Windows SDK--20 硬件实例化与视锥体裁剪

    前言 这一章将了解如何在DirectX 11利用硬件实例化技术高效地绘制重复的物体,以及使用视锥体裁剪技术提前将位于视锥体外的物体进行排除. 在此之前需要额外了解的章节如下: 章节回顾 18 使用Di ...

  6. windows下脚本检测tomcat是否启动,没有启动则启动

    最近有个服务需要部署到windows server2003上面,机房没有windows ser的机器,没办法搞了个阿里云服务,购买的配置比较低, 不知道什么原因,tomcat启动后总是容易自动退出,搞 ...

  7. USB插入电脑的硬件检测和枚举流程

    USB协议定义了设备的6种状态,仅在枚举过程种,设备就经历了4个状态的迁移:上电状态(Powered),默认状态(Default),地址状态(Address)和配置状态(Configured)(其他两 ...

  8. nagios对windows流量的检测

    windows下用于和 nagios 整合监控的方式主要有三种:nsclient++ .nrpe_nt.SNMP.三者各自的特点主要如下: 1.nsclient++比较成熟稳定,文档也丰富,内置很多了 ...

  9. windows查看硬件信息系统信息

    rem 查看cpu wmic cpu list briefrem 查看物理内存wmic memphysical list briefrem 查看逻辑内存wmic memlogical list bri ...

随机推荐

  1. C#父类子类对象关系

    案例: 主要有Vehicle.cs  Airplane.cs   Car.cs  3个类. Car和Airplane都继承与Vehicle类.Vehicle中Drive为虚方法,可在子类中重写,父类引 ...

  2. HDOJ 1874

    畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  3. linux ls正则表达式

    ls就是默认排序的. 所以: ls只支持通配符,不支持正则,所以单纯用ls是不能实现的. 一些正则过滤操作需要结合支持正则的命令如grep.sed或awk. 例如:ls | grep "[0 ...

  4. C#模拟POST登录cnblogs并发布文章

    用到的工具FireFox的Firebugs插件 打开网络功能进行抓包 数据如下 可以得知POST的数据为: __EVENTTARGET=&__EVENTARGUMENT=&__VIEW ...

  5. Android中自定义Activity和Dialog的位置大小背景和透明度等demo

    1.自定义Activity显示样式 先在res/values下建colors.xml文件,写入: <?xml version="1.0" encoding="utf ...

  6. SCOPE_IDENTITY的作用

    SCOPE_IDENTITY返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值.一个作用域就是一个模块——存储过程.触发器.函数或批处理.因此,如果两个语句处于同一个存储 ...

  7. Markdown 语法速查表

      Markdown 语法速查表 1 标题与文字格式 标题 # 这是 H1 <一级标题> ## 这是 H2 <二级标题> ###### 这是 H6 <六级标题> 文 ...

  8. Linux UGO

    U=USER G=GROUP O=OTHERS 最前面的’-’,表示文件为普通类型 第一组的‘rw-’,表示文件属主对文件具有读和写权限,但没有执行权限 第二组的’rw-’,表示同组其他用户对文件具有 ...

  9. iptables 开启80端口

    [root@v01-svn-test-server online]# iptables -F#清空规则 [root@v01-svn-test-server online]# iptables -L# ...

  10. Hierachy Viewer 使用 monitor命令

    使用 Hierachy Viewer 可视化调试工具 Hierachy Viewer 能很方便地在开发者设计,调试和调整界面时,快速定位问题,解决问题,提高开发效率. Hierarchy Viewer ...