众所周知,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);

 

 

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);
        }

 

 

 运行程序到图片库选择同步的图片,即可读取图片中的内容.我们在这个原理的基础上再进一步进行修改,制作一个本地小说阅读器是不是很好的解决方案呀!呵呵.

 

 

posted on 2010-12-30 18:52  Happy Miao  阅读(971)  评论(0编辑  收藏  举报