「八章:音を出す」の編集履歴(バックアップ)一覧はこちら
八章:音を出す - (2013/09/02 (月) 12:49:11) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
画像が出てタッチもできる。
でも、なんだか物足りない。
やっぱり音が出る方がいじってる感じがするよね!
という訳で、今回は音関係について触れていくよ!
※プロジェクトを作成したらresフォルダーに「rawフォルダー」を作成して
その中にSE用のサウンドファイルとBGM用のサウンドファイルを入れておく。
#region(ソース)
&bold(){&color(red){※ボタンを複数配置したときのソースを流用}}
ボタン名は分かりやすいように変更すること。実際の表示名も同様。
例:button→musicButton button→seButton
#highlight(linenumber,java){{
public class MainActivity extends Activity implements OnClickListener{
//インスタンス変数宣言
private SoundPool mSoundPool;
private MediaPlayer mMediaPlayer;
private int mSeId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//ボタンのクリックイベントを使えるようにする
Button button = (Button) findViewById(R.id.button01);
button.setOnClickListener(this);
Button button2 = (Button) findViewById(R.id.button02);
button2.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.button01:
//MediaPlayerが再生中かどうか判定
//再生中ならtrue そうでなければfalse
if(mMediaPlayer.isPlaying() == false)
{
//MediaPlayer再生
mMediaPlayer.start();
}else
{
//MediaPlayer一時停止
mMediaPlayer.pause();
}
break;
case R.id.button02:
//SoundPool再生
mSoundPool.play(mSeId, 1.0F, 1.0F, 0, 0, 1.0F);
break;
}
}
@Override
protected void onResume(){
super.onResume();
//予め音声データの読み込みを行う(インスタンス生成)
mSoundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
mSeId = mSoundPool.load(getApplicationContext(), R.raw.se, 0);
//MediaPlayer準備(インスタンス生成)
mMediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.bgm);
}
@Override
protected void onPause(){
super.onPause();
//SoundPoolのリリース
mSoundPool.release();
//MediaPlayerのリリース
mMediaPlayer.release();
}
}
}}
#endregion
#region(解説)
***・SoundPoolとMediaPlayerの違いについて
・SoundPool
だいたい5秒くらいの短い音声を再生することが出来る。
サンプルで押してみると分かるが、連打すると先に鳴った音をキャンセルして音が鳴る。
もちろん複数サウンドの同時再生も可能。(ここでは書かないけど)
音声ファイル形式はWAVE、ogg、(mp3)※機種によっては再生されないことがあるらしい。
この特性からしてSE向きってはっきりわかんだね
・MediaPlayer
長い音声が再生できる。
再生開始した後にまた再生しようとしても受け付けない。
SoundPoolのようにキャンセルして最初から再生するようにしたければ追加で記述する必要がある。
実際は再生、一時停止(再度再生時止めた場所から再生)、停止(再度再生時頭出し再生)
みたいに分けて管理してあげるといいんじゃないかな!
音声ファイル形式はmp3を筆頭に有名どころは揃ってるらしい。
この特性からしてBGM向きってはっきりわかんだね
#endregion
画像が出てタッチもできる。
でも、なんだか物足りない。
やっぱり音が出る方がいじってる感じがするよね!
という訳で、今回は音関係について触れていくよ!
※プロジェクトを作成したらresフォルダーに「rawフォルダー」を作成して
その中にSE用のサウンドファイルとBGM用のサウンドファイルを入れておく。
#region(ソース)
&bold(){&color(red){※ボタンを複数配置したときのソースを流用}}
ボタン名は分かりやすいように変更すること。実際の表示名も同様。
例:button→musicButton button→seButton
#highlight(linenumber,java){{
public class MainActivity extends Activity implements OnClickListener{
//インスタンス変数宣言
private SoundPool mSoundPool;
private MediaPlayer mMediaPlayer;
private int mSeId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//ボタンのクリックイベントを使えるようにする
Button button = (Button) findViewById(R.id.button01);
button.setOnClickListener(this);
Button button2 = (Button) findViewById(R.id.button02);
button2.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.button01:
//MediaPlayerが再生中かどうか判定
//再生中ならtrue そうでなければfalse
if(mMediaPlayer.isPlaying() == false)
{
//MediaPlayer再生
mMediaPlayer.start();
}else
{
//MediaPlayer一時停止
mMediaPlayer.pause();
}
break;
case R.id.button02:
//SoundPool再生
mSoundPool.play(mSeId, 1.0F, 1.0F, 0, 0, 1.0F);
break;
}
}
@Override
protected void onResume(){
super.onResume();
//予め音声データの読み込みを行う(インスタンス生成)
mSoundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
mSeId = mSoundPool.load(getApplicationContext(), R.raw.se, 0);
//MediaPlayer準備(インスタンス生成)
mMediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.bgm);
}
@Override
protected void onPause(){
super.onPause();
//SoundPoolのリリース
mSoundPool.release();
//MediaPlayerのリリース
mMediaPlayer.release();
}
}
}}
#endregion
#region(解説)
***・SoundPoolとMediaPlayerの違いについて
・SoundPool
だいたい5秒くらいの短い音声を再生することが出来る。
サンプルで押してみると分かるが、連打すると先に鳴った音をキャンセルして音が鳴る。
もちろん複数サウンドの同時再生も可能。(ここでは書かないけど)
音声ファイル形式はWAVE、ogg、(mp3)※機種によっては再生されないことがあるらしい。
この特性からしてSE向きってはっきりわかんだね
・MediaPlayer
長い音声が再生できる。
再生開始した後にまた再生しようとしても受け付けない。
SoundPoolのようにキャンセルして最初から再生するようにしたければ追加で記述する必要がある。
実際は再生、一時停止(再度再生時止めた場所から再生)、停止(再度再生時頭出し再生)
みたいに分けて管理してあげるといいんじゃないかな!
音声ファイル形式はmp3を筆頭に有名どころは揃ってるらしい。
この特性からしてBGM向きってはっきりわかんだね
***・SoundPoolとMediaPlayerの使い方
・SoundPool
1:インスタンス生成
2:読み込みする
3:再生する
4:終了時破棄
・MediaPlayer
#endregion