我能够从浏览器中获取声音字节数据,但是当我为手机构建它并尝试它时,它无法正常工作。
我已经检查过,人们对cordova-plugin-media-capture
有好运但是,它似乎录制了音频并将其存档在设备上。
我需要以某种方式获取音频数据并在手机上自行操作。
我目前正在做什么来在非移动设备上获取音频
navigator.mediaDevices.getUserMedia({audio: true}).then(onMediaSuccess).catch(onMediaError);
function onMediaSuccess(stream) {
mediaRecorder = new MediaStreamRecorder(stream);
mediaRecorder.mimeType = 'audio/wav';
mediaRecorder.ondataavailable = handleDataAvailable;
mediaRecorder.start();
function handleDataAvailable(blob) {
toBuffer(blob, function(err, buffer) {
if (err)
throw err
ws.publish(`com.app.audioStream__`, {payload: buffer});
});
}
}
然而,似乎用户媒体似乎没有效果。
我尝试过使用navigator.device.capture.captureAudio
,但在手机上调试它并看看控制台输出的内容有点困难。
当我使用该方法时,它会提示一些由cordova管理的UI,它希望我收听声音并停止它然后将其写入文件。我正在寻找积极阅读麦克风。
编辑:
我甚至试过cordova-diagnostic-plugin
// check and request microphone access
cordova.plugins.diagnostic.getMicrophoneAuthorizationStatus(function(status) {
if (status !== "GRANTED") {
cordova.plugins.diagnostic.requestMicrophoneAuthorization(function(status) {
//...
return;
});
}
}, function() {
throw new Meteor.error('failed to get permission for microphone');
});
导致空白屏幕。
到目前为止,我没有简单的方法来提示麦克风权限。