由于一些很[哔——]的原因,微软在WinRT中移除了获取操作系统版本号的API,再也没有Environment.OSVersion.Version这种东西用了。但是这挡不住程序员们……目前据我所知有两种黑科技可以获取操作系统版本号:

Read the rest of this entry »

在进行Windows Phone 8.1 Runtime应用开发中需要注意的地方第一话:

Read the rest of this entry »

winux项目[1]是我五年前参加学校科技创新申请的项目,用时一年实现了PE Loader以及kernel32.dll里面3个Win32 API的移植工作,后来因为项目结题加上要忙其他事情就把后续开发工作搁置了。最近整理以前的代码的时候发现关于这个项目除了结题时提交的一篇水paper之外再没写过任何技术资料,所以趁着相关知识还没全忘赶紧写篇手记留作纪念。

Read the rest of this entry »

在Silverlight中我们可以使用ImageTools库的AnimatedImage控件来播放GIF图片,但是AnimatedImage目前还不支持WinRT应用,所以我实现了一个简单的控件来播放本地GIF文件。原理很蛋疼,首先用各种工具把GIF拆成单独的PNG文件,然后放到同一个文件夹下面,加载到内存中后用Timer来控制循环显示。

Read the rest of this entry »

在Silverlight中我们可以通过设置HttpWebRequest.AllowReadStreamBuffering为false,或者使用HttpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead)来实现在回调函数中不必等到Stream完全下载完成后才能读取数据,以便计算下载速度或进行其他处理。然而在WPRT应用中(WinRT未受影响)这两种方式都失去了效果,见示例:

Read the rest of this entry »

微软搞出的这个Universal应用本意是不错的,但是只是方便了WinRT应用到WPRT应用的移植,从WP8 Silverlight应用移植的话有很多坑,而且MSDN上面又没有一个完整详尽的说明,大部分新的实现方法都需要开发者自行摸索。所以我打算写这个系列文章来记录一些我的发现和经验,以帮助后来者少走一些弯路,节省一些时间。

Read the rest of this entry »

实现GetSampleAsync()

接下来需要实现MediaStreamSource.GetSampleAsync()。当系统解码器需要新的视频或音频sample的时候会调用这个函数,这个函数需要根据MediaStreamType返回相应的下一个sample。至于是预加载所有的sample还是用on demand的方式获取下一个sample都可以,前者可能会在播放视频的头几秒有所卡顿,后者可能会导致seek的过程略长。

Read the rest of this entry »

World Line
Time Machine
Online Tools