Windows Phone 硬件检测

深藏阁楼爱情的钟 2022-03-19 13:38 404阅读 0赞

Windows Phone 硬件检测

Jump to: navigation, search

介绍

随着Lumia的日益壮大,手机的硬件配置也越来越多样化,要想让你的应用在不同配置的手机上能更好的展现,作为开发者,你就不能不去了解一下手机的硬件配置。 Lumia系列WP8手机配置对比 并且,你还需要知道如何获取这些配置信息。

Windows Phone 8 手机分辨率

Hardware Finder 1.png

  1. private static bool IsWvga
  2. {
  3. get {
  4. return App.Current.Host.Content.ScaleFactor == 100; }
  5. }
  6. private static bool IsWxga
  7. {
  8. get {
  9. return App.Current.Host.Content.ScaleFactor == 160; }
  10. }
  11. private static bool Is720p
  12. {
  13. get {
  14. return App.Current.Host.Content.ScaleFactor == 150; }
  15. }

硬件配置

摄像头(Camera)

  1. #if WINDOWS_PHONE_8 // Windows Phone 8
  2. try
  3. {
  4. BackCameraExist = PhotoCaptureDevice.AvailableSensorLocations.Contains<CameraSensorLocation>(CameraSensorLocation.Back);
  5. FrontCameraExist = PhotoCaptureDevice.AvailableSensorLocations.Contains<CameraSensorLocation>(CameraSensorLocation.Front);
  6. }
  7. catch (System.Exception e)
  8. {
  9. MessageBox.Show(e.Message);
  10. }
  11. #else // Windows Phone 7
  12. FrontCameraExist = Microsoft.Devices.Camera.IsCameraTypeSupported(Microsoft.Devices.CameraType.FrontFacing);
  13. BackCameraExist = Microsoft.Devices.Camera.IsCameraTypeSupported(Microsoft.Devices.CameraType.Primary);
  14. #endif

罗盘(Compass)

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

NFC

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

陀螺仪(Gyroscope)

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

加速传感器(Accelerometer)

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

磁倾仪传感器(Inclinometer)

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

方向传感器(Orientation)

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

震动设备(VibrationDevice)

  1. #if WINDOWS_PHONE_8 // Windows Phone 8
  2. if (Windows.Phone.Devices.Notification.VibrationDevice.GetDefault() != null)
  3. {
  4. VibrationDeviceExist = true;
  5. }
  6. #else // Windows Phone 7
  7. if (Microsoft.Devices.VibrateController.Default != null)
  8. {
  9. VibrationDeviceExist = true;
  10. }
  11. #endif

电量传感器(Battery)

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

内存判断(Memory)

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

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

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

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

应用清单文件

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

Hardware Finder 2.png

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

Hardware Finder 3.png

Hardware Finder 4.png

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

Hardware Finder 5.png

示例代码

File:HardwareFinder.zip

http://www.developer.nokia.com/Community/Wiki/Windows_Phone_%E7%A1%AC%E4%BB%B6%E6%A3%80%E6%B5%8B

发表评论

表情:
评论列表 (有 0 条评论,404人围观)

还没有评论,来说两句吧...

相关阅读

    相关 windows phone 下拉刷新

    在windows phone 中采用数据列表时为了保证用户体验常遇到加载数据的问题.这个问题普遍到只要你用到数据列表就要早晚面对这个问题. 很多人会说这个问题已经有解决方案.

    相关 Windows Phone is here

    自从微软发布了Windows Phone以后,每天都在报纸上刊登广告,持续已经差不多一个月了。对于微软来说,这个攻势极为少见的。广告如下: [![wm1][]][wm1 1]