最新の記事アプリケーションアクティビティ、インテント、サービスについてデバイスAndroidでのデバイス制御について。地磁気センサ、加速度センサなどマルチメディアグラフィックス、音楽や動画再生などマルチメディア処理についてユーザインターフェースAndroidのユーザインターフェイスについて、またユーザインターフェイスを提供するコンポーネントの話題について。リソースAndroidでのアイコン、画像、文字列、ローカライゼーションなどHacksマッシュアップ開発環境Androidの開発環境など。2.3からはイコライザやリバーブなどエフェクトをかけることが可能になりました。今回はイコライザに関して取り上げようと思います。「MediaPlayerで音楽を再生する」でMediaPlayerの使い方を理解していれば、任意の音楽にイコライザをかけることは簡単です。MediaPlayerに追加されたメソッドとEqualizerクラスを用いることで実現できます。SDKの中のサンプルにあるApiDemosでイコライザ(Equalizer)とビジュアライザ(Visualizer)を使われています。このSDKのサンプルではシークバー(SeekBar)を操作して、複数の周波数に対して操作していますが、今回はその中から実際にイコライズを行う箇所をピックアップして説明します。()SDK2.3(API9)から追加されたメソッドです。getAudioSessionIdメソッドはその名の通り、オーディオセッションIDを取得するメソッドです。このオーディオセッションIDは、イコライザなどのエフェクトのクラスを生成する際に用いることになります。android.media.audiofxパッケージこちらはSDK2.3(API9)から追加されたパッケージです。以下にエフェクトをMediaPlayerやAudioTrackに利用可能なエフェクトのクラスを示します。android.media.audiofxパッケージにはこれらのクラス以外にエフェクトの変更を受け取るリスナや、設定をするためのクラスがあります。詳細はAndroidDevelopersのドキュメントを参照してください。概要BassBoost低音増強EnvironmentalReverb詳細な設定ができるリバーブ。Equalizerイコライザ(中心周波数が定められているのでグラフィックイコライザ)PresetReverb音楽再生向けに6つのプリセットが選択できるリバーブVirtualizerビジュアライザEqualizerクラスコンストラクタは以下の通りです。audioSession)それではEqualizerクラスの使い方を見て行きましょう。インスタンスの生成と有効化です。mMediaPlayer.getAudioSessionId());mEqualizer.setEnabled(true);コンストラクタの第1引数の優先度は通常は0を設定し、audioSessionは先ほどのgetAudioSessionIdメソッドでMediaPlayerのオーディオセッションIDを取得して指定します。setEnableメソッドでエフェクトを有効にします。次に実際に調整する方法ですが、まずはシステムでどの中心周波数が調整可能なのかを確認します。(ApiDemosだとTextViewに中心周波数を表示&シークバーのonProgressChangedの処理を定義している)getNumberOfBandsメソッドでいくつ調整を行うことのできる中心周波数がいくつあるかを取得することができます。()調整する周波数の指定は直接周波数を指定(60Hzとか250Hzとか)するのではなく、0や2の様に指定します。getNumberOfBandsメソッドの戻り値が5であれば、0から4までの数字で指定することになります。それぞれがどの周波数を表しているかはgetCenterFreqメソッドで確認できます。band)1の周波数が何かを確認したければ下記の様に呼び出します。mEqualizer.getCenterFreq(1);そしてsetBandLevelメソッドでレベルを調整します。level)ここでLevelに指定することができる値はgetBandLevelRangeメソッドで取得する値の範囲です。()添字0が範囲の最小値で、添字1が最大値となります。サンプルコード上記で説明してきた内容を一纏めにしたサンプルコードです。2));}実行させたときのログです。5つの周波数に対して調整することが可能であり、setBandLevelの第2引数に指定することができる範囲は-1500〜1500ということが分かります。それぞれの中心周波数は60Hz、1230Hz、2910Hz、33600Hz、414000Hzということも分かります。関連する記事:Visualizerを使ってイコライザーや波形を表示するMediaPlayerで音楽を再生する音声ファイルを再生するRingtonePreferenceを使って、端末の音データを使用する。2.0(β)に対応した解説書です。TechBooster.TechBoosterについて。