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">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="6"
android:orientation="horizontal">
<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="wrap_content"
android:padding="5dp"
android:orientation="horizontal">
<Button
android:id="@+id/btnPlay"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:backgroundTint="#50000000"
android:textColor="@color/black"
android:text="듣기"/>
<Button
android:id="@+id/btnStop"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="#50000000"
android:textColor="@color/black"
android:text="중지"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvMP3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="실행중인 음악 : "/>
<ProgressBar
android:id="@+id/pbMP3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"/>
</LinearLayout>
</LinearLayout>
MainActivity.java
package com.example.mp3player;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
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.Switch;
import android.widget.TextView;
import android.widget.Toast;
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 플레이어");
ActivityCompat.requestPermissions(this,new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE},MODE_PRIVATE);
mp3List = new ArrayList<String>();
// 일단 모든 파일을 저장해 준다.
File[] listFiles = new File(mp3Path).listFiles();
String fileName, extName;
// 모든 파일 중에서 확장자명이 mp3인 파일들만 저장한다.
for(File file: listFiles){
fileName = file.getName();
Toast.makeText(getApplicationContext(),fileName,Toast.LENGTH_SHORT).show();
extName = fileName.substring(fileName.length()-3);
if(extName.equals((String) "mp3"))
mp3List.add(fileName);
}
listViewMP3 = (ListView) 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<?> arg0, View arg1, int arg2, long arg3) {
selectedMP3 = mp3List.get(arg2);
}
});
// 리스트뷰를 클릭하지 않고 <듣기>를 클릭할 때 오류가 발생하지 않게 하기 위한 코드
//selectedMP3 = mp3List.get(0);
btnPlay = (Button) findViewById(R.id.btnPlay);
btnStop = (Button) findViewById(R.id.btnStop);
tvMP3 = (TextView) findViewById(R.id.tvMP3);
pbMP3 = (ProgressBar) findViewById(R.id.pbMP3);
btnPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try{
mPlayer= new MediaPlayer();
mPlayer.setDataSource(mp3Path+selectedMP3);
// prepare 후에 start
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) {
// stop하고 꼭 reset
mPlayer.stop();
mPlayer.reset();
btnPlay.setClickable(true);
btnStop.setClickable(false);
tvMP3.setText("실행중인 음악 : ");
pbMP3.setVisibility(View.INVISIBLE);
}
});
btnStop.setClickable(false);
}
}
실행 화면
sd 카드에서 mp3파일 읽기 실패로 실행 화면 없음.
'안드로이드 > 연습' 카테고리의 다른 글
[Android] Thread (0) | 2021.08.29 |
---|---|
[Android] ProgressBar&SeekBar (0) | 2021.08.29 |
[Android] 가수 그룹 관리 DB 만들기 (0) | 2021.08.29 |
[Android] 영화 포스터 보기(GridLayout) (0) | 2021.08.27 |
[Android] ListView (0) | 2021.08.27 |