[Service練習]音楽を再生させる
6/11の記事「[ToggleButton]ボタンのON/OFFが一目瞭然」
で作ったボタンに音楽再生・停止機能をつけてみました。
import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; import android.os.IBinder; import android.widget.Toast; public class SoundControl extends Service { private NotificationManager mNM; MediaPlayer mp; @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { mp = MediaPlayer.create(this, R.raw.bgm); // 指定したリソースを再生するためのMediaPlayerを生成 } @Override public void onStart(Intent intent, int startId) { try{ mp.setLooping(true); // ループを許可 /* mp.prepare(); // 準備(例外処理が必要) * 入れるとエラー。 */ mp.start(); // 再生 }catch(Exception e){ Log.d("xxxx","エラー発生"+e.getMessage()); } } @Override public void onDestroy() { mp.stop(); mp.release(); Toast.makeText(this, "停止しました!", Toast.LENGTH_SHORT).show(); } }
MediaPlayerクラスのメソッド一覧
http://pentan.info/android/app/mediaplayer_method.html
作成方法参考
http://www.adamrocker.com/blog/213/android_play_music.html
prepare()でエラー↓ 1.5の場合ですが、MediaPlayer.createは内部でprepareを呼ぶので、アプリ側で明示的にprepareを呼んではならないようです。そのため、サンプルを動かすとIllegalStateExceptionになります。prepareを呼ばずにstartを呼ぶとうまくいきます。