android高性能webview之crosswalk

来源:互联网 发布:知乎周刊 kindle 推送 编辑:程序博客网 时间:2024/06/06 05:31

下载地址

对着 demo工程比较容易将crosswalk嵌入自己的项目中,下面是一些需要注意的地方:

  • 因为完整引入包体会变得很大,适当的可以采用下载核心库的方式,在运行时动态加载。大概有十几M的样子,似乎还是蛮大的。

  • 笔者在最新的版本中,AudioContext.decodeAudioData解码MP3会出现错误,没弄明白原因,故如果使用AudioContext播放音频可以直接使用pcm格式音频,无需解码。下面是笔者测试过,播放pcm的演示代码:

window.AudioContext = window.AudioContext || window.webkitAudioContext|| window.mozAudioContext;window.audioContext = new AudioContext();//audioData:获取的wav二进制数据,默认采用单声道 32位的pcm数据(必须!!!!)function getAudioBuffer(audioData){//去掉最开始的文件头,保留原始的pcm数据。为了简化,这里不读取文件头信息,直接取大概值60。                audioData=audioData.slice(60);                //4字节对齐,因为AudioBuffer 必须要4字节对齐                var frames=parseInt(audioData.byteLength/4);                //1表示创建1个声道,跟wav的声道数没有关系的。                //frames音频 总帧数                //32000音频采样率 ,也就是1秒 采集的帧数                var buffer = window.audioContext.createBuffer(1,frames, 32000);                var aBuf=audioData.slice(0,frames*4);                var arrBuffer=new Float32Array(aBuf);                if (buffer.copyToChannel) {                    //把音频数据 复制到AudioBuffer的 0声道索引。 如果创建了多个声道,可以给后面的声道 继续赋值                    buffer.copyToChannel(arrBuffer, 0, 0)                } else {                    var channelBuffer = buffer.getChannelData(0);                    channelBuffer.set(arrBuffer);                }                return buffer;}function play(audioBuffer){  var audioBufferSouceNode = audioContext.createBufferSource();  audioBufferSouceNode.buffer = audioBuffer;  source.connect(audioContext.destination);  //第一个为延迟播放的时间,第二个为 播放的偏移位置,以秒为单位  audioBufferSouceNode.start(0, 0);}
  • 虽然能比较好的解决android兼容和性能问题,但是如果不运行h5游戏等 耗性能的程序,直接使用android自带的webview也是可以的了-_-
0 0
原创粉丝点击