Audio Phonegap Media getCurrentPosition不准确且速度缓慢

Audio Phonegap Media getCurrentPosition不准确且速度缓慢,audio,cordova,Audio,Cordova,我非常失望地发现,现在我已经准备好将我的html5应用程序迁移到使用phonegap的手机上,播放音频的能力就像永动机一样。就快到了,但还不完全到 Androids(至少在冰淇淋三明治之前)的答案是Phonegap媒体api。据大家说 问题是在播放音频时,我真的很关心当前的时间。在运行Chrome的Mac电脑上,我计算了完成此操作所需的时间: pos=音频。当前时间 它不到一毫秒 使用Phonegap媒体api,我必须调用一个异步函数,等待它回调,然后获取当前媒体位置。这需要5到150毫秒的时间

我非常失望地发现,现在我已经准备好将我的html5应用程序迁移到使用phonegap的手机上,播放音频的能力就像永动机一样。就快到了,但还不完全到

Androids(至少在冰淇淋三明治之前)的答案是Phonegap媒体api。据大家说

问题是在播放音频时,我真的很关心当前的时间。在运行Chrome的Mac电脑上,我计算了完成此操作所需的时间:

pos=音频。当前时间

它不到一毫秒

使用Phonegap媒体api,我必须调用一个异步函数,等待它回调,然后获取当前媒体位置。这需要5到150毫秒的时间。这是不一致的,它是令人痛苦的缓慢

这也回避了一个问题:现在几点了?如果需要150毫秒才能得到时间,我是在150毫秒的开始还是结束时得到时间的?我真的不能确定我得到的时间是否真的那么接近现在的时间

幸好我现在还没有写潜艇导航软件,因为有这么一个可怕的时间来源,我永远无法确定我在哪里

我现在使用系统时钟跟踪时间,并使用getCurrentPosition()不时重新同步。然而,我仍然可以离开超过100毫秒

我的问题:有谁有更好的方法吗

编辑:

查看Cordova的代码:

   /**
 * Get current position of playback.
 *
 * @return                  position in msec or -1 if not playing
 */
public long getCurrentPosition() {
    if ((this.state == STATE.MEDIA_RUNNING) || (this.state == STATE.MEDIA_PAUSED)) {
        int curPos = this.player.getCurrentPosition();
        this.handler.webView.sendJavascript("cordova.require('cordova/plugin/Media').onStatus('" + this.id + "', " + MEDIA_POSITION + ", " + curPos / 1000.0f + ");");
        return curPos;
    }
    else {
        return -1;
    }
}
在我看来,这应该执行得非常快……除了对sendJavascript()的调用。我想知道神秘的延迟是不是从这里开始的


出于我的目的,我不需要一个onStatus事件:我需要尽快得到当前的位置。所以我想知道我是否可以删除那行代码。。。我想这将需要对科尔多瓦震源本身进行更改(

为什么不在标准JS中使用
元素本身呢?哦,我希望如此。这就是我开发它的方式,它在chrome中工作得很好。不幸的是,该标记在webkit浏览器中存在问题,您可以在该网站上搜索一下加以验证。基本上,它不会给出任何错误,但不会播放。嗯。我一直在开发使用Sencha Touch和
元素私奔应用程序在Mobile Safari中运行良好。Android浏览器出现了一些问题,我正试图解决这些问题。