码迷,mamicode.com
首页 > Web开发 > 详细

webview资源本地化的一种实现方式

时间:2017-08-17 00:38:20      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:cross   source   替换   http协议   cpu   本地   视频   oca   nano   

  最近接手了一个crosswalk的任务,需要将Xwalkview的视频资源放到sd卡里面,以后每次遇到相同的视频就直接读取sd卡里面的内容。

  刚开始想的使用crosswalk的webResourceClient,利用其中提供的‘shouldInterceptLoadRequest’方法进行url的拦截和资源重新返回。起初使用这个替换图片,html页面都是可以的,但是替换视频的时候就出现了问题,发现拦截成功,但是返回资源的时候就失败了,仍然是从html中video的src中读取的。之后查找了相关的内容,发现webview,包括xwalkview都是加载html中的video标签时,使用的都是mediaplayer,但是mediaplayer不支持重定向,因此使用这个方法进行视屏资源的替换是不行的。

  之后就想着通过js进行video路径的改写,但是由于html是一个web网页,并不是本地的,导致了其域不同,而且不单单是域不同,这是从http协议改到了file协议,因此产生了一个‘NOT ALLOWED TO LOAD LOCAL RESOURCE‘的错误。

  以上两个路走不通,最后只能通过webserver将本地的资源转换成web资源。webserver实现方式可以使用AndroidAsync这个框架,或者nanohttpd也可以。在本地起一个服务进行webserver的开启,同时在html中将video的路径用js函数进行处理,在android中操作这个js函数进行路径的动态改写。

  webserver在android上路径设为127.0.0.1之后速度接近cpu速度,基本上可以看成直接操作本地文件,同时也解决了跨域问题和安全性的问题,在遇到无法使用api进行替换的资源时,可以考虑使用这种方式。

webview资源本地化的一种实现方式

标签:cross   source   替换   http协议   cpu   本地   视频   oca   nano   

原文地址:http://www.cnblogs.com/Sample1994/p/7376337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!