发抖音小游戏平台的声控游戏,如何实现声控?

准备做一个声控类的小游戏,发到抖音小游戏的平台上,用typescript+creator2.4.0
请问如何监听到话筒的声音,从而控制角色的跳动?
有做过的朋友吗?具体如何解决获取话筒声音这个问题?(抖音小游戏平台,不是原生平台)

下面是我的代码:
const {ccclass, property} = cc._decorator;

@ccclass
export default class Helloworld extends cc.Component {

@property(cc.Label)
label: cc.Label = null;

@property
text: string = 'hello';

public voiceLevel: number = 0;
private _inited: boolean = false;
// private _audioContext: AudioContext = null;
private _audioInput: any = null;
private _analyserNode: any = null;
private _freqByteData: any = null;

onLoad() {
    // this._audioContext = new AudioContext();

    let _navigator: any = navigator;
    if (!_navigator.getUserMedia)
        _navigator.getUserMedia = _navigator.webkitGetUserMedia || _navigator.mozGetUserMedia;
    if (!_navigator.cancelAnimationFrame)
        _navigator.cancelAnimationFrame = _navigator.webkitCancelAnimationFrame || _navigator.mozCancelAnimationFrame;
    if (!_navigator.requestAnimationFrame)
        _navigator.requestAnimationFrame = _navigator.webkitRequestAnimationFrame || _navigator.mozRequestAnimationFrame;

    // let self = this;
    _navigator.getUserMedia(
        {
            "audio": {
                "mandatory": {
                    "googEchoCancellation": "false",
                    "googAutoGainControl": "false",
                    "googNoiseSuppression": "false",
                    "googHighpassFilter": "false"
                },
                "optional": []
            },
        }, function (stream) {
            // Create analyser node
            let audioContext = new AudioContext();
            // let audioContext: any = this._audioContext;
            let inputPoint = audioContext.createGain();

            let audioInput = audioContext.createMediaStreamSource(stream);
            audioInput.connect(inputPoint);

            let analyserNode = audioContext.createAnalyser();
            analyserNode.fftSize = 2048;
            inputPoint.connect(analyserNode);

            let freqByteData = new Uint8Array(analyserNode.frequencyBinCount);
            analyserNode.getByteFrequencyData(freqByteData);

            this._freqByteData = freqByteData;
            this._analyserNode = analyserNode;
            this._audioInput = audioInput;

            this._inited = true;
        }, function (e) {
            alert('Error getting audio');
            console.log(e);
            this._inited = false;
        });
}

start () {
    // init logic
    this.label.string = this.text;
}

update(dt) {
    if (this._inited) {
        let analyser = this._analyserNode,
            freqByteData = this._freqByteData;
        analyser.getByteFrequencyData(freqByteData);
        let sum = 0;
        for (let i = 0; i < freqByteData.length; i++) {
            sum += freqByteData[i];
        }
        this.voiceLevel = sum / freqByteData.length;
    }
}

}

手机扫二维码运行,报错如下:
TypeError: undefined is not a function (near ‘…_navigator.getUserMedia…’)
/app/engine/bin/cocos2d-js-for-preview.js:17295:20
anonymous
http://192.168.0.50:7456/app/engine/bin/cocos2d-js-for-preview.js:27537:19
invoke@http://192.168.0.50:7456/app/engine/bin/cocos2d-js-for-preview.js:27487:21

试了Panda大佬的方法(navigator.getUserMedia)
https://github.com/pandamicro/audio-control-game

然后PC端的浏览器好像是可以的,但用手机扫二维码,用手机来运行,则报错。

请问还有其他的什么办法可以解决这个功能吗

怎么找到官方大佬帮我解答一下?好紧急的需求:joy:
原生获取设备权限是可以的,只要我是不知道小游戏平台上能不能实现声控玩法的功能:joy::joy:

//这是我自己用到的,不知道能不能帮到你
created() {
if (navigator.mediaDevices.getUserMedia || navigator.getUserMedia) {
console.log(“调用用户媒体设备”);
this.initUserMedia({ video: true, audio: true }); // 调用用户媒体设备,访问摄像头、录音
} else {
console.log(“你的浏览器不支持访问用户媒体设备”);
}
}

initUserMedia(constrains) {
    if (navigator.mediaDevices.getUserMedia) {
        console.log("最新标准API");
        navigator.mediaDevices.getUserMedia(constrains).then(stream => { this.success(stream); }).catch(err => { this.error(err); });
    } else if (navigator.getUserMedia) {
        console.log("旧版API");
        navigator.getUserMedia(constrains, this.success, this.error);
    }
}
// 成功的回调函数
success(stream) {
    console.log("已点击允许,开启成功", stream);
}
// 异常的回调函数
error(error) {
    console.log("访问用户媒体设备失败:", error);
}

感谢,请问你这个是发到什么平台的,H5?还是微信小游戏平台?还是抖音小游戏平台?

感谢,请问你这个是发到什么平台的,H5?还是微信小游戏平台?还是抖音小游戏平台?

我发布的是H5

这个方法好像在小游戏平台上不行

好像这种方法h5可以,小游戏平台上不行:sob: