适用于Android的Firefox反复提示输入麦克风权限

时间:2019-05-21 23:15:38

标签: android angular typescript firefox recordrtc

我有一个应用程序,可以让用户重复记录音频片段以进行语音识别/评估。在所有其他主要浏览器上,系统都会提示用户一次使用麦克风的权限,然后可以继续进行其余过程而不会出现任何问题。但是,在Android版Firefox上,系统会提示用户是否在每次录制会话之间授予使用麦克风的权限。就上下文而言,每条记录只有几秒钟长,并且可能有30-60条记录,因此这可能会造成破坏。

我正在使用javascript库RecordRTC在Angular 4环境中管理与浏览器麦克风的交互。我已经在Chrome,Android Chrome,Edge,Firefox和Android Firefox应用程序上测试了该Web应用程序,只有Android Firefox出现了此问题。

以下是来自服务的相关代码,该代码正在捕获麦克风,初始化recordRTC对象并实际记录数据。

    this._elementRef = elementRef;
      this.captureMicrophone().then(() => {
          this.microphoneDataStreamService.setStream('mic', this.microphone);
          this.recordRtcInit(this.microphone);
          this._recordRtc.startRecording();
          this._recordRtc.microphone = this.microphone;
          this._recordedAudio = null;
          this._recordedAudio = new Audio();
      }); 
  }

    private recordRtcInit(microphone: MediaStream): void {
        if (!this._recordRtc) {
            this._recordRtc = RecordRTC(microphone, {
                type: 'audio',
                recorderType: RecordRTC.StereoAudioRecorder,
                numberOfAudioChannels: 1
            });
        } else {
            this._recordRtc.reset();
        }
    }

    captureMicrophone(){
        console.log(navigator.mediaDevices);
        navigator.mediaDevices.enumerateDevices().then((data) => {
            console.log(data);
        });
        return navigator.mediaDevices.getUserMedia({audio: true})
           .then(microphone => {
                this.microphone = microphone;
            })
            //.then(() => console.log("It worked"))
          .catch((error) => {
            console.log('Unable to access your microphone.');
            alert('Unable to access your microphone.');
            console.error(error);
          });
    }

我怀疑这是“ this._recordRtc.reset();”行,但是我不确定为什么在除Android Firefox以外的所有浏览器中都可以正常工作。

0 个答案:

没有答案