티스토리 뷰
멀티미디어를 위해 제공되는 미디어 API 는 android.media 패키지가 들어있다. 그 중 MidiaPlayer Class는 음악 파일과 같은 오디오와 동영상 재생을 담당한다.
미디어 플레이어로 음악 파일을 재생하는 과정은 다음과 같이 세 단계로 나눌 수 있다.
- 데이터 소스 URL 지정
- 준비 - prepare()
- 시작 - start()
그리 어려운 코드는 아니니 바로 예제를 확인하자.
◎activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="재생" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="중지" />
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="일시정지" />
<Button
android:id="@+id/button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="재시작" />
</LinearLayout>
◎ActivityMain.java
package com.example.sampleaudio;
import android.media.MediaPlayer;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
public static final String AUDIO_URL = "http://sites.google.com/site/ubiaccessmobile/sample_audio.amr";
MediaPlayer mediaPlayer;
int position;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
playAudio(AUDIO_URL);
Toast.makeText(getApplicationContext(),"음악 파일 재생 시작됨.", Toast.LENGTH_LONG).show();
}
});
Button button2 = findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (mediaPlayer != null) {
mediaPlayer.stop();
// MediaPlayer.OnCompletionListener를 구현하여 음악이 정지되었을 때 콜백 메서드를 정의할 수 있다
Toast.makeText(getApplicationContext(),"음악 파일 재생 중지됨.",
Toast.LENGTH_LONG).show();
}
}
});
Button button3 = findViewById(R.id.button3);
button3.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (mediaPlayer != null) {
// 현재까지 재생하고 있던 부분 int 값으로 저장
position = mediaPlayer.getCurrentPosition();
mediaPlayer.pause();
Toast.makeText(getApplicationContext(),"음악 파일 재생 일시정지됨.",
Toast.LENGTH_LONG).show();
}
}
});
Button button4 = findViewById(R.id.button4);
button4.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (mediaPlayer != null && !mediaPlayer.isPlaying()) {
mediaPlayer.start();
mediaPlayer.seekTo(position);
Toast.makeText(getApplicationContext(),"음악 파일 재생 재시작됨.",
Toast.LENGTH_LONG).show();
}
}
});
}
private void playAudio(String url) {
// mediaPlayer 객체가 존재한다면 kill
killMediaPlayer();
try {
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();
mediaPlayer.start();
} catch(Exception e) {
e.printStackTrace();
}
}
protected void onDestroy() {
super.onDestroy();
killMediaPlayer();
}
private void killMediaPlayer() {
if (mediaPlayer != null) {
try {
// 객체가 이미 리소스를 사용하고 있다면 할당 해제
mediaPlayer.release();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
반응형
'Mobile > Android' 카테고리의 다른 글
[Android] Multi Media 5: Camera2 API (0) | 2022.04.20 |
---|---|
[Android] Multi Media 4: 동영상 재생하기 (0) | 2022.04.20 |
[Android] Multi Media 2: 화면에 카메라 미리보기 삽입(Camera) (0) | 2022.04.19 |
[Android] Multi Media 1: 카메라로 사진 찍어 저장 (0) | 2022.04.19 |
[Android] Graphic 4: Bitmap 그리기 (0) | 2022.04.17 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- 맛집
- javascript
- react
- react-native
- redux-thunk
- 인천 구월동 맛집
- 이탈리안 레스토랑
- 정보보안기사 #실기 #정리
- Async
- AsyncStorage
- Promise
- 인천 구월동 이탈리안 맛집
- 파니노구스토
- await
- redux
- Total
- Today
- Yesterday