ȸ¿ø°¡ÀԡžÆÀ̵ð/ºñ¹øã±â
ȨÀ¸·Î

Media Player¸¦ ÀÌ¿ëÇÑ À½¾Ç Àç»ý
7³â Àü
public class MusicPlayer extends ListActivity {
    private static final String MEDIA_PATH = new String("/sdcard/");
// ROOT °æ·Î¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
    private List<String> songs = new ArrayList<String>();
    private MediaPlayer mp = new MediaPlayer();
    private int currentPosition = 0;
// Àç»ýÇÒ °îÀÇ À§Ä¡ÀÔ´Ï´Ù.
            /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        updateSongList();
// SDÄ«µå·ÎºÎÅÍ ÆÄÀÏ ¸ñ·ÏÀ» ºÒ·¯¿À´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù.
    }
}


À§ÀÇ Äڵ忡¼­, ÀÏÀÏÀÌ /sdcard/¸¦ ÆÄÀÏ °æ·Î¿¡ ³Ö¾îÁÖ´Â ºÒÆíÇÔÀ» ÃÖ¼ÒÈ­Çϱâ À§ÇØ MEDIA_PATH·Î SDÄ«µåÀÇ ·çÆ® °æ·Î¸¦ ÁöÁ¤ÇØÁÖ¾ú½À´Ï´Ù. ±× ¾Æ·¡¿¡¼­´Â songs¶ó´Â ¸®½ºÆ®¸¦ »ý¼ºÇØÁÖ°í Àִµ¥, ¿©±â¿¡ ¿ì¸®°¡ Àç»ýÇÒ ÆÄÀÏÀÇ ¸ñ·ÏÀÌ µé¾î°¡°Ô µË´Ï´Ù. currentPositionÀº ArrayList¿¡¼­ÀÇ ¹è¿­ À妽º°ªÀ¸·Î, ¾î¶² °îÀ» Àç»ýÇÒÁö ¼±ÅÃÇØÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù.

onCreateÇÔ¼ö·Î ¿À°Ô µÇ¸é, updateSongList() ¸Þ¼Òµå¸¦ º¸½Ç ¼ö ÀÖ½À´Ï´Ù. ÀÌ updateSongList()¸Þ¼Òµå¿¡¼­´Â sdÄ«µå·ÎºÎÅÍ ÆÄÀÏÀ» Àоîµé¿© songs ¸®½ºÆ®¿¡ ³Ö¾î ÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù.

public void updateSongList() {
    File home = new File(MEDIA_PATH);
// homeÀ¸·Î sdÄ«µåÀÇ root¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
    if (home.listFiles(new Mp3Filter()).length > 0) {
        for (File file : home.listFiles(new Mp3Filter())) {
            songs.add(file.getName());
// Àç»ý¸ñ·Ï ¸®½ºÆ®¿¡ ÆÄÀÏ À̸§À» Ãß°¡ÇÕ´Ï´Ù.
        }
                    ArrayAdapter&;lt;String> songList = new ArrayAdapter<String>(this,
                R.layout.song_item, songs);
// ListViewÀÇ ·¹À̾ƿô ¹× ÂüÁ¶ÇÒ ¸®½ºÆ®¸¦ ¼³Á¤ÇÕ´Ï´Ù.
        setListAdapter(songList);
// ListView¿Í ArrayList¸¦ ¿¬°áÇÕ´Ï´Ù.
                }
}
¿©±â¿¡¼­ sdÄ«µåÀÇ ÆÄÀϵéÀ» Çϳª¾¿ °ÅÃÄ°¡¸é¼­ mp3 È®ÀåÀÚ¸¦ °¡Áö°í ÀÖ´Â ÆÄÀϵéÀ» ã¾Æ¼­ ¸®½ºÆ®¿¡ ³Ö¾îÁÖ°Ô µË´Ï´Ù.
ÀÌ ºÎºÐÀº Àúµµ óÀ½ º¸´Â °ÍÀ̶ó ÀÚ¼¼ÇÏ°Ô ¼³¸íÇϱⰡ ¾î·Æ³×¿ä. ÀÏ´ÜÀº ÀÌ ¿¹Á¦¸¦ ¹ßÀü½ÃÄѼ­ ´ÙÀ½ ¿¡Á¦¿¡¼­µµ °è¼Ó ½á¸ÔÀ»Å×´Ï, ÀÌ ÂÊ¿¡ ´ëÇؼ­ °øºÎ¸¦ ´õ ÇÏ°Ô µÇ¸é ¼³¸íÀ» Ãß°¡Çϵµ·Ï ÇÏ°Ú½À´Ï´Ù.

Mp3Filter Ŭ·¡½º´Â ´ÙÀ½°ú °°ÀÌ ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù.


À§¿¡¼­ º¸½Ã¸é, ListViewÀÇ ·¹À̾ƿôÀ¸·Î song_itemÀ» Ãß°¡ÇØÁÖ´Â °ÍÀ» º¼ ¼ö Àִµ¥, song_itemÀÇ ³»¿ëÀº ´ÙÀ½°ú °°½À´Ï´Ù.

class Mp3Filter implements FilenameFilter {
    public boolean accept(File dir, String name) {
        return (name.endsWith(".mp3"));
    }}

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content" id="@+id/song_item_layout" android:layout_width="fill_parent" android:textSize="15px"/>


Å©°Ô ¾î·Á¿î °ÍÀº ¾ø°í, 15pxÀÇ Å©±â¸¦ °¡Áö´Â TextViewÀÔ´Ï´Ù. ¸®½ºÆ®¿¡¼­ Ç׸ñÀº ÀÌ°÷¿¡ ÁöÁ¤µÈ ·¹À̾ƿôó·³ Ç¥½ÃµÉ °ÍÀÔ´Ï´Ù.

ÀÌÁ¦, ¸ñ·ÏÀ» Ŭ¸¯ÇÏ¸é ´ÙÀ½ °îÀ» Àç»ýÇÒ ¼ö ÀÖµµ·Ï ¸¸µé¾îº¸°Ú½À´Ï´Ù.
ListViewÀÇ OnListItemClick ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵åÇÏ¿© ±¸ÇöÇÕ´Ï´Ù.

protected void onListItemClick(ListView l, View v, int position, long id) {
    currentPosition = position;
    playSong(MEDIA_PATH + songs.get(position));
}

Ŭ¸¯ÇÑ Ç׸ñÀÇ index¸¦ Àç»ýÇÒ Ç׸ñÀ» ³ªÅ¸³»´Â currentPosition¿¡ ÀúÀåÇÏ°í, playSong()¸Þ¼Òµå·Î ÆÄÀÏÀÇ °æ·Î¸¦ ³Ñ°ÜÁָ鼭 Àç»ýÀ» ÇÏ°Ô²û µÇ¾îÀÖ½À´Ï´Ù. ¾Æ±î MEDIA_PATH¿¡¼­ SDÄ«µåÀÇ root ÁÖ¼Ò¸¦ ÀúÀåÇÏ°í ÀÖ¾ú°í, ÆÄÀÏ À̸§À» ´ã°í ÀÖ´Â songs¸®½ºÆ®¿¡¼­ ¼±ÅÃÇÑ Ç׸ñÀ» ¹Þ¾Æ¿À´Â get()¸Þ¼Òµå¸¦ ÅëÇØ ÇϳªÀÇ ¿Ï¼ºµÈ ÁÖ¼Ò°¡ µÇ¾î playSong()¸Þ¼Òµå·Î ³Ñ°ÜÁö°Ô µË´Ï´Ù.

ex)
µÎ¹ø° Ç׸ñÀ» ¼±ÅÃÇÑ °æ¿ì
position : 1
currentPosition : 1
songs.get(position) : 13_piano_solo.mp3

private void playSong(String songPath) {
    try {
             mp.reset();
// mp°´Ã¼¸¦ ÃʱâÈ­ÇÕ´Ï´Ù.
        mp.setDataSource(songPath);
        mp.prepare();
        mp.start();
        Toast.makeText(this, "Àç»ý : " + songPath, Toast.LENGTH_SHORT).show();
        TextView status = (TextView)findViewById(R.id.playStatus);
        status.setText("Àç»ýÁß : " + songPath);
            
// ÇÑ °îÀÇ Àç»ýÀÌ ³¡³ª¸é ´ÙÀ½ °îÀ» Àç»ýÇϵµ·Ï ÇÕ´Ï´Ù.
        mp.setOnCompletionListener(new OnCompletionListener() {
                 public void onCompletion(MediaPlayer arg0) {
                nextSong();
            }
             });
         } catch (IOException e) {
        Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
    }
}

playSong()¸Þ¼Òµå¿¡¼­´Â ÆÄÀÏÀ» Àç»ýÇØÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù.
reset()¸Þ¼Òµå¸¦ ÅëÇØ ´Ù¸¥ °îÀ» Àç»ýÇÒ ¼ö ÀÖ°Ô²û mp°´Ã¼¸¦ ÃʱâÈ­½ÃÄÑÁÖ°í, ±× ´ÙÀ½ °úÁ¤µéÀ» ÅëÇØ °´Ã¼¸¦ ÃʱâÈ­ÇÏ°í, °æ·Î¸¦ ÁöÁ¤ÇÑ ÈÄ À½¾ÇÀ» Àç»ýÇÕ´Ï´Ù.

setOnCompletionListener()¸¦ ÅëÇØ, ÇÑ À½¾ÇÀÌ ³¡³µÀ» °æ¿ì ´ÙÀ½ À½¾ÇÀ» ºÒ·¯¿À´Â ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù.

private void nextSong() {
    if (++currentPosition >= songs.size()) {
        
// ¸¶Áö¸· °îÀÌ ³¡³ª¸é, Àç»ýÇÒ °îÀ» ÃʱâÈ­ÇÕ´Ï´Ù.
        currentPosition = 0;
        TextView status = (TextView)findViewById(R.id.playStatus);
        status.setText("ÁغñµÊ");
    } else {
        
// ´ÙÀ½ °îÀ» Àç»ýÇÕ´Ï´Ù.
        Toast.makeText(getApplicationContext(), "´ÙÀ½ °îÀ» Àç»ýÇÕ´Ï´Ù.", Toast.LENGTH_SHORT).show();
        playSong(MEDIA_PATH + songs.get(currentPosition));
    }
}


¸¸¾à, ÇÑ °îÀÇ Àç»ýÀÌ ³¡³ª ´ÙÀ½ °îÀ¸·Î ³Ñ¾î°¡¾ß Çϴµ¥ ÇöÀç °îÀÌ ¸¶Áö¸·ÀÏ °æ¿ì´Â Àç»ýÀ» ¸ØÃß°í Àç»ýÇÒ °îÀÇ index¸¦ ³ªÅ¸³»´Â currentPositionÀ» 0À¸·Î ÃʱâÈ­ÇÏ°í, Àç»ý »óŸ¦ ³ªÅ¸³»´Â TextView¿¡ "ÁغñµÊ" ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù.
Àç»ýÇÒ °îÀÌ ÀÖ´Ù¸é, ´ÙÀ½ °îÀÇ Á¤º¸¸¦ ºÒ·¯¿Í ´Ù½Ã playSong()¸Þ¼Òµå·Î ³Ñ°ÜÁÜÀ¸·Î½á Àç»ýÀ» °è¼ÓÇÕ´Ï´Ù.

¿Ï¼ºµÈ ¼Ò½º´Â ´ÙÀ½°ú °°½À´Ï´Ù.

package com.androidhuman.MusicPlayer;
import java.io.File;import java.io.FilenameFilter;
import java.io.IOException;import java.util.ArrayList;
import java.util.List;import android.app.ListActivity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MusicPlayer extends ListActivity {
    private static final String MEDIA_PATH = new String("/sdcard/");
// ROOT °æ·Î¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
    private List<String> songs = new ArrayList<String>();
    private MediaPlayer mp = new MediaPlayer();
    private int currentPosition = 0;
// Àç»ýÇÒ °îÀÇ À§Ä¡ÀÔ´Ï´Ù.
            /** Called when the activity is first created. */
    @Override    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        updateSongList();
// SDÄ«µå·ÎºÎÅÍ ÆÄÀÏ ¸ñ·ÏÀ» ºÒ·¯¿À´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù.
    }      public void updateSongList() {
        File home = new File(MEDIA_PATH);
        if (home.listFiles(new Mp3Filter()).length > 0) {
            for (File file : home.listFiles(new Mp3Filter())) {
                songs.add(file.getName());
            }
                        ArrayAdapter<String> songList = new ArrayAdapter<String>(this,                    R.layout.song_item, songs);
            setListAdapter(songList);
                    }
    }
        
// List ¾ÆÀÌÅÛÀ» Ŭ¸¯ÇßÀ» ¶§ÀÇ event¸¦ ó¸®ÇÕ´Ï´Ù.
    protected void onListItemClick(ListView l, View v, int position, long id) {
        currentPosition = position;
        playSong(MEDIA_PATH + songs.get(position));
    }
        private void playSong(String songPath) {
        try {
                 mp.reset();
            mp.setDataSource(songPath);
            mp.prepare();
            mp.start();
            Toast.makeText(this, "Àç»ý : " + songPath, Toast.LENGTH_SHORT).show();
            TextView status = (TextView)findViewById(R.id.playStatus);
            status.setText("Àç»ýÁß : " + songPath);
                
// ÇÑ °îÀÇ Àç»ýÀÌ ³¡³ª¸é ´ÙÀ½ °îÀ» Àç»ýÇϵµ·Ï ÇÕ´Ï´Ù.
            mp.setOnCompletionListener(new OnCompletionListener() {
                     public void onCompletion(MediaPlayer arg0) {
                    nextSong();
                }
                 });
             } catch (IOException e) {
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
        }    }        private void nextSong() {
        if (++currentPosition >= songs.size()) {
            
// ¸¶Áö¸· °îÀÌ ³¡³ª¸é, Àç»ýÇÒ °îÀ» ÃʱâÈ­ÇÕ´Ï´Ù.
            currentPosition = 0;
           TextView status = (TextView)findViewById(R.id.playStatus);
            status.setText("ÁغñµÊ");
        } else {
            
// ´ÙÀ½ °îÀ» Àç»ýÇÕ´Ï´Ù.
            Toast.makeText(getApplicationContext(), "´ÙÀ½ °îÀ» Àç»ýÇÕ´Ï´Ù.", Toast.LENGTH_SHORT).show();
            playSong(MEDIA_PATH + songs.get(currentPosition));
        }
    }
}

class Mp3Filter implements FilenameFilter {
    public boolean accept(File dir, String name) {
        return (name.endsWith(".mp3"));
    }
}

main.xml ÀÇ ±¸¼ºÀº ´ÙÀ½°ú °°½À´Ï´Ù.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/playStatus"
android:gravity="center"
android:text="ÁغñµÊ"
android:textSize="13pt"></TextView>

<ListView
android:id="@id/android:list"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_weight="1"
android:drawSelectorOnTop="false"
>
</ListView>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SDÄ«µå¿¡ À½¾ÇÀÌ ¾ø½À´Ï´Ù!"
android:layout_gravity="center"
android:id="@+id/android:empty"></TextView>
</LinearLayout>


À§ÀÇ ±¸¼ºÀ» º¸¸é, ¸Ç ¾Æ·¡¿¡ android:empty¶ó´Â id¸¦ °¡Áø TextView¸¦ º¸½Ç ¼ö ÀÖ½À´Ï´Ù.
ÀÌ´Â, ¸¸¾à list¿¡ Ç¥½ÃÇÒ Ç׸ñÀÌ Çϳªµµ ¾øÀ» °æ¿ì Ç¥½ÃµÇ´Â È­¸éÀÔ´Ï´Ù.

android:empty¶ó´Â id´Â ¾Èµå·ÎÀ̵å ÀÚü¿¡¼­ ¸¸µé¾îÁ® ÀÖ´Â idÀ̹ǷÎ, id¸¦ ÀÔ·ÂÇϸé ÇØ´ç »óȲ¿¡ ¸Â°Ô²û È­¸éÀÌ º¸ÀÌ°Ô µË´Ï´Ù.
ÃßõÃßõ : 304 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
1,346
À©µµ¿ì ¼­¹ö 2019 Ãë¾àÁ¡ Á¡°Ë º¸¾È
1,345
À©µµ¿ì ¼­¹ö 2019 Ãë¾àÁ¡ Á¡°Ë º¸¾È (windows server 2019)
1,344
Windows Ãë¾àÁ¡Áø´Ü º¸¾È°¡À̵å¶óÀÎ
1,343
Windows Admin Center¸¦ ÅëÇÑ ¼­¹ö °ü¸®
1,342
À©µµ¿ì ¼­¹ö¿¡¼­ ½ÇÇàµÇ´Â ¼­ºñ½º È®ÀÎ
1,341
Chrome NET::ERR CERT REVOKED ÇØ°á¹æ¹ý
1,340
cmd ¸í·É¾î (¸í·É ÇÁ·ÒÇÁÆ® ¸í·É¾î) ¸ðÀ½
1,339
Windows10 ƯÁ¤ ÇÁ·Î±×·¥(OCS 2007 R2)¿¡¼­ ÷ºÎÆÄÀÏ µå·¡±×¾Øµå·ÓÀÌ ¾È µÇ´Â Çö»ó
1,338
À©µµ¿ì ·Î±×, °ü¸® À̺¥Æ® »èÁ¦
1,337
Ŭ¸° ºÎÆÃ
1,336
Windows ±¸¼º ¿ä¼Ò ÀúÀå¼Ò¿¡¼­ ÆÄÀÏ ¼Õ»ó °Ë»ç
1,335
Windows Defender °Ë»ç ±â·Ï »èÁ¦Çϱâ
1,334
°£´ÜÇÑ À©µµ¿ì 10 Á¤Ç° ÀÎÁõ (Å©·¢ÇÁ·Î±×·¥ ÇÊ¿ä¾øÀ½)
1,333
¿À·ù³­ Æú´õ °­Á¦»èÁ¦ ¹æ¹ý
1,332
Å©·Ò¿¡¼­ Ç÷¡½Ã Ç×»ó Çã¿ëÇϵµ·Ï ¼³Á¤Çϱâ (·¹Áö½ºÆ®¸®) reg ÆÄÀÏ ¸¸µé±â
1,331
GPT µð½ºÅ©¸¦ MBR µð½ºÅ©·Î º¯È¯
1,330
MBR µð½ºÅ©¸¦ GPT µð½ºÅ©·Î º¯È¯
1,329
±¸±Û °Ë»öÀ» 200% È°¿ëÇÏ°Ô ÇØÁÖ´Â °Ë»ö ¸í·É¾î ÃÑÁ¤¸®
1,328
[Jquery] jQuery·Î ¿ìŬ¸¯ ¹æÁö, µå·¡±× ¹æÁö, ¼±Åà ¹æÁö (IE10, ÆÄÀ̾îÆø½º, Å©·Ò È®ÀÎ)
1,327
php »ç¿ëÀÚ Á¢¼ÓIP, ºê¶ó¿ìÀúÁ¤º¸, osÁ¤º¸, http, https Á¢¼ÓÇÁ·ÎÅäÄÝ ¾Ë¾Æ¿À±â
1,326
[PHP] IE ºê¶ó¿ìÀú Á¢¼Ó °ËÃâÇϱâ
1,325
À©µµ¿ì10 ½Ã½ºÅÛ ¿¹¾à ÆÄƼ¼Ç È®ÀÎ ¹× »èÁ¦
1,324
À©µµ¿ì10 º¹±¸ ÆÄƼ¼Ç »èÁ¦ ¹æ¹ý
1,323
À©µµ¿ì10 ºÎÆÃÁö¿¬ °ËÀºÈ­¸é¿¡¼­ ¸îºÐ°£ ¸Ó¹«´Â Çö»ó ÇØ°á¹æ¹ý
1,322
»ï¼º³ëÆ®ºÏ ¹ÙÀÌ¿À½º ÁøÀÔÀÌ ºÒ°¡´ÉÇÑ °æ¿ì ¹ÙÀÌ¿À½º À缳ġ¿Í NVRAM ÃʱâÈ­
1,321
ÀͽºÇ÷η¯(IE)ÀÇ ±¸±Û °Ë»ö°ø±ÞÀÚ Çѱ۷Πº¯°æ ¹æ¹ý
1,320
À©µµ¿ì 10 ±âº» ¾Û »èÁ¦ ¹× º¹±¸
1,319
meta ÅÂ±× http-equiv ¼³Á¤¹æ¹ý°ú Â÷ÀÌÁ¡
1,318
±¸±Û(Google)°Ë»ö¿¡¼­ °í±Þ¿¬»êÀÚ¸¦ ÀÌ¿ëÇÏ¿© ¸¹Àº Á¤º¸¸¦ ¾ò´Â ¹æ¹ý
1,317
ÇÁ·Î±×·¥ ¾øÀÌ Çϵåµð½ºÅ© º¹»ç ¹× ¹é¾÷Çϱâ
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.