【问题标题】:Phonegap on iOS: The browser does not support MediaStreamTrackiOS 上的 Phonegap:浏览器不支持 MediaStreamTrack
【发布时间】:2015-05-03 19:55:01
【问题描述】:

我写了一个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。我不完全确定该错误是什么意思,但我想知道是否有更“phonegap-friendly”的方法来解决这个问题?

【问题讨论】:

    标签: javascript ios html cordova


    【解决方案1】:

    您需要使用 iosrtc plugin 将 WebRTC 引入 iOS。仅此一项就可以使代码兼容。它使用MediaStreamTrack.getSources 来查找麦克风设备,但现在不推荐使用getSources 以支持navigator.mediaDevices.enumerateDevices(),因此您可能需要手动填充getSources,在内部使用enumerateDevices 以便它正确返回。不过,我相信插件已经这样做了。

    【讨论】:

      猜你喜欢
      • 2020-12-26
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      • 2012-02-02
      • 2018-06-11
      • 2019-07-06
      相关资源
      最近更新 更多