728x90
# 간단한 MP3 플레이어 기능
안드로이드 스튜디오에서 구현할 수 있는 간단한 MP3 플레이어 앱입니다.
# 준비물
mp3 파일 2~3개 이상
# AndroidManifest.xml
SD카드 공간을 사용하기 위해 permission 속성 추가입니다.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> // 이 코드와
<application
android:requestLegacyExternalStorage="true" // 이 코드를 추가합니다.
# mp3 파일 저장
몇 개의 mp3파일을 Device File Explorer에서
storage > emulated > 0 에 넣어줍니다.
해당 폴더를 우클릭하여 upload로 저장할 수 있습니다.
저장하고나면 아래쪽에 song1.mp3 ~ song3.mp3 처럼 파일이 저장된 것을 확인할 수 있습니다.
# activity_main.xml
메인 액티비티의 화면을 구성합니다.
위치: project > app > res > layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="6">
// mp3 리스트를 보여주고 선택합니다.
<ListView
android:id="@+id/listViewMP3"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
// 재생버튼, 정지버튼
<Button
android:id="@+id/btnPlay"
android:layout_weight="1"
android:layout_margin="3dp"
android:text="재생"
android:textSize="30dp"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<Button
android:id="@+id/btnStop"
android:layout_weight="1"
android:layout_margin="3dp"
android:textSize="30dp"
android:text="정지"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
// 현재 재생중인 음악을 보여줍니다.
<TextView
android:id="@+id/tvMP3"
android:gravity="center"
android:text="실행중인 음악:"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
// 재생되고 있다는 애니메이션을 표현합니다.
<ProgressBar
android:id="@+id/pbMP3"
android:visibility="invisible"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
</LinearLayout>
</LinearLayout>
# MainActivity.java
메인 액티비티의 기능을 구현합니다.
위치: project > add > java > "프로젝트명"
package com.exam.p13_1_mp3player;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ListView listViewMP3;
Button btnPlay, btnStop;
TextView tvMP3;
ProgressBar pbMP3;
ArrayList<String> mp3List;
String selectedMP3;
String mp3Path = Environment.getExternalStorageDirectory().getPath() + "/";
MediaPlayer mPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("MP3 PLAYER");
// SD카드를 사용하겠다는 permission 설정
ActivityCompat.requestPermissions(this, new String[] {
Manifest.permission.WRITE_EXTERNAL_STORAGE}, MODE_PRIVATE);
mp3List = new ArrayList<String>();
// mp3 파일 불러오기
File[] listFiles = new File(mp3Path).listFiles();
String fileName, extName;
for(File file : listFiles){
fileName = file.getName();
extName = fileName.substring(fileName.length() - 3);
if(extName.equals((String) "mp3"))
mp3List.add((fileName));
}
// 리스트뷰에 mp3 음악 추가하기
listViewMP3 = findViewById(R.id.listViewMP3);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_single_choice, mp3List);
listViewMP3.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listViewMP3.setAdapter(adapter);
listViewMP3.setItemChecked(0, true);
listViewMP3.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
selectedMP3 = mp3List.get(i);
}
});
selectedMP3 = mp3List.get(0);
btnPlay = findViewById(R.id.btnPlay);
btnStop = findViewById(R.id.btnStop);
tvMP3 = findViewById(R.id.tvMP3);
pbMP3 = findViewById(R.id.pbMP3);
// 재생버튼
btnPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try{
mPlayer = new MediaPlayer();
mPlayer.setDataSource(mp3Path + selectedMP3);
mPlayer.prepare();
mPlayer.start();
btnPlay.setClickable(false);
btnStop.setClickable(true);
tvMP3.setText("실행중인 음악:" + selectedMP3);
pbMP3.setVisibility(View.VISIBLE);
}catch (IOException e){}
}
});
// 정지 버튼
btnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mPlayer.start();
mPlayer.reset();
btnPlay.setClickable(true);
btnStop.setClickable(false);
tvMP3.setText("실행중인 음악: ");
pbMP3.setVisibility(View.INVISIBLE);
}
});
btnStop.setClickable(false);
}
}
728x90
'안드로이드' 카테고리의 다른 글
[안드로이드] SQLite 처음 사용해보기 (0) | 2022.12.12 |
---|---|
[안드로이드] 간단한 갤러리 앱 만들기 (1) | 2022.12.08 |
[안드로이드] 간단한 투표 앱 만들기. intent.putExtra(), getExtra()를 활용. (0) | 2022.12.06 |
[안드로이드] 간단한 포토샵 앱 만들기 (0) | 2022.11.30 |
[안드로이드] 간단한 터치로 도형그리는 방법 (0) | 2022.11.28 |