众所周知,Windows Phone 7 应用程序模型将每个应用分离成各自独立的沙箱,包括运行时(包括内存的隔离)和文件存储。因此,很难像以前一样从计算中复制一个本地文件到手机,然后,使用程序对文件进行阅读。因此制作一个纯本地文件的阅读器,是相当困难的。因此网上大部分阅读器采用的全部是实时在线的模式,对于在“漫长”的上下班路上常看小说的人来说,简直是一场恶梦。要走多少流量?难道就没有办法制作一款像往常一样的本地TXT小说阅读器吗?
有什么办法呢,首先文件要能通过PC同步到手机上,第二就是在自己的程序中要读到这个文件,借助这个来传递文本内容。使用zumn可同步的文件包括:图片、视频、音乐
而自己的程序中通过选择器得到的内容包括:相机图片,电话号码和邮件,以及图片库中的图片。这么一看,这个中载文件就非图片这种介莫数了。可以同过在PC端将文本内容,加在某张图片里,通过同步软件同步到手机上再利用PhotoChooserTask选择器来获取内容,并显示在界面上。大功即可告成。接下来,我们就按如上思想实现整个流程:
1. 处理本地图片
首先创建一个Windows 的Console程序,进行图片的处理,在Main增加如下代码:
代码
// 读取图片
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);
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中增加如下代码:
代码
public MainPage()
{
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);
}
{
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);
}
运行程序到图片库选择同步的图片,即可读取图片中的内容.我们在这个原理的基础上再进一步进行修改,制作一个本地小说阅读器是不是很好的解决方案呀!呵呵.