2017-10-04 22 views
1

私たちはAndroidのSoundPool APIを使ってwavファイルを再生しています。私たちはステレオチャンネルの1つをマイクを通してループし、もう一方をループさせないデバイスを作りました。Android SoundPoolがシングルチャンネルで再生できない

ループバックデバイスをコンピュータでテストし、正しく動作していることを確認しておく必要があります。

しかし、私たちがマイクにループバックされていないチャンネルを通してサウンドを再生しようとすると、マイクのそのチャンネルからのサウンドはまだ聞こえています。ヘッドフォンを差し込むと、Androidはまだ想定されていない場合でも、1チャンネルのサウンドの静かなバージョンを他のチャンネルに送信しているようです。

私たちは、1つのチャンネルでステレオWAVファイルを無音で試してみました。私たちはモノラルサウンドファイルを試しました。どちらも同じように再生されています。誰もがこれを説明し、どのようにそれを停止することができますか?使用しているコードは次のとおりです:

音量のバリエーション(0.01ではなく、0.01と0.99の代わりに0.01)を試しました。 Google Pixel、Samsung Note、LGなどの複数のテストデバイスでも試してみました。何も動作していないようです。何がありますか?

答えて

1

この「機能」は、すべてのAndroid.Media.*パッケージメディア出力に固有であり、それはAndroidは8チャンネルオーディオとミックスに利用可能なすべてのチャンネルまでサポートによる事実によるAndroidのオーディオスタックに物理的およびエミュレートされたデバイス上で起こりますオーディオ出力を生成します。あなたがそのマスクアウト右チャンネルを除くすべてのチャンネルをするAudioFormatを作成した場合

つまり、あなたはまだかかわらず、​​の左チャンネル(あなたは2チャンネルの出力デバイスを使用していると仮定した場合)に、いくつかの出力を持つことになります。

var audioFormat = new AudioFormat.Builder() 
       .SetChannelIndexMask(2) // Right channel 
       .SetSampleRate(8000) 
       .SetEncoding(Encoding.Pcm16bit) 
       .Build(); 

これらのAPIはlibmediaAudioFlingerの上にある、このようHAL、等...とはなど、FastMixer/NormalMixer/AudioMixerによって提供ミキシング最終の対象となっている...

あなたは(ALSAを見ることができますAdvanced Linux Sound Architecture)とOSS(Open Sound Syste通常のオーディオ処理をバイパスするために、ハードウェアオーディオサービスにアクセスするために使用される。

enter image description here

+0

回答ありがとうございます。私たちはハードウェアを改造してこれを「修正」しました。 –