Javascript在移动Safari中如何访问麦克风

4

我正在尝试使用Javascript在网页中实现对麦克风的访问,

使用navigator.getUserMedia({audio: true})navigator.mediaDevices.getUserMedia({audio:true})

(并实现了检查厂商前缀:

navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;)

响应页面按钮的点击事件调用该函数

在IOS Safari中似乎不起作用。(在桌面版Chrome上可以正常工作)

然而这些人似乎成功了-在我的iPhone的Safari上可以正常工作。

他们和我做的有什么不同?


有些浏览器只允许在用户交互后才能访问它。您是在响应交互时启动麦克风吗? - Trobol
是的,我会更新我的问题... - Yuval A.
看起来他们唯一做的重要事情就是 navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; - Trobol
我也会这样做 :) - Yuval A.
除非您向我们展示如何调用API,否则很难知道他们在做什么不同的事情。 - jib
1个回答

0

在输入文本框中,我们可以使用键盘麦克风,并在用户停止提问时以编程方式触发某些功能

var prevTextboxWords = "";
    var textboxWords = "";
    var textRepeatTimes = 0;
    var prevTextCheck = "";
    var textCheck = "";
    var textCheckNumber = 0;
    var x = 0;
    var speechTimeOutLimit = 16;
    var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);
    if (iOS) {
        iosVoice();

        function iosVoice() {
            setTimeout(function() {
                textCheck = $("#record").val();
                var numberOfWordsSpoken = textCheck.split(" ").length;
                if (numberOfWordsSpoken < 3) speechTimeOutLimit = 16;
                else if (numberOfWordsSpoken < 6) speechTimeOutLimit = 12;
                else speechTimeOutLimit = 7;
                if (textCheck != "" && textCheck == prevTextCheck) {
                    textCheckNumber++
                } else {
                    textCheckNumber = 0
                }
                if (textCheck.length < 4) textCheckNumber = 0;
                if (textCheckNumber > speechTimeOutLimit) {
                    textCheckNumber = 0;
                    $("#record").val("");
                    prevTextCheck = "";
                    textCheck = textCheck.toLowerCase();

                    console.log(textCheck + "HIT");


                    //some function with text textCheck

                   
                    

    
                    textCheck = ""
                }
                prevTextCheck = textCheck;
                coroverIosVoice()
            }, 200)
        }
    }
<input type="text" id="record">


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接