[源码下载]

与众不同 windows phone (47) - 8.0 其它: 锁屏信息和锁屏背景, 电池状态, 多分辨率, 商店, 内置协议, 快速恢复

作者:webabcd

介绍
与众不同 windows phone 8.0 之 其它

  • 锁屏信息和锁屏背景
  • 电池状态
  • 多分辨率应用
  • 与 Windows Phone 商店相关的操作
  • 系统的内置协议
  • 快速恢复应用
  • App.xaml.cs 的说明
  • manifest 的说明

示例
1、演示如何发送信息到锁屏,以及如何修改锁屏背景
Others/LockScreen.xaml

<phone:PhoneApplicationPage
x:Class="Demo.Others.LockScreen"
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"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent">
<StackPanel> <TextBlock Name="lblMsg" TextWrapping="Wrap" /> <Button Name="btnGotoLockScreen" Content="跳转到锁屏设置界面" Click="btnGotoLockScreen_Click" /> <Button Name="btnSendMessageToLockScreen" Content="发送信息到锁屏" Click="btnSendMessageToLockScreen_Click" /> <Button Name="btnLockScreenBackground" Content="修改锁屏背景" Click="btnLockScreenBackground_Click" /> </StackPanel>
</Grid> </phone:PhoneApplicationPage>

Others/LockScreen.xaml.cs

/*
* 演示如何发送信息到锁屏,以及如何修改锁屏背景
*
*
* 注:在 manifest 中需要增加的内容和说明如下
* 1、搜索并修改“<DeviceLockImageURI />”节点的内容如下:
* <!--锁屏图标:38 * 38 像素,仅支持白色和透明-->
* <DeviceLockImageURI IsRelative="true" IsResource="false">Assets\LockScreen.png</DeviceLockImageURI>
*
* 2、在 <Extensions /> 节点中增加内容如下:
* <!--支持锁屏上显示图标和数字-->
* <Extension TaskID="_default" ExtensionName="LockScreen_Notification_IconCount" ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" />
* <!--支持锁屏上显示文本-->
* <Extension TaskID="_default" ExtensionName="LockScreen_Notification_TextField" ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" />
* <!--支持锁屏背景的修改-->
* <Extension TaskID="_default" ExtensionName="LockScreen_Background" ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" />
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using Windows.System;
using Windows.Phone.System.UserProfile; namespace Demo.Others
{
public partial class LockScreen : PhoneApplicationPage
{
public LockScreen()
{
InitializeComponent();
} protected override void OnNavigatedTo(NavigationEventArgs e)
{
// 在锁屏设置界面,如果将本 app 设置为背景提供程序,则锁屏界面上会有一个名为“打开应用”的按钮,点击后会通过 /MainPage.xaml?WallpaperSettings=1 启动本 app
// 相关的 UriMapper 参见 MyUriMapper.cs IDictionary<string, string> queryStrings = this.NavigationContext.QueryString;
if (queryStrings.ContainsKey("WallpaperSettings"))
lblMsg.Text = "在锁屏界面启动了本 app,启动的 url 是:" + e.Uri.ToString(); base.OnNavigatedTo(e);
} // 跳转到锁屏设置界面
private async void btnGotoLockScreen_Click(object sender, RoutedEventArgs e)
{
bool success = await Launcher.LaunchUriAsync(new Uri("ms-settings-lock:"));
} // 发送信息到锁屏
private void btnSendMessageToLockScreen_Click(object sender, RoutedEventArgs e)
{
// 锁屏信息来自 tile(StandardTileData, FlipTile, IconicTile, CycleTile 均可)
ShellTile shellTile = ShellTile.ActiveTiles.First();
if (shellTile != null)
{
StandardTileData tile = new StandardTileData();
tile.BackContent = "发送信息到锁屏"; // 需要在锁屏上显示的文本内容(需要在锁屏界面设置本 app 为显示详细状态)
tile.Count = ; // 需要在锁屏上显示的数字内容,图标来自 <DeviceLockImageURI /> 节点的设置(需要在锁屏界面设置本 app 为显示即时状态) shellTile.Update(tile);
}
} // 修改锁屏背景
private async void btnLockScreenBackground_Click(object sender, RoutedEventArgs e)
{
try
{
/*
* 注:
* 在项目根目录下增加 DefaultLockScreen.jpg 文件,用于当 app 成为锁屏背景的实际提供程序却没有设置锁屏背景时,作为锁屏背景的默认图片
* 比如用户在锁屏设置页面选择了本 app 作为锁屏背景的实际提供程序,此时本 app 无法设置锁屏背景,那么锁屏背景图就会被设置为项目根目录下的 DefaultLockScreen.jpg 文件
*/ // 判断本 app 是否是锁屏背景的实际提供程序
bool isProvider = LockScreenManager.IsProvidedByCurrentApplication;
if (!isProvider)
{
// 请求成为锁屏背景的实际提供程序(会弹出一个对话框)
LockScreenRequestResult result = await LockScreenManager.RequestAccessAsync(); // LockScreenRequestResult.Granted - 用户已允许;LockScreenRequestResult.Denied - 用户已拒绝
isProvider = result == LockScreenRequestResult.Granted;
} if (isProvider)
{
// 图片地址支持“ms-appx:///”和“ms-appdata:///Local/”,文件名必须与当前锁屏背景的文件名不同
Uri uri = new Uri("ms-appx:///Assets/AppTile.png", UriKind.Absolute); // 设置当前锁屏的背景图
Windows.Phone.System.UserProfile.LockScreen.SetImageUri(uri); // 获取当前锁屏的背景图的 uri
Uri currentUri = Windows.Phone.System.UserProfile.LockScreen.GetImageUri();
lblMsg.Text = "当前锁屏的背景图的 url: " + currentUri.ToString();
}
else
{
lblMsg.Text = "用户不允许此 app 成为锁屏背景的实际提供程序";
}
}
catch (Exception ex)
{
lblMsg.Text = ex.ToString();
}
}
}
}

2、演示如何获取电池的状态信息
Others/BatteryDemo.xaml.cs

/*
* 演示如何获取电池的状态信息
*/ using System;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Windows.Phone.Devices.Power;
using Microsoft.Phone.Info; namespace Demo.Others
{
public partial class BatteryDemo : PhoneApplicationPage
{
private Battery _battery; public BatteryDemo()
{
InitializeComponent();
} protected override void OnNavigatedTo(NavigationEventArgs e)
{
// 获取电话的默认 Battery 对象
_battery = Battery.GetDefault(); // 获取电池在完全用完之前的所剩时间
TimeSpan remainingTime = _battery.RemainingDischargeTime; // 获取剩余电量的百分比
int remainingChargePercent = _battery.RemainingChargePercent; // 判断当前是电池供电还是外部电源供电
lblMsg.Text = "PowerSource: " + DeviceStatus.PowerSource.ToString();
lblMsg.Text += Environment.NewLine;
lblMsg.Text += "剩余时间:" + string.Format("{0}{1}{2}{3}{4}{5}", remainingTime.Days, "天", remainingTime.Hours, "小时", remainingTime.Minutes, "分");
lblMsg.Text += Environment.NewLine;
lblMsg.Text += "电量百分比:" + remainingChargePercent.ToString() + "%"; // 剩余电量的百分比发生变化时所触发的事件
_battery.RemainingChargePercentChanged += _battery_RemainingChargePercentChanged; base.OnNavigatedTo(e);
} protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
_battery.RemainingChargePercentChanged -= _battery_RemainingChargePercentChanged; base.OnNavigatingFrom(e);
} void _battery_RemainingChargePercentChanged(object sender, object e)
{
// 剩余电量的百分比发生了变化
}
}
}

3、演示如何获取当前分辨率
Others/MultiResolution.xaml

<phone:PhoneApplicationPage
x:Class="Demo.Others.MultiResolution"
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"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent">
<StackPanel> <TextBlock TextWrapping="Wrap">
<Run>1、WVGA - 480 x 800; WXGA - 768 x 1280; 720p - 720 x 1280</Run>
<LineBreak />
<Run>2、大多数情况下,建议使用 WXGA 资产,他们会在其他分辨率下自动缩放且显示良好</Run>
<LineBreak />
<Run>3、如果需要不同分辨率使用不同资产,则必须写代码,参见 code-behind 中判断当前分辨率的代码</Run>
<LineBreak />
<Run>4、适应不同分辨率的启动屏幕,需要在项目的根目录下放置三个启动屏幕文件:SplashScreenImage.Screen-WVGA.jpg, SplashScreenImage.Screen-WXGA.jpg, plashScreenImage.Screen-720p.jpg</Run>
<LineBreak />
<Run>5、如果只想用一个启动屏幕文件的话,则在项目的根目录下放置一个分辨率为 768 x 1280 的名为 SplashScreenImage.jpg 的文件即可(不同分辨率会自动缩放)</Run>
</TextBlock> <TextBlock Name="lblMsg" TextWrapping="Wrap" Margin="0 10 0 0" /> </StackPanel>
</Grid> </phone:PhoneApplicationPage>

Others/MultiResolution.xaml.cs

/*
* 演示如何获取当前分辨率
*/ using System.Windows.Navigation;
using Microsoft.Phone.Controls; namespace Demo.Others
{
public partial class MultiResolution : PhoneApplicationPage
{
public MultiResolution()
{
InitializeComponent();
} protected override void OnNavigatedTo(NavigationEventArgs e)
{
// 获取当前的分辨率
lblMsg.Text = "Resolution: " + ResolutionHelper.CurrentResolution.ToString(); base.OnNavigatedTo(e);
}
} public enum Resolution { WVGA, WXGA, HD720p, Unknown }; public static class ResolutionHelper
{
/// <summary>
/// 480 x 800
/// </summary>
private static bool IsWvga
{
get
{
return App.Current.Host.Content.ScaleFactor == ;
}
} /// <summary>
/// 768 x 1280
/// </summary>
private static bool IsWxga
{
get
{
return App.Current.Host.Content.ScaleFactor == ;
}
} /// <summary>
/// 720 x 1280
/// </summary>
private static bool Is720p
{
get
{
return App.Current.Host.Content.ScaleFactor == ;
}
} public static Resolution CurrentResolution
{
get
{
if (IsWvga)
return Resolution.WVGA;
else if (IsWxga)
return Resolution.WXGA;
else if (Is720p)
return Resolution.HD720p;
else
return Resolution.Unknown;
}
}
}
}

4、演示与 Windows Phone 商店相关的操作
Others/StoreDemo.xaml.cs

/*
* 演示与 Windows Phone 商店相关的操作
*
* 注:
* 应用内购买测试请参考:http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/jj681689
*/ using Microsoft.Phone.Controls;
using Windows.ApplicationModel.Store; namespace Demo.Others
{
public partial class StoreDemo : PhoneApplicationPage
{
public StoreDemo()
{
InitializeComponent(); CurrentAppDemo(); LicenseInformationDemo();
} private void CurrentAppDemo()
{
// 由 Windows 商店创建的此 app 的 id
// CurrentApp.AppId; // 获取此 app 在 Windows 商店中的 URI 地址
// CurrentApp.LinkUri; // 获取当前 app 的 LicenseInformation 对象
// CurrentApp.LicenseInformation; // 请求应用程序内购买完整许可证(wp 目前不可用)
// CurrentApp.RequestAppPurchaseAsync(); // 请求应用程序内购买指定产品的许可证
// CurrentApp.RequestProductPurchaseAsync // 获取此 app 的全部购买记录(wp 目前不可用)
// CurrentApp.GetAppReceiptAsync(); // 获取此 app 的指定产品的购买记录
// CurrentApp.GetProductReceiptAsync(); // 获取此 app 的 ListingInformation 信息
// CurrentApp.LoadListingInformationAsync(); // 获取此 app 的指定关键字的 ListingInformation 信息
// CurrentApp.LoadListingInformationByKeywordsAsync(); // 获取此 app 的指定产品 Id 的 ListingInformation 信息
// CurrentApp.LoadListingInformationByProductIdsAsync(); // 通知商城本 app 已将指定产品 Id 的产品交付给了用户,在调用此方法之前,用户不能再次购买此产品
// CurrentApp.ReportProductFulfillment(); // ListingInformation - 此 app 在 Windows 商店中的相关信息
// AgeRating - app 的年龄分级
// CurrentMarket - app 的当前商店,如:en-us
// Name - app 在当前商店中的名称
// FormattedPrice - app 在当前商店中的价格
// Description - app 在当前商店中的程序说明
// ProductListings - app 在当前商店中的 ProductListing 集合 // ProductListing - app 的产品信息
// ProductId - 产品 ID
// Name - 产品名称
// FormattedPrice - 产品当前市场的格式化后的价格
// ImageUri - 产品关联的图片的 uri
// Description - 产品说明
// Keywords - 搜索关键字
// ProductType - 产品类型
// Unknown - 未知
// Durable - 耐用型:用户购买后由用户永远所有的产品)
// Consumable - 消费型:可以购买、使用(消耗)和再度购买的产品
// Tag - 自定义标记字符串
} private void LicenseInformationDemo()
{
// 当前 app 的许可证信息
LicenseInformation licenseInformation = CurrentApp.LicenseInformation; // 许可证ok则为true,否则无许可证或许可证过期则为false
// licenseInformation.IsActive; // 是否是试用许可证
// licenseInformation.IsTrial; // 许可证的到期时间
// licenseInformation.ExpirationDate; // 许可证状态发生变化时所触发的事件
// licenseInformation.LicenseChanged; // 获取此 app 相关的 ProductLicenses 集合
// licenseInformation.ProductLicenses; // ProductLicense - 产品许可证
// ProductId - 产品 ID
// IsActive - 此产品许可证ok则为true,否则无此产品许可证或此产品许可证过期则为false
// IsConsumable - 产品类型是否是消费型
// ExpirationDate - 此产品许可证的到期时间
}
}
}

5、演示系统的内置协议(uri 关联)
Others/ReservedProtocol.xaml.cs

/*
* 演示系统的内置协议(uri 关联)
*
*
* 注:系统保留的文件类型和保留的协议类型详见如下链接
* http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/jj207065
*/ using System;
using System.Windows;
using Microsoft.Phone.Controls;
using Windows.System; namespace Demo.Others
{
public partial class ReservedProtocol : PhoneApplicationPage
{
public ReservedProtocol()
{
InitializeComponent();
} private async void btnAirplane_Click(object sender, RoutedEventArgs e)
{
// 跳转到“飞行模式设置”页
bool success = await Launcher.LaunchUriAsync(new Uri("ms-settings-airplanemode:"));
} private async void btnBluetooth_Click(object sender, RoutedEventArgs e)
{
// 跳转到“蓝牙设置”页
bool success = await Launcher.LaunchUriAsync(new Uri("ms-settings-bluetooth:"));
} private async void btnCellular_Click(object sender, RoutedEventArgs e)
{
// 跳转到“手机网络设置”页
bool success = await Launcher.LaunchUriAsync(new Uri("ms-settings-cellular:"));
} private async void btnWiFi_Click(object sender, RoutedEventArgs e)
{
// 跳转到“WiFi设置”页
bool success = await Launcher.LaunchUriAsync(new Uri("ms-settings-wifi:"));
} private async void btnLocation_Click(object sender, RoutedEventArgs e)
{
// 跳转到“定位设置”页
bool success = await Launcher.LaunchUriAsync(new Uri("ms-settings-location:"));
} private async void btnEmailAccount_Click(object sender, RoutedEventArgs e)
{
// 跳转到“电子邮件+账户设置”页
bool success = await Launcher.LaunchUriAsync(new Uri("ms-settings-emailandaccounts:"));
} private async void btnLockScreen_Click(object sender, RoutedEventArgs e)
{
// 跳转到“锁屏设置”页
bool success = await Launcher.LaunchUriAsync(new Uri("ms-settings-lock:"));
} private async void btnCallTo_Click(object sender, RoutedEventArgs e)
{
// 拨打指定的电话号码
bool success = await Launcher.LaunchUriAsync(new Uri("tel:1391234567"));
// bool success = await Launcher.LaunchUriAsync(new Uri("callto:1391234567"));
} private async void btnHttp_Click(object sender, RoutedEventArgs e)
{
// 用浏览器打开一个指定的 http 链接
bool success = await Launcher.LaunchUriAsync(new Uri("http://webabcd.cnblogs.com/"));
} private async void btnMailTo_Click(object sender, RoutedEventArgs e)
{
// 向指定的地址发送邮件
bool success = await Launcher.LaunchUriAsync(new Uri("mailto:aaa@xxx.com"));
} private async void btnMarketplaceDetail_Click(object sender, RoutedEventArgs e)
{
// 打开指定 app 在商店中的详细页
bool success = await Launcher.LaunchUriAsync(new Uri("zune:navigate?appid=02adaaff-ad55-42b4-9ca1-fd4d1dadd32a"));
} private async void btnMarketplaceReview_Click(object sender, RoutedEventArgs e)
{
// 在商店中评论指定的 app
bool success = await Launcher.LaunchUriAsync(new Uri("zune:reviewapp?appid=02adaaff-ad55-42b4-9ca1-fd4d1dadd32a"));
} private async void btnMarketplaceSearch_Click(object sender, RoutedEventArgs e)
{
// 在商店中搜索 app(支持按关键字和发行商搜索)
bool success = await Launcher.LaunchUriAsync(new Uri("zune:search?keyword=&publisher=webabcd&contenttype=app"));
}
}
}

6、演示什么是快速恢复应用,以及如何设置快速恢复应用
Others/FastResume.xaml

<phone:PhoneApplicationPage
x:Class="Demo.Others.FastResume"
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"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent">
<StackPanel> <TextBlock TextWrapping="Wrap">
<Run>1、什么是快速恢复应用:当你点击 tile 启动了 app 后,再回到开始屏幕,再点击 tile 可以直接恢复应用而不是重新启动应用(wp8 新特性)</Run>
<LineBreak />
<Run>2、如何实现快速恢复应用:在 manifest 中的 DefaultTask 节点中增加 ActivationPolicy="Resume"</Run>
</TextBlock> </StackPanel>
</Grid> </phone:PhoneApplicationPage>

7、App.xaml.cs 的说明
Others/AppXamlCs.xaml

<phone:PhoneApplicationPage
x:Class="Demo.Others.AppXamlCs"
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"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True"> <Grid Background="Transparent">
<StackPanel> <TextBlock x:Name="lblMsg" TextWrapping="Wrap">
<Run>关于 App.xaml.cs 的说明,参见它的注释就好,写得很清楚了</Run>
<LineBreak />
<Run>注意:导航过程中发生异常会通过 RootFrame_NavigationFailed 捕获,其他未处理异常会通过 Application_UnhandledException 捕获</Run>
</TextBlock> </StackPanel>
</Grid> </phone:PhoneApplicationPage>

8、manifest 的说明
Others/Manifest.xaml

<phone:PhoneApplicationPage
x:Class="Demo.Others.Manifest"
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"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True"> <Grid Background="Transparent">
<StackPanel> <TextBlock x:Name="lblMsg" TextWrapping="Wrap">
<Run>关于 manifest 的说明,详见 WMAppManifest.xml</Run>
<LineBreak />
<Run>1、应用程序 UI: UI 相关的设置</Run>
<LineBreak />
<Run>2、功能: 勾选你需要用到的功能,有时提示无权限可能就是相关的功能没有勾选</Run>
<LineBreak />
<Run>3、要求: 勾选你程序的硬件要求,可以防止不符合要求的设备安装</Run>
<LineBreak />
<Run>4、打包: 打包就是打包了</Run>
</TextBlock> </StackPanel>
</Grid> </phone:PhoneApplicationPage>

OK
[源码下载]

与众不同 windows phone (47) - 8.0 其它: 锁屏信息和锁屏背景, 电池状态, 多分辨率, 商店, 内置协议, 快速恢复的更多相关文章

  1. 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议

    [源码下载] 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议 作者:webabcd 介绍与众不同 windows ...

  2. 与众不同 windows phone (43) - 8.0 相机和照片: 镜头的可扩展性, 图片的可扩展性, 图片的自动上传扩展

    [源码下载] 与众不同 windows phone (43) - 8.0 相机和照片: 镜头的可扩展性, 图片的可扩展性, 图片的自动上传扩展 作者:webabcd 介绍与众不同 windows ph ...

  3. 与众不同 windows phone (34) - 8.0 新的控件: LongListSelector

    [源码下载] 与众不同 windows phone (34) - 8.0 新的控件: LongListSelector 作者:webabcd 介绍与众不同 windows phone 8.0 之 新的 ...

  4. 与众不同 windows phone (35) - 8.0 新的启动器: ShareMediaTask, SaveAppointmentTask, MapsTask, MapsDirectionsTask, MapDownloaderTask

    [源码下载] 与众不同 windows phone (35) - 8.0 新的启动器: ShareMediaTask, SaveAppointmentTask, MapsTask, MapsDirec ...

  5. 与众不同 windows phone (36) - 8.0 新的瓷贴: FlipTile, CycleTile, IconicTile

    [源码下载] 与众不同 windows phone (36) - 8.0 新的瓷贴: FlipTile, CycleTile, IconicTile 作者:webabcd 介绍与众不同 windows ...

  6. 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件

    [源码下载] 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件 作者:w ...

  7. 与众不同 windows phone (39) - 8.0 联系人和日历

    [源码下载] 与众不同 windows phone (39) - 8.0 联系人和日历 作者:webabcd 介绍与众不同 windows phone 8.0 之 联系人和日历 自定义联系人存储的增删 ...

  8. 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能

    [源码下载] 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能 作者:webabcd 介绍与众不同 windows ...

  9. 与众不同 windows phone (41) - 8.0 相机和照片: 通过 AudioVideoCaptureDevice 捕获视频和音频

    [源码下载] 与众不同 windows phone (41) - 8.0 相机和照片: 通过 AudioVideoCaptureDevice 捕获视频和音频 作者:webabcd 介绍与众不同 win ...

随机推荐

  1. 太阳升起并下落的小动画-SWIFT

    一个小小的动画,太阳公公上山又下山.先上效果图. 用 lipecap 录的gif效果有点卡顿.好吧,说下如何实现的. 首先在一个大圆内先计算出内切九边形各个顶点的位置,接着连接相应的顶点变成一个九角星 ...

  2. How to get the Current Controller Name, Action, or ID in ASP.NET MVC

    public static class HtmlRequestHelper { public static string Id(this HtmlHelper htmlHelper) { var ro ...

  3. 【Math】余弦相似度 和 Pearson相关系数

    http://cucmakeit.github.io/2014/11/13/%E4%BF%AE%E6%AD%A3%E4%BD%99%E5%BC%A6%E7%9B%B8%E4%BC%BC%E5%BA%A ...

  4. 提高FOR插入数据库动作的优化代码

    await Task.Factory.StartNew(() => Parallel.ForEach(result.data.o, s => { sql = "insert in ...

  5. RestTemplate 使用总结

    场景: 认证服务器需要有个 http client 把前端发来的请求转发到 backend service, 然后把 backend service 的结果再返回给前端,服务器本身只做认证功能. 遇到 ...

  6. android自定义viewgroup之我也玩瀑布流

    先看效果图吧, 继上一篇<android自定义viewgroup实现等分格子布局>中实现的布局效果,这里稍微有些区别,每个格子的高度不规则,就是传说的瀑布流布局,一般实现这种效果,要么用第 ...

  7. 对Joint Training of Cascaded CNN for Face Detection一文的几点疑惑

    最近读了Joint Training of Cascaded CNN for Face Detection这篇论文,论文中把之前人脸检测使用到的cascade cnn,从分开训练的模式,改为了联合训练 ...

  8. java笔试练习题

    选择题(共50题,每题1.5分,共75分.多选题选不全或选错都不得分.)1. 以下属于面向对象的特征的是(C,D).(两项)A) 重载B) 重写C) 封装D) 继承 2. 以下代码运行输出是(C)pu ...

  9. 【转载】div层调整zindex属性无效原因分析及解决方法

    在做的过程中,发现了一个很简单却又很多人应该碰到的问题,设置Z-INDEX属性无效.在CSS中,只能通过代码改变层级,这个属性就是z-index,要让z-index起作用有个小小前提,就是元素的pos ...

  10. Java知多少(112)数据库之删除记录

    删除数据表也有3种方案 一.使用Statement对象 删除数据表记录的SQL语句的语法是: delete from 表名 where 特定条件 例如 : delete from ksInfo whe ...