2015-11-09 16 views
5

私はCordovaとWeb Audio APIを使って、ヘッドホンを差し込んで、心臓に向かって電話を押し、自分のハートビートを聞くことができるアプリを開発しました。iOSのAudioContext.createMediaStreamSourceの代替ですか?

これは、オーディオフィルタノードを使用して行います。

//Setup userMedia 
context = new (window.AudioContext||window.webkitAudioContext); 
navigator.getUserMedia = (navigator.getUserMedia || 
          navigator.webkitGetUserMedia || 
          navigator.mozGetUserMedia || 
          navigator.msGetUserMedia); 
navigator.getUserMedia(
         {audio:true}, 
         userMediaSuccess, 
         function(e) { 
          alert("error2 " + e.message); 
         }); 

function userMediaSuccess(stream) 
{ 
    //set microphone as input 
    input = context.createMediaStreamSource(stream); 

    //amplify the incoming sounds 
    volume = context.createGain();  
    volume.gain.value = 10; 

    //filter out sounds below 25Hz 
    lowPass = context.createBiquadFilter(); 
    lowPass.type = 'lowpass'; 
    lowPass.frequency.value = 25; 

    //filter out sounds above 425Hz 
    highPass = context.createBiquadFilter(); 
    highPass.type = 'highpass'; 
    highPass.frequency.value = 425; 

    //apply the filters and amplification to microphone input 
    input.connect(lowPass); 
    input.connect(highPass); 
    input.connect(volume); 

    //send the result of these filters to the phones speakers 
    highPass.connect(context.destination); 
    lowPass.connect(context.destination);  
    volume.connect(context.destination); 


} 

Androidにデプロイするとうまく動作しますが、これらの機能のほとんどはiOSモバイルブラウザでは利用できないようです。

私はiosRTC pluginを使用してgetUserMedia関数を作成することができましたが、createMediaStreamSourceはまだ「関数ではありません」です。

私はWeb Audio APIの代わりに周波数をフィルターに掛けることができますが、私が使用できるプラグインがあれば完璧です。

+0

これを把握しましたか?ネイティブに行かずにコードワでこれを行うことは可能ですか?私はちょうどcordova-plugin-iosrtcを実装して、マイクからのライブデータにアクセスできるようになりました。ここにこだわっています。 –

+0

超遅れて返事を申し訳ありません。いいえ、私はネイティブに行かずに解決策を見つけることができませんでした。誰にでも使用できるなら、ネイティブアプリで[this](http://theamazingaudioengine.com/)エンジンを使用して終了しました。 –

答えて

1

iosウェブでこれを行う方法はありません。 Appleはサファリの音声入力をサポートしていないので、ネイティブアプリが必要です。

+0

それでは、ネイティブiOSアプリケーションを構築する方法を学ばなくてはなりません。 –

+0

悲しいことに、Apple Safariのチームがオーディオ入力に目を覚ますまで、うん。 – cwilso

0

あなたは

document.addEventListener('deviceready', function() { 
    // Just for iOS devices. 
    if (window.device.platform === 'iOS') { 
    cordova.plugins.iosrtc.registerGlobals(); 
    } 
}); 
+0

はい、私はすでにそれを持っています。 –

0

を使用しようとしましたあなたはかなりしばらく前にこの質問をしたが、悲しいことにcreateMediaStreamSourceはまだモバイル版Safari(それは、これまでのだろうか?)でサポートされていません。

前述のように、プラグインがこれを実現する唯一の方法であり、実際にはまさにそれを行うCordova/Phonegapプラグインがあります。 cordova-plugin-audioinputは、Web Audio APIを使用するか、生のオーディオデータチャンクを配信するコールバックを使用して、マイクからのサウンドにアクセスでき、iOSとAndroidをサポートします。

私は二度同じ答えを投稿したくないので、私が代わりにあなたにも、コードの例を見つけることができますStackOverflowの上ここでは、次の答えは、あなたを指します:https://stackoverflow.com/a/38464815/6609803

私はプラグインの作成者とフィードバックは高く評価されます。

関連する問題