Android4.1新機能特集:MediaActionSoundを利用する


カメラのシャッター音やVideoの撮影音は今まではSoundPoolやMediaPlayerにてリソースを設定し流すしかありませんでした。

Android4.1からの新機能のMediaActionSoundを使うとOS標準の音を持ってきて利用することができます。

MediaActionSoundの持つメソッドは以下のようになります。
[table “266” not found /]

音をロードすることができる種類は以下のようになります。
[table “267” not found /]

続きで実装方法を見てみましょう。

標準のカメラの撮影音を出す

今回はボタンを押した時にMediaActionSoundで音を鳴らすようにしたサンプルをご紹介します。
ボタンを押した時にピコンと音がなります。

ただし、実装では2点注意しなければならない点があります。
音楽リソースのロード(loadメソッド)を行なってから再生(playメソッド)を行うようにしてください。そしてアプリを終了するときに必ず開放(releaseメソッド)を忘れないようにしてください。

それではソースコードは以下の通りです。
■MainActivity.java

public class MainActivity extends Activity implements OnClickListener {
    private MediaActionSound mSound;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mSound = new MediaActionSound();
        mSound.load(MediaActionSound.SHUTTER_CLICK);

        Button button = (Button) findViewById(R.id.sound);
        button.setOnClickListener(this);
    }

    @Override
    protected void onDestroy() {
        mSound.release();
        super.onDestroy();
    }

    public void onClick(View v) {
        if(v.getId() == R.id.sound){
            mSound.play(MediaActionSound.SHUTTER_CLICK);
        }

    }
}

9行目にてシャッター音をロードするように指定し、ボタンが押された時にコールバックされたところの23行目にてロードした音の再生を行なっています。
そしてアプリを終了するときに17行目にてリソースの開放を行なっています。