반응형
인터넷에 있는 파일 위치 지정(미디어가 있는 위치를 URL로 지정) - setDataSource 메소드로 URL 지정
프로젝트 파일에 포함한 후 위치 지정(앱을 개발하여 배포하는 과정에서 프로젝트의 리소스 또는 assets 폴더에 넣은 후 그 위치를 지정) - prepare 메소드를 호출하여 재생 준비
단말 SD 카드에 넣은 후 위치 지정 - start 메소드를 호출하여 음악 파일 재생
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.a73_audioplayer">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:usesCleartextTraffic="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.A73_AudioPlayer">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
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>
MainActivity
package com.example.a73_audioplayer;
import androidx.appcompat.app.AppCompatActivity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
public static final String AUDIO_URL = "http://sites.google.com/site/ubiaccessmobile/sample_audio.amr";
MediaPlayer mediaPlayer;
int position = 0;
@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();
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) {
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) {
// 미디어플레이어를 앱 내에서 재사용하려면 기존에 사용하던 리소스를 먼저 해제해야함
killMediaPlayer();
try {
// MediaPlayer 객체 만들어 시작하기
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
killMediaPlayer();
}
private void killMediaPlayer() {
if (mediaPlayer != null) {
try {
// MediaPlayer 객체의 리소스 해제
mediaPlayer.release();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
반응형
'안드로이드' 카테고리의 다른 글
오디오 녹음 후 저장 (0) | 2021.11.05 |
---|---|
동영상 재생 (0) | 2021.11.05 |
화면에 카메라 미리보기 넣기 (0) | 2021.11.05 |
카메라로 사진 찍어 저장 (0) | 2021.11.04 |
멀티터치 이미지 뷰어 만들기 (0) | 2021.11.03 |