サイトアイコン Androidやってみる!

(18) 画面タップしたら音を鳴らす。

7,087 views

この記事は最終更新から 1135日 が経過しています。

1. やりたいこと

画面をタップしたら音を鳴らしたい。

それだけ…

2. やってみる!

今回キーとなる要素は三つある。
(1) 音楽ファイルのリソース登録
(2) 画面タップの検知
(3) 音楽再生

Androidではどれも簡単に実装できるようにしてくれている。

(1) 音楽ファイルのリソース登録

Projectペインの res配下に raw ディレクトリを作り、そこに MP3なり WAVなりを登録すればよい。

rawディレクトリへの音楽ファイルの登録方法は、drawableディレクトリへの画像ファイル追加と同じ容量だ。
Explorerなどでファイルをコピーし、Projectペイン上の rawディレクトリでペーストすればよい。

(2) 画面タップの検知

onTouchEvent で通知される。
基本形は以下の通り。

@Override public boolean onTouchEvent( MotionEvent event ) {
    float x = event.getX();
    float y = event.getY();
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
       // 押されたときの処理を書く。
       break;
    case MotionEvent.ACTION_MOVE:
       // ドラッグされたときの処理を書く。
       break;
    case MotionEvent.ACTION_UP:
       // 離されたときの処理を書く。
       break;
    }
    return true;
}

(3) 音楽再生

SoundPool を使えばよい。
基本的な使い方は以下の通り。

SoundPool soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
int sound_id = soundPool.load(context, R.raw.mysound, 1);
soundPool.play(sound_id,  1.0F, 1.0F, 0, 0, 1.0F);

SoundPoolの使い方はこちらを参照のこと。

(4) 実装

たったのこれだけだ。

import android.media.AudioManager;
import android.media.SoundPool;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;

public class MainActivity extends AppCompatActivity {
    private SoundPool m_soundPool;
    private int m_soundID;

    @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        m_soundPool = new SoundPool(1,AudioManager.STREAM_MUSIC,0);
        m_soundID = m_soundPool.load(this.getApplicationContext(), R.raw.cheer, 1);
    }

    @Override public boolean onTouchEvent( MotionEvent event ) {
        if(event.getAction() == MotionEvent.ACTION_UP){
            
            m_soundPool.play(m_soundID, 1.0F, 1.0F, 0, 0, 1.0F);    // 音楽再生
        }
        return true;
    }
}

3. 所感

・ゲームの効果音にはこの方法が使えそうだ。
・アプリを一般公開する場合、WEB上で拾った音楽ファイルの使用は著作権に注意すること。


モバイルバージョンを終了