2

デジタル フィルターを使用して、他の (ストック ミュージック プレーヤーや Spotify など) アプリからのオーディオ再生を処理するアプリを構築しようとしています。

これまでのところ、OpenSL ES でマイクからのオーディオ入力用のフィルターを作成できました。フィルタリングされたオーディオは、ハードウェア出力に送信されます。このアプリは、このチュートリアルhttp://audioprograming.wordpress.com/2012/03/03/android-audio-streaming-with-opensl-es-and-the-ndk/に基づいています。

ハードウェア出力に送信される前に処理できるように、他のアプリから同様の入力バッファを取得するにはどうすればよいですか?

OpenSL ES やその他のネイティブ コードを使用する必要はありません。明確にするために; アプリは、非推奨になる前にandroid.media.audioofx.AudioEffectと同様の方法でカスタム フィルター効果を適用する必要があり、グローバル オーディオ出力ミックス (オーディオ セッション 0) にアタッチできます。

4

1 に答える 1

3

アプリは、他のアプリからのオーディオ出力を変更することはできません (ビジュアライザー API を差し引いても、読み取ることさえできません)。

オーディオ セッション 0 に関する注意事項: (JB / JB MR1 の時点で) 引き続き使用できますが、その可能性は将来の Android バージョンでなくなる可能性があります。ただし、覚えておくべき重要な点が 1 つあります。それは、アプリがセッション 0 以外にエフェクトを追加すると、セッション 0 に追加されたエフェクトが中断されることです。

オーディオ HAL は、有効なすべてのオーディオ エフェクトの (推定) CPU 使用率を追跡し、CPU サイクル バジェットを超える可能性がある場合は、新しいエフェクトの有効化を拒否します。これは、アプリケーションが一時停止することなくセッション 0 でエフェクトを自由に積み重ねることが許可されている場合、CPU サイクルの予算を超えているため、独自のオーディオ セッションで有効にするエフェクトを選択する機能を拒否することで、Spotify のようなアプリを台無しにする可能性があることを意味します。 .

于 2013-03-13T14:19:33.943 に答える