profile image

L o a d i n g . . .

반응형



안드로이드 MediaPlayer 노래 재생, 정지, 일시정지 하기

Android MediaPlayer music Play, Stop, Pause


안드로이드를 이용하여 기기에 저장되어 있는 노래를 재생할 수 있는데
이때 MediaPlayer를 사용하면 된다,
일단 지금은 재생 정지 및 일시정지 기능만 구현해 놓았다.

With Android, you can play songs stored on your device.
You can use MediaPlayer at this time
For now, only play, stop and pause function have been implemented.

<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>

레이아웃은 재생, 정지, 일시정지 버튼만 있다.

Layout have play, stop, pause button



raw폴더를 만들고 안에 mp3파일을 넣도록 한다.
넣는 방법은 drawable에 이미지파일을 넣는방법과 같다.

Make a raw folder and insert the mp3 file inside
The wayof inserting the image file is the same as the way of inserting the image file into the drawable

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




반응형
복사했습니다!