ボタンを押すとサウンド(効果音)が出る
ボタンを押すとサウンド(効果音)を出力するサンプルコードです。この方法はロリポップ(OSバージョン5)以降で使用可能です。
<サンプルコード1>
import android.media.AudioAttributes;
import android.media.SoundPool;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
int mySoundID; //サウンド管理ID
int oto; //サウンド
SoundPool soundPool; //サウンドプール
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Buttonのインスタンス(button)にボタンを登録
Button button = (Button)findViewById(R.id.button);
//ボタンにクリックイベントを設定
button.setOnClickListener(this);
//サウンドプールをクリア
soundPool = null;
//音を出すための手続き1 ※音の出し方を設定している
AudioAttributes audioAttributes = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM).setContentType(AudioAttributes.CONTENT_TYPE_SPEECH).build();
//音を出すための手続き2 ※1の設定を利用してsoundPoolを設定
soundPool = new SoundPool.Builder().setAudioAttributes(audioAttributes).setMaxStreams(1).build();
//鳴らしたい音を設定(rawフォルダにあるsound1という音)
oto = getResources().getIdentifier("sound1", "raw", getPackageName());
//あらかじめ音をロードする必要がある ※直前にロードしても間に合わないので早めに
mySoundID = soundPool.load(getBaseContext(), oto, 1);
}
//ボタンがクリックされると呼び出される
@Override
public void onClick(View v) {
//音を鳴らす
soundPool.play(mySoundID, 1f, 1f, 0, 0, 1);
}
}
<サンプルコード2>
ロリポップより前の端末に対応する場合は音を読み込むコードをバージョンで振り分けると良いです。
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
int mySoundID; //サウンド管理ID
int oto; //サウンド
SoundPool soundPool; //サウンドプール
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Buttonのインスタンス(button)にボタンを登録
Button button = (Button)findViewById(R.id.button);
//ボタンにクリックイベントを設定
button.setOnClickListener(this);
//サウンドプールを一旦クリア
soundPool = null;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
//ロリポップより前のバージョンに対応するコード
soundPool = new SoundPool(1, AudioManager.STREAM_ALARM, 0);
mySoundID = soundPool.load(getBaseContext(), oto, 1);
} else {
//音を出すための手続き1 ※音の出し方を設定している
AudioAttributes audioAttributes = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM).setContentType(AudioAttributes.CONTENT_TYPE_SPEECH).build();
//音を出すための手続き2 ※1の設定を利用してsoundPoolを設定
soundPool = new SoundPool.Builder().setAudioAttributes(audioAttributes).setMaxStreams(1).build();
//鳴らしたい音を設定(rawフォルダにあるsound1という音)
oto = getResources().getIdentifier("sound1", "raw", getPackageName());
//あらかじめ音をロードする必要がある ※直前にロードしても間に合わないので早めに
mySoundID = soundPool.load(getBaseContext(), oto, 1);
}
}
//ボタンがクリックされると呼び出される
@Override
public void onClick(View v) {
//音を鳴らす
soundPool.play(mySoundID, 1f, 1f, 0, 0, 1);
}
}
END