首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

win8开发(八)——获取设备信息

2012-12-24 
win8开发(8)——获取设备信息本帖最后由 白西 于 2012-11-2 15:24 编辑如何获得当前机器上的设备ID,名称以及

win8开发(8)——获取设备信息
本帖最后由 白西 于 2012-11-2 15:24 编辑

如何获得当前机器上的设备ID,名称以及缩略图,我们需要用到一个类——DeviceInformation类(位于 Windows.Devices.Enumeration命名空间)。
使用方法是这样的:
1、通过DeviceInformation.FindAllAsync静态方法获得一个DeviceInformationCollection集合。
2、将这个集合foreach一下就可以访问其中各成员,这个相信不难明白。
3、DeviceInformation对象的Id属性获取设备的标识符。
4、Name属性获取设备名称。
5、GetThumbnailAsync方法获取设备的缩略图。

看起来是不是很简单呢?下面,我们用一个实例来深化一下。
1、启动VS,新建项目(此处省略38个字)。
2、在主页的根Grid中声明一个ListView,用来显示获取到的设备信息。XAML如下:


  • <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">  
  •     <ListView Name="lvDevices" Margin="10" SelectionMode="None">  
  •         <ListView.ItemsPanel>  
  •             <ItemsPanelTemplate>  
  •                 <WrapGrid Orientation="Horizontal" MaximumRowsOrColumns="3" ItemWidth="420"/>  
  •             </ItemsPanelTemplate>  
  •         </ListView.ItemsPanel>  
  •     </ListView>  
  • </Grid>  
    4、在XAML文档视图中右击,从弹出的菜单中选择“查看代码”,切换到C#代码视图,然后在重写的OnNavigatedTo方法中加入下面代码:

    • protected async override void OnNavigatedTo(NavigationEventArgs e)  
    • {  
    •     DeviceInformationCollection dcl = await DeviceInformation.FindAllAsync();  
    •     this.lvDevices.Items.Clear();  
    •     foreach (var item in dcl)  
    •     {  
    •         // 项内容布局   
    •         Grid itemRoot = new Grid();  
    •         itemRoot.Margin = new Thickness(15);  
    •         itemRoot.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });  
    •         itemRoot.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });  
    •         // 取得图标   
    •         DeviceThumbnail thumb = await item.GetThumbnailAsync();  
    •         BitmapImage bmp = new BitmapImage();  
    •         thumb.Seek(0);  
    •         bmp.SetSource(thumb);  
    •         // 显示图像   
    •         Image myImage = new Image();  
    •         myImage.Width = 80;  
    •         myImage.Height = 80;  
    •         myImage.Stretch = Stretch.Uniform;  
    •         myImage.Margin = new Thickness(10);  
    •         myImage.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Center;  
    •         myImage.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Top;  
    •         myImage.Source = bmp;  
    •         Grid.SetColumn(myImage, 0);  
    •         itemRoot.Children.Add(myImage);  
    •         // 显示文本   
    •         TextBlock textbl = new TextBlock();  
    •         textbl.TextWrapping = TextWrapping.Wrap;  
    •         Run myRunTitle = new Run();  
    •         myRunTitle.Text = item.Name;  
    •         myRunTitle.FontSize = 20;  
    •         myRunTitle.FontWeight = FontWeights.Bold;  
    •         textbl.Inlines.Add(myRunTitle);  
    •         textbl.Inlines.Add(new LineBreak());  
    •         Run runID = new Run() { Text = item.Id };  
    •         textbl.Inlines.Add(runID);  
    •         Grid.SetColumn(textbl, 1);  
    •         itemRoot.Children.Add(textbl);  
    •   
    •         ListViewItem lvItem = new ListViewItem();  
    •         //lvItem.Width = 600;   
    •         lvItem.Content = itemRoot;  
    •         // 将项添加到ListView中   
    •         this.lvDevices.Items.Add(lvItem);  
    •     }  
    • }  

      面代码我简单说一下,如果熟悉WPF的朋友,相信下面的内容你不用看了。由于要显示的内容

      有点复杂,包含缩略图和文本,因此用一个Grid作为ListViewItem的内容。

      这个Grid划分为两列,第一列放Image控件,第二列放一个用显示文本信息的TextBlock控件。

      在TextBlock中,用到了Document对象,两块文本均为Run对象,中间通过一个LineBreak换行。

      第一个Run显示设备名称,加粗;第二个Run没有任何修饰,普通文本,显示ID。
      下图是运行结果。


      win8开发(八)——获取设备信息
      1楼ygzk123前天 15:55
      回复napo0yn好的 差点忘了哈

热点排行