Windows Phone 7 系统信息获取示例

假设你现在需要从WP7手机上获取一些系统信息,以便确认当前系统是否满足游戏或应用程序的最小硬件需求。轩辕在将给各位演示下实现这个功能有多么的简单。因为轩辕目前还没有拿到WP7手机,所以这篇文章将在模拟器上展开系统信息获取的实现。


下面是我们的示例将要获取的系统信息:

 

设备厂商
设备名称
设备ID
固件版本
硬件版本
总内存
应用程序当前使用内存
应用程序使用内存峰值


在下面这个示例中,轩辕将使用DispatcherTimer计时器每三秒获取一些系统信息,标将上面的列出的信息在8个textblock控件中展现出来。下面为应用程序的展现截图:

 

 Windows Phone 7 系统信息获取示例

 

下面是XAML的代码:

 

< phone:PhoneApplicationPage 
    
x:Class ="WindowsPhoneApplication2.MainPage"
    xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone
="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell
="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d
="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc
="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable
="d"  d:DesignWidth ="480"  d:DesignHeight ="768"
    FontFamily
=" {StaticResource PhoneFontFamilyNormal} "
    FontSize
=" {StaticResource PhoneFontSizeNormal} "
    Foreground
=" {StaticResource PhoneForegroundBrush} "
    SupportedOrientations
="Portrait"  Orientation ="Portrait"
    shell:SystemTray.IsVisible
="True" >

    
< Grid  x:Name ="LayoutRoot"  Background ="Transparent" >
        
< StackPanel  x:Name ="TitlePanel"  Margin ="12,17,0,751" ></ StackPanel >
        
< Grid  x:Name ="ContentPanel"  Margin ="12,161,12,0" >
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="24,40,0,0"  Name ="textBlock1"  Text ="设备制造厂商: "  VerticalAlignment ="Top"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="221,40,0,0"  Name ="textBlock2"  Text =""  VerticalAlignment ="Top"  Width ="229"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="24,76,0,0"  Name ="textBlock3"  Text ="设备名称: "  VerticalAlignment ="Top"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="221,76,0,0"  Name ="textBlock4"  Text =""  VerticalAlignment ="Top"  Width ="229"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="24,112,0,0"  Name ="textBlock5"  Text ="Device ID: "  VerticalAlignment ="Top"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="221,112,0,0"  Name ="textBlock6"  Text =""  VerticalAlignment ="Top"  Width ="229"  FontSize ="15"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="24,148,0,0"  Name ="textBlock7"  Text ="固件版本: "  VerticalAlignment ="Top"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="221,148,0,0"  Name ="textBlock8"  Text =""  VerticalAlignment ="Top"  Width ="229"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="24,184,0,0"  Name ="textBlock9"  Text ="硬件版本: "  VerticalAlignment ="Top"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="221,184,0,0"  Name ="textBlock10"  Text =""  VerticalAlignment ="Top"  Width ="229"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="24,220,0,0"  Name ="textBlock11"  Text ="总内存: "  VerticalAlignment ="Top"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="221,220,0,0"  Name ="textBlock12"  Text =""  VerticalAlignment ="Top"  Width ="229"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="24,256,0,0"  Name ="textBlock13"  Text ="当前使用内存: "  VerticalAlignment ="Top"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="221,256,0,0"  Name ="textBlock14"  Text =""  VerticalAlignment ="Top"  Width ="229"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="24,292,0,0"  Name ="textBlock15"  Text ="内存使用峰值: "  VerticalAlignment ="Top"   />
            
< TextBlock  Height ="30"  HorizontalAlignment ="Left"  Margin ="221,292,0,0"  Name ="textBlock16"  Text =""  VerticalAlignment ="Top"  Width ="229"   />
        
</ Grid >
        
< TextBlock  Height ="60"  HorizontalAlignment ="Left"  Margin ="12,17,0,0"  Name ="textBlock17"  Text ="设备信息中心"  VerticalAlignment ="Top"  FontSize ="32"  Width ="402"   />
    
</ Grid >
</ phone:PhoneApplicationPage >

 

接下来让我们写一些代码来获取系统信息。首先我们需要创建一个DispatcherTimer计时器对象。

 

DispatcherTimer timer;

 

在使用DispatcherTimer对象时你需要在项目中引用System.Windows.Threading这个命名空间。

 

接下来我们需要声明一个字符串变量以展现Device ID。

 

public   static   string  val;

因为通过系统函数返回的Device ID是以Byte类型返回的,所有我们需要将Device ID转化为字符串类型进行呈现。

 

public   static   byte [] GetDeviceUniqueID()
{
   
byte [] result  =   null ;
   
object  uniqueId;
   
if  (DeviceExtendedProperties.TryGetValue( " DeviceUniqueId " out  uniqueId))
   {
       result 
=  ( byte [])uniqueId;
   }
   val
= Convert.ToBase64String(result);
   
return  result;


 

完成上面的步骤后,我们就需要在页面的构造函数中启动计时器,以便定时获取设备系统信息了。下面是构造函数中的部分代码:

 

timer  =   new  DispatcherTimer();
timer.Interval 
=   new  TimeSpan( 0 0 3 );
timer.Tick 
+=   new  EventHandler(timer_Tick);
timer.Start();
GetDeviceUniqueID();    

 

下面是计时器的定时程序:

 

void  timer_Tick( object  sender, EventArgs e)


  
try
   {     
    textBlock2.Text 
=  DeviceExtendedProperties.GetValue( " DeviceManufacturer " ).ToString();
    textBlock4.Text 
=  DeviceExtendedProperties.GetValue( " DeviceName " ).ToString();
    textBlock6.Text 
=  val;
    textBlock8.Text 
=  DeviceExtendedProperties.GetValue( " DeviceFirmwareVersion " ).ToString();
    textBlock10.Text 
=  DeviceExtendedProperties.GetValue( " DeviceHardwareVersion " ).ToString();
    textBlock12.Text 
=  DeviceExtendedProperties.GetValue( " DeviceTotalMemory " ).ToString();
    textBlock14.Text 
=  DeviceExtendedProperties.GetValue( " ApplicationCurrentMemoryUsage " ).ToString();
    textBlock16.Text 
=  DeviceExtendedProperties.GetValue( " ApplicationPeakMemoryUsage " ).ToString();               
   }
   
catch  (Exception ex)
   {
      //  
   }

}

 

 我们可以使用DeviceExtendedProperties这个类来获取WP7设备的系统属性,关于该类的更多信息你可以参考MSDN的相关文档,地址如下:

http://msdn.microsoft.com/en-us/library/ff941122(v=VS.92).aspx

 

在模拟器中启动程序后,我们就可以看到文章最上面的系统信息显示了。因为我们使用的是模拟器,所有Device ID是并不是一个真实的硬件唯一标识。如果在WP7真机上运行该程序,那么Device ID、硬件版本、固件版本都会是真实值。尝试下吧.............

 

应用程序下载 

你可能感兴趣的:(windows phone)