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