안드로이드 MediaPlayer 노래 재생, 정지, 일시정지 하기
Android MediaPlayer music Play, Stop, Pause
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:background="@color/colorPrimary">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorPrimaryDark"
android:text="Music"
android:textSize="40dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="61dp"/>
<ImageView
android:layout_width="220dp"
android:layout_height="220dp"
android:src="@drawable/music_icon"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="135dp"/>
<Button
android:id="@+id/play"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="135dp"
android:background="@drawable/play_button" />
<Button
android:id="@+id/pause"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignBaseline="@id/play"
android:layout_alignParentStart="true"
android:layout_marginStart="97dp"
android:background="@drawable/pause_button"/>
<Button
android:id="@+id/stop"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/stop_button"
android:layout_alignTop="@id/pause"
android:layout_alignParentEnd="true"
android:layout_marginTop="-1dp"
android:layout_marginEnd="99dp"/>
</RelativeLayout>
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button play, pause, stop;
private MediaPlayer mediaPlayer;
private int pausePosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
play = (Button) findViewById(R.id.play);
pause = (Button) findViewById(R.id.pause);
stop = (Button) findViewById(R.id.stop);
play.setOnClickListener(this);
pause.setOnClickListener(this);
stop.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.play:
if (mediaPlayer==null) {
mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.dancecake);
mediaPlayer.start();
} else if(!mediaPlayer.isPlaying()) {
mediaPlayer.seekTo(pausePosition);
mediaPlayer.start();
}
break;
case R.id.pause:
if (mediaPlayer!=null) {
mediaPlayer.pause();
pausePosition=mediaPlayer.getCurrentPosition();
Log.d("pause check", ":" + pausePosition);
}
break;
case R.id.stop:
if (mediaPlayer!=null) {
mediaPlayer.stop();
mediaPlayer=null;
}
break;
}
}
}
MainActivity에서 3개의 버튼을 정의한다.
각 버튼마다 클릭리스너를 생성하는 것보다 Switch~case를 이용하는 것이
더 심플하고 보기가 좋다.
MediaPlayer.create를 통하여 객체를 생성하고 start()를 통하여 음악을 재생한다.
일시정지를 눌렀을 경우 int타입의 변수에 MediaPlayer.getCurrentPosition()을 담도록 하는데
이는 현재 지점을 저장해 놓은 것이다.
그리고 다시 재생 하였을 경우 seekTo를 통하여 정지된 시점을 찾아 다시 start()를 한다.
Define three buttons in MainActivity
For each button, it is better to use Switch~case than to create a ClickListener
Simpler and better looking
Create objects through MediaPlayer create and play music through start()
If you press pause button, MediaPlayer.getCurrentPosition() in the variable in the int type
This is the storage of the current state
If it is replayed again, find the point at which it stops through seekTo and start().
My situation is a little scary
'[# 2]…My DevelopStory' 카테고리의 다른 글
안드로이드 인플레이션 이해하기 ~ Understanding Android Inflation (0) | 2019.03.08 |
---|---|
안드로이드 아답터 이해하기 ~ understanding Android Adapter (0) | 2019.03.07 |
안드로이드 데이터베이스 SQLite 사용하기(메모저장) ~ Using Android Database SQLite (1) | 2019.03.04 |
안드로이드 프레그먼트를 이용한 이미지 뷰어 ~ ImageViewer with Android Fragment (0) | 2019.02.28 |
안드로이드 스튜디오 카메라로 사진 찍기 ~ Android Studio, Take a picture with a camera (0) | 2019.02.26 |