mojo's Blog

Audio 본문

Android

Audio

_mojo_ 2021. 9. 7. 20:11

멀티미디어를 동작시키기 위해 제공되는 MediaPlayer 클래스는 음악과 동영상을 재생해주는 기능을 한다.

사용법이 간단하여 어렵지 않게 오디오 재생 기능을 구현할 수 있다.

MediaPlayer의 play(), pause(), stop() 메소드는 각각 음악을 시작, 일시 정지, 정지하는 기능을 한다.

 

XML Code

 

<?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:padding="10dp"
    android:orientation="vertical">

    <Switch
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="음악듣기"
        android:id="@+id/switch1"/>

</LinearLayout>

 

Java Code

 

public class MainActivity extends AppCompatActivity {
    Switch s;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("연습하기");

        s = (Switch)findViewById(R.id.switch1);

        final MediaPlayer mPlayer;
        mPlayer = MediaPlayer.create(this, R.raw.song1);
        s.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(s.isChecked()) mPlayer.start();
                else mPlayer.stop();
            }
        });
    }
}

 

연습하기 )  간단한 MP3 플레이어 만들기 (SD 카드의 mp3 파일을 이용함)

 

XML Code

 

<?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:padding="10dp"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="6"
        android:background="#00ff00"
        android:orientation="horizontal">
        <ListView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/listViewMp3"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:orientation="horizontal">
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="듣기"
            android:id="@+id/btnPlay"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="중지"
            android:id="@+id/btnStop"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="실행중인 음악: "
            android:id="@+id/textMp3"/>
        <ProgressBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/pbMp3"
            android:visibility="invisible"/>
    </LinearLayout>

</LinearLayout>

 

Java Code

 

public class MainActivity extends AppCompatActivity {
    Button btnPlay, btnStop;
    ListView listViewMp3;
    TextView tvMp3;
    ProgressBar pbMp3;

    ArrayList<String> mp3List;
    String selectedMp3;
    String mp3Path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/Ringtones";
    MediaPlayer mPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("연습하기");

        btnPlay = (Button)findViewById(R.id.btnPlay);
        btnStop = (Button)findViewById(R.id.btnStop);
        listViewMp3 = (ListView)findViewById(R.id.listViewMp3);
        tvMp3 = (TextView)findViewById(R.id.textMp3);
        pbMp3 = (ProgressBar)findViewById(R.id.pbMp3);

        mp3List = new ArrayList<String>();

        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);
        }

        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.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.stop();
                mPlayer.reset();
                btnPlay.setClickable(true);
                btnStop.setClickable(false);
                tvMp3.setText("실행중인 음악 : ");
                pbMp3.setVisibility(View.INVISIBLE);
            }
        });
    }
}

 

 

 

'Android' 카테고리의 다른 글

SQLite 프로그래밍  (0) 2021.09.05
데이터베이스 기본 개념 알아가기  (0) 2021.09.05
갤러리와 스피너  (0) 2021.09.05
리스트뷰와 그리드뷰  (0) 2021.09.04
안드로이드 프로그래밍 제 10장 연습문제 6번  (0) 2021.09.04
Comments