일단 기본적인 작동은 되는데, 사실 버튼을 클릭했을때 음악이 나오게 하고 싶었는데, 안되네요.;
그렇다고
mp = MediaPlayer.create(this, R.raw.bobbykim);
mp.start();
이 부분을
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
여기에 넣으면 오류가 나고..
버튼을 눌렀을때 음악이 나오게 하고, home을 눌렀을때 pause되었다가 다시 실행시키면 restart되게 하고 싶은데 혹시 방법 알고 계시는 분 제발 좀 알려주세요.ㅠ
여기서 어떻게하면 될까요?
아래는 제가 만든 예제입니다.
package com.Bong.practice;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class BongAndroid_EarTestActivity extends Activity {
/** Called when the activity is first created. */
MediaPlayer mp;
int curpos;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
mp = MediaPlayer.create(this, R.raw.bobbykim);
mp.start();
}
@Override
protected void onPause(){
curpos = mp.getCurrentPosition();
mp.stop();
super.onPause();
}
@Override
protected void onRestart(){
mp.seekTo(curpos);
mp.start();
super.onRestart();
}




버튼에 넣어서 안되는 이유는 mp에 대해 null 체크가 안되서일 듯 하고, mp.stop();가 불릴 경우 http://developer.android.com/reference/android/media/MediaPlayer.html 의 state diagram에 나오듯 stop 상태에서는 prepare, prepareAsync, reset, relese 정도만이 가능합니다. 간단히 고치실 거면 mp.stop(); 대신 mp.pause(); 를 넣어주심 될 듯 합니다.
혹은 아래와 같이 onPause시 미디어 플레이어를 종료하고, onRestart시 재 생성하셔도 되고요.
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class BongAndroid_EarTestActivity extends Activity {
/** Called when the activity is first created. */
MediaPlayer mp = null;
int curpos;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
reset();
mp = MediaPlayer.create(this, R.raw.bobbykim);
}
});
}
private void reset()
{
if(mp != null)
{
mp.reset();
mp.release();
mp = null;
}
}
@Override
protected void onPause(){
super.onPause();
if(mp != null)
{
curpos = mp.getCurrentPosition();
mp.stop();
reset();
}
}
@Override
protected void onRestart()
{
super.onRestart();
reset();
mp = MediaPlayer.create(this, R.raw.bobbykim);
mp.seekTo(curpos);
mp.start();
}
}