众所周知,Windows Phone 7 应用程序模型将每个应用分离成各自独立的沙箱,包括运行时(包括内存的隔离)和文件存储。因此,很难像以前一样从计算中复制一个本地文件到手机,然后,使用程序对文件进行阅读。因此制作一个纯本地文件的阅读器,是相当困难的。因此网上大部分阅读器采用的全部是实时在线的模式,对于在“漫长”的上下班路上常看小说的人来说,简直是一场恶梦。要走多少流量?难道就没有办法制作一款像往常一样的本地TXT小说阅读器吗?
有什么办法呢,首先文件要能通过PC同步到手机上,第二就是在自己的程序中要读到这个文件,借助这个来传递文本内容。使用zumn可同步的文件包括:图片、视频、音乐
而自己的程序中通过选择器得到的内容包括:相机图片,电话号码和邮件,以及图片库中的图片。这么一看,这个中载文件就非图片这种介莫数了。可以同过在PC端将文本内容,加在某张图片里,通过同步软件同步到手机上再利用PhotoChooserTask选择器来获取内容,并显示在界面上。大功即可告成。接下来,我们就按如上思想实现整个流程:
1. 处理本地图片
首先创建一个Windows 的Console程序,进行图片的处理,在Main增加如下代码:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
byte [] s = File.ReadAllBytes( " C:\\a.jpg " );
// 读取文本
byte [] s1 = Encoding.UTF8.GetBytes( " Windows Phone 7**真实内容 " );
// 合并图片和文本
byte [] b3 = new byte [s.Length + s1.Length];
Array.Copy(s , b3 , s.Length );
Array.Copy(s1, 0 , b3, s.Length, s1.Length);
// 输出图片
File.WriteAllBytes( " C:\\b.jpg " ,b3);
2. 同步图片
使用Zune将图片同步到手机,如下图:
3. 从手机读取图片中的文字内容
这里我们就要用到本文的关键利器PhotoChooserTask选择器 ,我们在windows Phone 7的程序MainPage中增加如下代码:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
{
InitializeComponent();
PhotoChooserTask photoChooserTask = new PhotoChooserTask();
photoChooserTask.Completed += new EventHandler < PhotoResult > (photoChooserTask_Completed);
photoChooserTask.Show();
}
void photoChooserTask_Completed( object sender, PhotoResult e)
{
StreamReader sr = new StreamReader(e.ChosenPhoto);
string s = sr.ReadToEnd();
int i = s.IndexOf( " Windows Phone 7** " );
textBlock1.Text = s.Substring(i ++ " Windows Phone 7** " .Length);
}
运行程序到图片库选择同步的图片,即可读取图片中的内容.我们在这个原理的基础上再进一步进行修改,制作一个本地小说阅读器是不是很好的解决方案呀!呵呵.