2016-12-05 11 views
2

(何らかの理由で私はこの問題の答えを得ることができません...)アンドロイドでマイクオーディオを入手してください。 AudioContext

こんにちは。私はアンドロイドマイクにアクセスする必要があります。私はこれを使ってウェブでチューナーアプリを作った:https://github.com/cwilso/PitchDetect。うまく動作します。

しかし、私はintelXDKとコードバのプラグインを使用してアンドロイドにアプリケーションをビルドすると、私はマイクの入力を得ることができません。私はこれを使用する必要があるかわからない:https://github.com/edimuj/cordova-plugin-audioinput。 androidのaudioContextを取得する正しい方法のようです。加えて、認可を与える必要があると言ってアプリをインストールするときに警告を表示します。おそらくそれは正しい道なのでしょうか?

とにかく誰かがこれを手伝ってくれますか?何らかの理由で、入力が有効になっているというログが表示されるにもかかわらず、音声が得られません。 (マイクはofcを使っています)

答えて

1

私はcordova-plugin-audioinputの作成者です。マイクからの生のオーディオデータにアクセスできるようにしています。 PitchDetectライブラリを変更することなく、audioinputプラグインと一緒に使用することはできません。 PitchDetectライブラリは、古いAndroidウェブビュー(< 5.0)ではサポートされていないgetUserMedia APIに依存しており、iOSウェブビューではサポートされていません。一方、cordova-plugin-audioinputは、iOSと古いAndroidウェブビューでのマイクアクセスを可能にするために特別に作成されました。

Android上であなたの特定の問題を解決することができ、迅速な方法:

インテルXDKを使用すると、点滅の新しいバージョンを使用することができます横断歩道のWebView、(オープンソース版とAndroidアプリの構築をサポートしていますChromeの)、Web Audio APIとgetUserMedia APIの両方をサポートしています。

インテルXDKでAndroid向けビルド設定画面に移動し、は「横断歩道で最適化」チェックボックスがチェックされていることを確認し、あなたのビルドで横断歩道を有効にするには。 CrosswalkをIntel XDKで使用する方法の詳細については、https://software.intel.com/en-us/xdk/blog/what-is-crosswalkを参照してください。

私はアプリはまた、マイクへのアクセス許可が必要なので、インテルXDKのビルド構成の「権限を追加」フィールドに「android.permission.RECORD_AUDIO」に入ると確信しています。あなたが、一方で、あなたがあなたのアプリをしたい場合(たとえばPitchDetectライブラリと一緒にコルドバ - プラグインaudioinputを使用したい場合はPitchDetect

と一緒にコルドバ - プラグインaudioinputを使用して

getUserMedia APIをサポートしていないiOSでも動作します)、いくつかの変更を行う必要があります。それはgetUserMediaに依存しないように、具体的には、あなたは、PitchDetectのtoggleLiveInput機能を変更する必要がありますが、代わりに始まり(および停止)audioinputプラグインとPitchDetectアナライザにaudioinputプラグインを接続します。

audioinput.start({ 
    streamToWebAudio: true, 
    audioContext: audioContext // To ensure that the audioinput plugin uses the same audioContext as the PitchDetect library 
}); 
analyser = audioContext.createAnalyser(); 
analyser.fftSize = 2048; 
audioinput.connect(analyser); 
updatePitch(); 

上記の例は、以前のAndroidバージョンでのサポートが制限されているWeb Audio APIに依然として依存しています。 Android 5以降は正常に動作するはずです。さまざまなブラウザでのWeb Audio APIサポートの詳細については、http://caniuse.com/#feat=audio-apiを参照してください。

私はこれが役立ち、幸運を願っています!

+0

ねえ。ご支援ありがとうございます。私はあなたが言ったことを正確に行いました(上記のコードをコピーしました)。しかし、私はautoCorrelate関数が常に-1を返していることに気づいた。 "if(rms <0.01)が-1を返す"ため、-1を返します。 (「//十分な信号がありません」とコメントされています。何か間違っていると思います。 – DigitalEvolution

関連する問題