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);
(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上で拾った音楽ファイルの使用は著作権に注意すること。