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

Posted

技术标签:

【中文标题】iOS 上的 Phonegap:浏览器不支持 MediaStreamTrack【英文标题】:Phonegap on iOS: The browser does not support 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”的方法来解决这个问题?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于iOS 上的 Phonegap:浏览器不支持 MediaStreamTrack的主要内容,如果未能解决你的问题,请参考以下文章

如何从 iOS 上的 PhoneGap 应用程序连接到 SignalR 集线器?

PhoneGap 上的 OneSignal for iOS 不注册设备

iOs 10 上的 Phonegap。不显示 navigator.notification.alert

Phonegap + jQueryMobile + iOS 上的 PushNotifications

Android 和 iOS 上的本地存储有多持久?

iPhone - iOS5:phonegap 上的地理位置