iOS上的Phonegap:浏览器不支持MediaStreamTrack

时间:2015-05-03 19:55:01

标签: javascript ios html5 cordova

我写了一个javascript / HTML5个应用,如果幅度达到一定值,则需要阅读用户的麦克风并播放短mp3

我不是所有使用javascript的人,但我找到了一个允许我读取用户麦克风幅度的库。 Here是图书馆的链接。

然后我使用以下代码播放mp3:

var audio = new Audio('a.mp3');
audio.play(); 

下面是一个精简的例子,说明正在发生的事情以及它如何组合在一起:

var mic = new p5.AudioIn();
var Timer;

function start()
{
   Timer = setInterval(tick, 100);
   mic.start();
}

function stop()
{
  clearInterval(Timer);
  mic.stop();
}

function playIt()
{
    clearInterval(Timer);
    mic.stop();
    var audio = new Audio('a.mp3');
    audio.play();
    alarmTimeout = setTimeout(start, 10000);
}

function tick()
{

    var p = parseInt(mic.getLevel()*100);

    if (p > 80)
    {

        playIt();
    }
}

该应用在浏览器中完美运行(我只测试了Chrome),但我想使用phonegap将此应用作为原生iOS应用运行。

当我复制我的HTML / javascript并运行它时,标题中出现错误The browser does not support MediaStreamTrack。我不完全确定这个错误意味着什么,但我想知道是否有更多的"手机友好的"接近这个的方法?

1 个答案:

答案 0 :(得分:0)

您需要使用iosrtc plugin将WebRTC带到iOS。仅此一点就可以使代码兼容。它使用MediaStreamTrack.getSources查找麦克风设备,但getSources现已弃用navigator.mediaDevices.enumerateDevices(),因此您可能需要使用{{1}手动填充getSources enumerateDevices在内部,以便它正确返回。我相信插件已经这样做了。