如何使用phonegap通过不同页面继续录制到同一个音频文件?

时间:2013-04-21 17:43:32

标签: cordova asynchronous audio-recording

我需要我的 phonegap 应用,以便在其工作时在后台录制音频。为此,Media对象工作正常,一旦我导航到新页面就停止录制。我没有找到任何方法来暂停和继续录制,即使可能,我也不愿意这样做,因为录制将会被删除。

我是否需要开始编写插件?

function startAudioRec() {
  var src = "rec.amr";
  audioRec = new Media(src, recordOnSuccess, recordOnError);
  audioRec.startRecord();
  circleBlink();
  console.log("test");

}
function recordOnError() {}
function recordOnSuccess() {}

var visible = true;
var recInterval;

function circleBlink() {
  recInterval = setInterval(blink, 1000);
  function blink() {
    var circle = document.getElementById('recCircle');
    if (visible) {
      circle.setAttribute("style", "visibility: hidden;");
      visible = false;
    } else {
      circle.setAttribute("style", "visibility: visible;");
      visible = true;
    }
  }
}
function stopAudioRec() {
  audioRec.stopRecord();
  clearInterval(recInterval);
  document.getElementById("recCircle").setAttribute("style", "visibility: hidden;");
  audioRec.release();
}

2 个答案:

答案 0 :(得分:0)

到目前为止,我唯一的想法是动态删除所有html元素并使用javascript和DOM在同一页面上替换它们,从而在整个应用程序中保持同一页面而不进行任何导航。什么更好的人?我希望能够导航,我的解决方案不是直观的。

    var page1=document.getElementsByName("page1");
    var size=page1.length;
    for(var i=0;i<size;i++){
        page1.removeChild(page1[0]);
    }
    var a=document.createElement("button");
    a.setAttribute("name","page2");

答案 1 :(得分:0)

也许您可以使用像Dojo这样的框架,并将您的应用程序构建为single page application。然后,当您导航到新页面时,它基本上会为您交换DOM元素。从理论上讲,您将停留在同一个HTML页面上,因此在您告知之前不应停止录制。只是一个想法......这是一个有趣的问题,让我们知道你最终做了什么。祝你好运!

以下是使用Dojo构建的单页应用的简单示例:http://demos.dojotoolkit.org/demos/mobileSlideShow/demo.html

应用测试还有更多内容:http://archive.dojotoolkit.org/nightly/checkout/dojox/app/tests/并非所有这些都是单页网页应用。我知道其他框架会为你做这个可能更容易学习,抱歉我没有任何链接。