본문 바로가기

코드조각모음

[android008] 효과음을 위한 SoundPool 예제

import java.io.*;
import android.app.*;
import android.content.res.*;
import android.media.*;
import android.os.*;
import android.view.*;
import android.view.View.OnTouchListener;
import android.widget.*;


public class SoundPoolTest extends Activity implements OnTouchListener
{
    SoundPool soundPool;
    int explosionId = -1;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        TextView textView = new TextView(this);
        textView.setOnTouchListener(this);
        setContentView(textView);
       
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        soundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 0);
       
        try
        {
            AssetManager assetManager = getAssets();
            AssetFileDescriptor discriptor = assetManager.openFd("explosion.ogg");
            explosionId = soundPool.load(discriptor, 1);
        }
        catch(IOException e)
        {
            textView.setText("Couldn't load sound effect from asset, " + e.getMessage());
        }
    }
   
    @Override
    public boolean onTouch(View view, MotionEvent event)
    {
        if(event.getAction() == MotionEvent.ACTION_UP)
        {
            if(explosionId != -1)
            {
                soundPool.play(explosionId, 1, 1, 0, 0, 1);
            }
        }
        return true;
    }
}