win8 Downlod mp3
前台代码:
<Page.Resources> <Style TargetType="TextBlock"> <Setter Property="FontSize" Value="27"/> <Setter Property="FontFamily" Value="宋体"/> </Style> </Page.Resources>
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <StackPanel Grid.Row="0" Margin="15,8" Orientation="Horizontal"> <TextBlock Text="输入下载URI:" VerticalAlignment="Center" /> <TextBox x:Name="txtInputUri" Width="680"/> <Button x:Name="btnDown" Margin="38,0,0,0" VerticalAlignment="Center" Content="开始下载" Padding="17,5,17,5" FontSize="22" Click="onDownload_Click"/> </StackPanel> <StackPanel Grid.Row="1" Margin="20"> <ProgressBar x:Name="probar" Maximum="100" Minimum="0" SmallChange="1" Width="700" HorizontalAlignment="Left" Foreground="Yellow" Height="30" Margin="6,21,0,35"/> <TextBlock x:Name="tbMsg" Margin="6,8,0,0" /> </StackPanel>
</Grid> < /Page>
后台代码:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.Networking.BackgroundTransfer; using Windows.Storage; using Windows.Storage.Pickers; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation;
// “空白页”项模板在 http://go.microsoft.com/fwlink/?LinkId=234238 上有介绍
namespace downLoad { /// <summary> /// 可用于自身或导航至 Frame 内部的空白页。 /// </summary> public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); }
/// <summary> /// 在此页将要在 Frame 中显示时进行调用。 /// </summary> /// <param name="e">描述如何访问此页的事件数据。Parameter /// 属性通常用于配置页。</param> protected override void OnNavigatedTo(NavigationEventArgs e) { }
private async void onDownload_Click(object sender, RoutedEventArgs e) { // 判断是否已输入下载URI if (string.IsNullOrWhiteSpace(this.txtInputUri.Text)) return; // 选择文件保存位置 FileSavePicker picker = new FileSavePicker(); picker.FileTypeChoices.Add("MP3文件", new string[] { ".mp3" }); StorageFile file = await picker.PickSaveFileAsync(); if (file != null) { // 实例化BackgroundDownloader BackgroundDownloader downloader = new BackgroundDownloader(); DownloadOperation operation = downloader.CreateDownload(new Uri(this.txtInputUri.Text), file); // 进度 Progress<DownloadOperation> progressDown = new Progress<DownloadOperation>(this.ProgressChanged); // 开始下载 btnDown.IsEnabled = false; var opresult = await operation.StartAsync().AsTask(progressDown); btnDown.IsEnabled = true; // 判断下载结果 switch (opresult.Progress.Status) { case BackgroundTransferStatus.Completed: tbMsg.Text = "下载已完成。"; break; case BackgroundTransferStatus.Error: tbMsg.Text = "下载过程中发生了错误。"; break; default: tbMsg.Text = "未知。"; break; } } }
/// <summary> /// 报告进度 /// </summary> private async void ProgressChanged(DownloadOperation op) { var p = op.Progress; double t = p.TotalBytesToReceive;//要下载总字节数 double d = p.BytesReceived;//已接收字节数 // 计算完成百分比 double pc = d / t * 100; await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { this.probar.Value = pc; this.tbMsg.Text = string.Format("已下载{0}字节/共{1}字节。", d.ToString("N0"), t.ToString("N0")); }); }
} }