1.¿Àµð¿À

1.MediaPlayer

ºñ½Ñ ½º¸¶Æ®ÆùÀ» »ç ³õ°íµµ ¸·»ó ÀüÈ­ ±â´É¸¸ »ç¿ëÇÏ´Â »ç¶÷µéÀÌ¶óµµ ÃÖ¼ÒÇÑ À½¾ÇÀº µè´Â´Ù. ½º¸¶Æ®ÆùÀÇ ÁÖµÈ ±¸ÀÔ ¸ñÀû Áß Çϳª°¡ ÆùÀ̶û MP3¶û µÑ ´Ù µé°í ´Ù´Ï±â ½È¾î¼­ÀÎ °æ¿ì°¡ ¸¹À¸¸ç ¿©±â¿¡ µ¿¿µ»ó ±â´É±îÁö Àß È°¿ëÇϸé PMP·Îµµ °Å¶áÈ÷ »ç¿ëÇÒ ¼ö ÀÖ´Ù. DMBµµ ¹°·Ð ¾ÆÁÖ ½Ç¿ëÀûÀÎ ±â´ÉÀÌ´Ù. ½º¸¶Æ®ÆùÀº ÀüÈ­ ±â´É¸¸Å­À̳ª ¸ÖƼ¹Ìµð¾î ±â´ÉÀÇ ºñÁßÀÌ ³ô´Ù.

±Ù·¡ÀÇ °í¼º´É ½º¸¶Æ®ÆùÀÌ Á¦°øÇÏ´Â ¸ÖƼ¹Ìµð¾î ±â´ÉÀº °ÅÀÇ PC ¼öÁØ¿¡ À°¹ÚÇÑ´Ù. ¾Èµå·ÎÀ̵嵵 ¹°·Ð ¸ÖƼ¹Ìµð¾î ±â´ÉÀÌ Àß ±¸ºñµÇ¾î ÀÖ´Ù. ±× ÇÙ½ÉÀº MediaPlayer Ŭ·¡½ºÀε¥ ¿Àµð¿À¿Í ºñµð¿À¸¦ ¸ðµÎ Áö¿øÇÏ¸ç ´Ù¾çÇÑ ¼Ò½ºÀÇ ¹Ìµð¾î¸¦ Àç»ýÇÒ ¼ö ÀÖ´Ù. Àç»ý °¡´ÉÇÑ ¹Ìµð¾î ¼Ò½º´Â ´ÙÀ½°ú °°´Ù.

 

¨ç ½ÇÇà ÆÄÀÏ¿¡ ³»ÀåµÈ ¸®¼Ò½º. ÁÖ·Î °ÔÀÓÀÇ È¿°úÀ½À¸·Î »ç¿ëµÈ´Ù.

¨è SD Ä«µå¿¡ ÆÄÀÏ ÇüÅ·ΠÀúÀåµÈ ¹Ìµð¾î. °¡Àå ÀϹÝÀûÀÎ ¿¹¶ó°í ÇÒ ¼ö ÀÖ´Ù.

¨é ³×Æ®¿öÅ©·Î Àü¼ÛµÇ´Â ½ºÆ®¸². ´ë¿ë·®ÀÇ À½¾ÇÀ̳ª µ¿¿µ»óÀ» Áï½Ã °¨»óÇÒ ¼ö ÀÖ´Ù.

 

³×Æ®¿öÅ©°¡ ±âº» Áö¿øµÇ´Â ÈÞ´ëÆùÀº ·ÎÄÃÀÇ ÆÄÀÏ »Ó¸¸ ¾Æ´Ï¶ó Àü¼¼°èÀÇ ¸ðµç ¹Ìµð¾î¸¦ Àç»ýÇÒ ¼ö ÀÖ´Â ¼ÀÀÌ´Ù. °ø½ÄÀûÀ¸·Î Àç»ý °¡´ÉÇÑ Æ÷¸ËÀº ´ÙÀ½°ú °°Àºµ¥ ´ëÁßÀûÀÎ Æ÷¸ËµéÀº °ÅÀÇ ´Ù Áö¿øµÈ´Ù. ÀÌ¿Ü¿¡ Àåºñ¿¡ Ãß°¡·Î ¼³Ä¡µÈ ÄÚµ¦¿¡ µû¶ó Áö¿ø Æ÷¸ËÀÌ ´Ã¾î³ª±âµµ Çϴµ¥ ¾î¶² Àåºñ´Â À©µµ¿ìÁîÀÇ WMA¿Í WMV¸¦ Àç»ýÇÏ¸ç µðºò½ºµµ º°µµÀÇ º¯È¯¾øÀÌ ¹Ù·Î º¼ ¼ö ÀÖ´Ù.

 

Á¾·ù

Æ÷¸Ë

¿Àµð¿À

WAV, MP3(8~320Kbps), MIDI, OGG, 3GP

ºñµð¿À

H263, H264, Mpeg4

 

Áö¿ø ¼Ò½º³ª Æ÷¸ËÀÌ ´Ù¾çÇÏ°í ±â´Éµµ ¸¹Àºµ¥´Ù ¿ÜºÎ ÆÄÀÏÀ̳ª ³×Æ®¿öÅ©¸¦ ¾×¼¼½ºÇϹǷΠ»ç¿ë ¹æ¹ýÀº ±×´ÙÁö °£´ÜÇÏÁö ¾Ê´Ù. Á¤È®ÇÑ ÀýÂ÷´ë·Î »ç¿ëÇØ¾ß ÇÏ¸ç ¿¹¿Ü°¡ ¹ß»ýÇÒ È®·üµµ ³ô¾Æ¼­ ¿¡·¯ 󸮵µ ¼¶¼¼ÇØ¾ß ÇÑ´Ù. »ó¼¼ÇÑ ÀýÂ÷´Â ´ÙÀ½ Ç׿¡¼­ ü°èÀûÀ¸·Î ¿¬±¸ÇØ º¸±â·Î ÇÏ°í ÀÏ´ÜÀº °£´ÜÇÑ »ç¿ë¹ýºÎÅÍ ¿¬±¸ÇØ º¸ÀÚ. »ý¼ºÀÚ´Â µðÆúÆ®¸¸ Á¦°øµÇ¸ç Àμö´Â ¹Þ¾ÆµéÀÌÁö ¾Ê°í °´Ã¼¸¸ ¸¸µç´Ù.

 

public MediaPlayer ()

 

°´Ã¼¸¸ »ý¼ºµÈ »óÅ¿¡¼­´Â Àç»ýÇÒ ´ë»óÀÌ ¾øÀ¸¹Ç·Î ¾Æ¹« °Íµµ ÇÒ ¼ö ¾øÀ¸¸ç Àç»ýÇÒ ¹Ìµð¾î¸¦ Àü´ÞÇØ¾ß ÇÑ´Ù. µÎ °¡Áö ¹æ¹ýÀÌ Àִµ¥ ù ¹ø°´Â ´ÙÀ½ ¸Þ¼­µå¸¦ È£ÃâÇÏ´Â °ÍÀÌ´Ù. ½ºÆ®¸²ÀÇ Á¾·ù¿¡ µû¶ó ¿©·¯ ¹öÀüÀ¸·Î ¿À¹ö·ÎµùµÇ¾î ÀÖ´Ù.

 

void setDataSource (String path)

void setDataSource (Context context, Uri uri)

void setDataSource (FileDescriptor fd, [long offset, long length])

 

·ÎÄà ÆÄÀÏÀ̳ª Uri °´Ã¼·ÎºÎÅÍ ¿ø°ÝÁöÀÇ ¹Ìµð¾î¸¦ ¿¬´Ù. ¸®ÅÏ°ªÀº ¾øÀ¸¸ç ¿¡·¯ ¹ß»ý½Ã ¿¹¿Ü°¡ ¸®ÅϵǴµ¥ ÀÌ ¿¹¿Ü´Â ¹Ýµå½Ã ó¸®ÇØ¾ß ÇÑ´Ù. ½ºÆ®¸²À» ¿­¾ú´Ù°í Çؼ­ ¹Ù·Î Àç»ýÇÒ ¼ö´Â ¾øÀ¸¸ç ¾à°£ÀÇ Áغñ°¡ ÇÊ¿äÇÏ´Ù. ¿¹¸¦ µé¾î µ¿¿µ»óÀÇ °æ¿ì ÇÊ¿äÇÑ ÄÚµ¦À» ã°í ¿øÈ°ÇÑ Àç»ýÀ» À§ÇØ ¾ó¸¶°£ÀÇ ¹öÆÛ¸¦ ÇÒ´çÇØ¾ß ÇÒ °ÍÀÌ´Ù. ´ë¿ë·® ½ºÆ®¸²ÀÎ °æ¿ì »ó´çÇÑ ½Ã°£ÀÌ °É¸± ¼ö ÀÖÀ¸¹Ç·Î ¿ÀÇ Á÷ÈÄ ÀÚµ¿À¸·Î Áغñ »óÅ°¡ µÇÁö´Â ¾ÊÀ¸¸ç ´ÙÀ½ ¸Þ¼­µå¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.

 

void prepare ()

void prepareAsync ()

 

prepare ¸Þ¼­µå´Â µ¿±âÀûÀ¸·Î Áغñ¸¦ Çϸç Áغñ°¡ ³¡³ª¸é ¸®ÅÏÇÑ´Ù. ¸¸¾à Áغñ ½Ã°£ÀÌ ¾ÆÁÖ ¿À·¡ °É¸°´Ù¸é ºñµ¿±âÀûÀ¸·Î µ¿ÀÛÇÏ´Â prepareAsync ¸Þ¼­µå¸¦ È£ÃâÇÏ°í ÄݹéÀ» ÅëÇØ Áغñ ¿Ï·á¸¦ Å뺸¹Þ¾Æ¾ß ÇÑ´Ù. Áغñ »óÅ°¡ µÇ¸é ÀÌÈÄ ¹Ù·Î Àç»ý °¡´ÉÇÏ´Ù. °´Ã¼ »ý¼º, ½ºÆ®¸² ¿­±â, Áغñ °úÁ¤À» °ÅÃÄ¾ß ÇϹǷΠ»ó´çÈ÷ ¹ø°Å·Î¿îµ¥ µÎ¹ø° ¹æ¹ýÀº Á» ´õ ´Ü¼øÇÏ´Ù. ´ÙÀ½ Á¤Àû ¸Þ¼­µå¸¦ È£ÃâÇÏ¸é ¸ðµç °úÁ¤ÀÌ ³»ºÎ¿¡¼­ ¼öÇàµÈ´Ù.

 

static MediaPlayer create (Context context, int resid)

static MediaPlayer create (Context context, Uri uri, [SurfaceHolder holder])

 

create ¸Þ¼­µå´Â ¸®¼Ò½º·ÎºÎÅÍ ½ºÆ®¸²À» ¿­ ¼ö ÀÖÀ¸³ª ÆÄÀÏÀ» ¿­Áö´Â ¸øÇÑ´Ù. ¸®¼Ò½ºÀÇ ¹Ìµð¾î´Â º¸Åë Å©±â°¡ ÀÛÀ¸¹Ç·Î ¿ÀÇ Á÷ÈÄ ÀÚµ¿À¸·Î Áغñ »óÅ°¡ µÇ¸ç ¹Ù·Î Àç»ý °¡´ÉÇÏ´Ù. ¿¡·¯ ¹ß»ý½Ã´Â ¿¹¿Ü¸¦ ´øÁö´Â ´ë½Å nullÀ» ¸®ÅÏÇÑ´Ù. °£´ÜÇÑ È¿°úÀ½À» Àç»ýÇÒ ¶§´Â ÀÌ ¸Þ¼­µå¸¦ È£ÃâÇÏ´Â °ÍÀÌ ÈξÀ ´õ °£ÆíÇÏ´Ù. ´ÙÀ½Àº Àç»ý °ü·Ã ¸Þ¼­µåÀÌ´Ù.

 

void start ()

void stop ()

void pause ()

 

À̸§ÀÌ ³Ê¹« Á÷°üÀûÀ̶ó Àç»ýÀ» ½ÃÀÛ, Á¤Áö, ÀϽà ÁßÁöÇÑ´Ù´Â ¼³¸íÀº ±»ÀÌ ÇÏÁö ¾Ê¾Æµµ µÉ Á¤µµ´Ù. start ¸Þ¼­µå´Â Àç»ýÀ» ½ÃÀÛÇÑ ÈÄ Áï½Ã ¸®ÅÏÇϹǷΠ»ç¿îµå Àç»ýÁß¿¡µµ ´Ù¸¥ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù. Àç»ýÀÌ ½ÃÀÛµÇ¸é ½ºÆ®¸²ÀÇ ³¡±îÁö Àç»ýÇÑ ÈÄ ÀÚµ¿À¸·Î ¸ØÃá´Ù. ¸¸¾à ¹Ýº¹ÀûÀ¸·Î Àç»ýÇÏ·Á¸é ´ÙÀ½ ¸Þ¼­µå·Î ¹Ýº¹ ÁöÁ¤ÇÑ´Ù.

 

void setLooping (boolean looping)

boolean isLooping ()

 

setLooing(true)¸¦ È£ÃâÇØ µÎ¸é ÇÑ ½ºÆ®¸²À» °è¼Ó ¹Ýº¹Çϴµ¥ °ÔÀÓÀÇ ¹è°æ À½¾Ç Àç»ý¿ëÀ¸·Î ÀûÇÕÇÏ´Ù. MediaPlayer¸¦ ´Ù »ç¿ëÇÑ ÈÄ¿¡´Â ´ÙÀ½ ¸Þ¼­µå·Î Á¤¸®ÇÑ´Ù.

 

void release ()

void reset ()

 

release´Â °´Ã¼¸¦ ¿ÏÀüÈ÷ Æı«ÇÏ¿© ´õ ÀÌ»ó »ç¿ëÇÒ ¼ö ¾ø´Â »óÅ·ΠÇØÁ¦ÇÑ´Ù. À½¾ÇÀ» Àç»ýÇÏ´Â Áß¿¡µµ release´Â ¾ðÁ¦µçÁö È£Ãâ °¡´ÉÇÏ´Ù. resetÀº ÃʱâÈ­µÇÁö ¾ÊÀº óÀ½ »óÅ·Π°´Ã¼¸¦ µÇµ¹¸®¸ç ÀÌÈÄ ÀçÃʱâÈ­ÇÏ¿© ´Ù½Ã »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡¼­ release¿Í ´Ù¸£´Ù. »ç¿îµå¸¦ Àç»ýÇÏ´Â µÎ °¡Áö °æ·Î¸¦ Á¤¸®ÇØ º¸¸é ´ÙÀ½°ú °°´Ù.

create Á¤Àû ¸Þ¼­µå·Î »ý¼ºÇÏ´Â °ÍÀÌ ÈξÀ ´õ °£ÆíÇØ º¸ÀÌÁö¸¸ ´ë¿ë·® ¹Ìµð¾î¿¡´Â È¿À²ÀÌ ÁÁÁö ¾ÊÀ¸¹Ç·Î ¾ÆÁÖ ÂªÀº ¹Ìµð¾î¿¡¸¸ »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. ±×·³ ÀÌÁ¦ °¢ ¹æ¹ýÀ¸·Î »ç¿îµå¸¦ Àç»ýÇÏ´Â ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ.

 

mm_MPTest

public class mm_MPTest extends Activity {

     MediaPlayer mPlayer;

 

     public void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

          setContentView(R.layout.mm_mptest);

 

          // ¸®¼Ò½º Àç»ý

          findViewById(R.id.btn1).setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   MediaPlayer player = MediaPlayer.create(mm_MPTest.this, R.raw.dingdong);

                   player.start();

              }

          });

 

          // ÆÄÀÏ Àç»ý

          findViewById(R.id.btn2).setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   MediaPlayer player = new MediaPlayer();

                   try {

                        player.setDataSource("/sdcard/eagle5.mp3");

                        player.prepare();

                        player.start();

                   } catch (Exception e) {

                        Toast.makeText(mm_MPTest.this, "error : " + e.getMessage(), 0).show();

                   }

              }

          });

 

          // ½ºÆ®¸² Àç»ý

          findViewById(R.id.btn3).setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   MediaPlayer player = new MediaPlayer();

                   try {

                        Uri uri = Uri.parse("http://www.winapi.co.kr/data/saemaul1.mp3");

                        player.setDataSource(mm_MPTest.this, uri);

                        player.prepare();

                        player.start();

                   } catch (Exception e) {

                        Toast.makeText(mm_MPTest.this, "error : " + e.getMessage(), 0).show();

                   }

              }

          });

 

          // ¹Ì¸® ÁغñµÈ °´Ã¼·Î Àç»ý

          mPlayer = MediaPlayer.create(this, R.raw.dingdong);

          findViewById(R.id.btn4).setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   mPlayer.seekTo(0);

                   mPlayer.start();

              }

          });

 

          // ÁغñÇÏÁö ¾ÊÀº »óÅ·ΠÀç»ý

          findViewById(R.id.btn5).setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   MediaPlayer player = new MediaPlayer();

                   try {

                        player.setDataSource("/sdcard/eagle5.mp3");

                        player.start();

                   } catch (Exception e) {

                        Toast.makeText(mm_MPTest.this, "error : " + e.getMessage(), 0).show();

                   }

              }

          });

 

          // ´Ù¸¥ ÆÄÀÏ ¿­±â

          findViewById(R.id.btn6).setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   MediaPlayer player = MediaPlayer.create(mm_MPTest.this, R.raw.dingdong);

                   //player.reset();

                   try {

                        player.setDataSource("/sdcard/eagle5.mp3");

                        player.prepare();

                        player.start();

                   } catch (IllegalArgumentException e) {

                        Toast.makeText(mm_MPTest.this, "IllegalArgumentException", 0).show();

                   } catch (IllegalStateException e) {

                        Toast.makeText(mm_MPTest.this, "IllegalStateException", 0).show();

                   } catch (IOException e) {

                        Toast.makeText(mm_MPTest.this, "IOException", 0).show();

                   }

              }

          });

     }

 

     public void onDestroy() {

        super.onDestroy();

        if (mPlayer != null) {

          mPlayer.release();

          mPlayer = null;

        }

    }

}

 

·¹À̾ƿô¿¡´Â ¹öÆ°µé¸¸ ¿©·¯ °³ ¹èÄ¡µÇ¾î ÀÖÀ¸¸ç °¢ ¹öÆ°ÀÇ Å¬¸¯ ¸®½º³Ê¿¡¼­ »ç¿îµå¸¦ Àç»ýÇÑ´Ù. Àç»ýÇÒ ¸®¼Ò½º´Â res/raw Æú´õ¿¡ ¹Ì¸® ³Ö¾î µÎ¾úÀ¸¸ç ½ºÆ®¸®¹ÖÀº À¥¼­¹ö¿¡ ¾÷·ÎµåÇØ µÎ¾ú´Ù. ·ÎÄà ÆÄÀÏÀº ¹èÆ÷ ¿¹Á¦¿¡ Æ÷ÇԵǾî ÀÖÁö ¾ÊÀ¸¹Ç·Î Á÷Á¢ ÁغñÇ쵂 ¹ø°Å·Ó´Ù¸é ´ÙÀ½ ¾ÐÃà ÆÄÀÏÀ» ´Ù¿î·Îµå¹Þ¾Æ SD Ä«µåÀÇ ·çÆ® Æú´õ¿¡ º¹»çÇÏ¸é µÈ´Ù.

 

http://www.winapi.co.kr/data/testmedia.zip

 

¿¡¹Ä·¹ÀÌÅÍÀÇ SD Ä«µå°¡ Å« ÆÄÀÏÀ» Àß Áö¿øÇÏÁö ¸øÇϹǷΠ¿ë·®ÀÌ ÀÛÀº Å×½ºÆ® ¹Ìµð¾î¸¦ ÁغñÇß´Ù. ¿©·¯ºÐµéÀÌ °¡Áø ÃֽŠ°¡¿ä ÆÄÀÏÀ» »ç¿ëÇصµ ¹«¹æÇÏ´Ù. °¢ ¹öÆ°ÀÇ Å¬¸¯ ¸®½º³Ê¿¡¼­ MediaPlayer °´Ã¼¸¦ Áö¿ªÀûÀ¸·Î »ý¼ºÇϹǷΠ¸®½º³Ê ¾ÈÂÊÀÇ Äڵ常 ¼ø¼­´ë·Î »ìÆì º¸¸é µÈ´Ù.

ù ¹ø° ¹öÆ°À» ´©¸£¸é ¸®¼Ò½ºÀÇ wav ÆÄÀÏÀ» Àоî "µùµ¿"À̶ó´Â ªÀº È¿°úÀ½À» ³½´Ù. Àç»ýÇÏ°í ½ÍÀº ÆÄÀÏÀ» res/raw Æú´õ¿¡ º¹»çÇØ µÎ°í create Á¤Àû ¸Þ¼­µå·Î ¸®¼Ò½º¸¦ ÀÐÀº ÈÄ start ¸Þ¼­µå¸¸ È£ÃâÇÏ¸é µÈ´Ù. ´Ù »ç¿ëÇÑ ÈÄ release¸¦ ÇØ¾ß Çϳª Áö¿ª °´Ã¼À̹ǷΠreleaseÇÒ ½ÃÁ¡ÀÌ µû·Î ¾ø¾î °¡ºñÁö Ä÷ºÅÍ°¡ Á¤¸®Çϵµ·Ï ³»¹ö·Á µÎ´Â ¼ö¹Û¿¡ ¾ø´Ù. ´Ü¹ßÀûÀÎ È¿°úÀ½À» ³¾ ¶§´Â ÀÌ ¹æ¹ýµµ ³ª»ÚÁö´Â ¾Ê´Ù.

µÎ¹ø° ¹öÆ°Àº MP3 ÆÄÀÏÀ» Àоî Àç»ýÇϴµ¥ ÆÄÀÏÀÇ °æ·Î¸¦ Á¤È®ÇÏ°Ô Àü´ÞÇØ¾ß ÇÑ´Ù. ÀÌ ¿¹Á¦´Â ÆÄÀÏ À§Ä¡¿Í À̸§À» ÇϵåÄÚµùÇØ µÎ¾úÀ¸¹Ç·Î ÀÌ ÆÄÀÏÀ» º¹»çÇØ µÎ°Å³ª °æ·Î¸¦ ÆíÁýÇØ¾ß Á¦´ë·Î ½ÇÇàµÉ °ÍÀÌ´Ù. °´Ã¼ »ý¼º ÈÄ setDataSource ¸Þ¼­µå·Î ÆÄÀÏÀ» ÀÐ¾î µéÀÌ°í Áغñ¸¦ ÇÑ ÈÄ start ¸Þ¼­µå¸¦ È£ÃâÇÑ´Ù. ¿ÜºÎ ÆÄÀÏÀ̹ǷΠ¸®¼Ò½ºº¸´Ù ÈξÀ ´õ ±ä »ç¿îµåµµ Àç»ýÇÒ ¼ö ÀÖµÇ ¿¹¿Ü ¹ß»ý °¡´É¼ºÀÌ ³óÈÄÇϹǷΠ¹Ýµå½Ã try ºí·ÏÀ¸·Î °¨½Î¾ß ÇÑ´Ù. ¹®¹ýÀÌ °­Á¦ÀûÀ¸·Î ¿ä±¸ÇϹǷΠ»ý·«ÇÒ ¼ö ¾ø´Ù.

¼¼¹ø° ¹öÆ°Àº À¥¿¡¼­ »ç¿îµå ÆÄÀÏÀ» ´Ù¿î·Îµå ¹Þ¾Æ Àç»ýÇÑ´Ù. setDataSource ¸Þ¼­µåÀÇ Àμö°¡ °æ·Î ¹®ÀÚ¿­¿¡¼­ Uri·Î ¹Ù²ï °Í¸¸ ´Ù¸£´Ù. ·ÎÄÿ¡ ÆÄÀÏÀÌ ¾ø¾îµµ ÀÎÅͳݿ¡ ¿¬°áµÇ¾î Àֱ⸸ ÇÏ¸é ´Ù¿î·Îµå¹Þ¾Æ Àç»ýÇÒ ¼ö ÀÖ´Ù. ½ºÆ®¸®¹Ö ÆÄÀÏÀº ¹Ì¸® ¾÷·ÎµåÇØ ³õ¾Ò´Âµ¥ Ȥ½Ã ÀÌ »çÀÌÆ®°¡ ¸ÁÇßÀ¸¸é ÁÖ¼Ò¸¦ ¹Ù²ã º¸¾Æ¶ó. ³ª¸ÓÁö »õ ¹öÆ°ÀÇ ÄÚµå´Â ¾à°£ÀÇ ¹®Á¦°¡ Àִµ¥ ´ÙÀ½ Ç׿¡¼­ Á» ´õ ¿¬±¸ÇØ º¸ÀÚ.

2.»óÅÂÀÇ º¯È­

¾Õ ¿¹Á¦´Â »ç¿îµå¸¦ Àç»ýÇÏ´Â ¿©·¯ °¡Áö ¹æ¹ýÀÇ ¿ø·ÐÀûÀÎ ÀýÂ÷¸¦ º¸¿©ÁÖ±â À§ÇØ ÀǵµÀûÀ¸·Î ÀÛ¼ºÇÑ °ÍÀÌ´Ù. ¼¶¼¼ÇÑ ¿¹¿Ü 󸮴 ¿¹Á¦¶ó¼­ »ý·«Çß´Ù Ä¡´õ¶óµµ ¸î °¡Áö Ä¡¸íÀûÀÎ ¹®Á¦°¡ ÀÖ´Ù. ¿ì¼± MediaPlayer °´Ã¼°¡ ¸Þ¼­µåÀÇ Áö¿ª °´Ã¼·Î ¼±¾ðµÇ¾ú´Ù´Â °ÍÀÌ ¹®Á¦ÀÌ´Ù. ´Ù »ç¿ëÇÑ ÈÄ ÀÚµ¿À¸·Î ȸ¼öµÇ±â´Â ÇÏÁö¸¸ ³Ê¹« ºü¸¥ ¼Óµµ·Î »ý¼ºÇÏ¸é ´Ù¼öÀÇ °´Ã¼°¡ °øÁ¸ÇÏ°Ô µÇ¸ç À̶§ Çϵå¿þ¾î¸¦ µÎ°í °æÀïÇÏ°Ô µÈ´Ù.

ù ¹ø° ¹öÆ°Àº »ç¿îµå°¡ ª¾Æ Àß ´À³¥ ¼ö ¾øÁö¸¸ µÎ ¹ø° ¹öÆ°À» ¿©·¯ ¹ø ´­·¯ º¸¸é ¸Å¹ø »õ °´Ã¼°¡ »ý¼ºµÇ¾î óÀ½ºÎÅÍ Àç»ýÀ» ÇϹǷΠµ¶¼ö¸® 5ÇüÁ¦°¡ µ¹¸² ³ë·¡·Î Àç»ýµÈ´Ù. Àç»ýÀ» À§ÇØ ½º·¹µå¸¦ »ý¼ºÇϹǷΠ¾×ƼºñƼ°¡ Á¾·áµÇ¾îµµ °è¼Ó Àç»ýµÇ¸ç Àåºñ¸¦ ²ôÁö ¾Ê´Â ÇÑ ¸ØÃâ ¹æ¹ýÀÌ ¾ø´Ù. ¾×ƼºñƼ°¡ Á¾·áµÇ´Â ½ÃÁ¡¿¡ release¸¦ È£ÃâÇØ¾ß Çϴµ¥ Áö¿ª °´Ã¼ÀÌ´Ù º¸´Ï ±×·² ¼ö ¾øÀ¸¸ç Àç»ýÀÌ ³¡³ª´Â ½ÃÁ¡¿¡ Á¤¸®¸¦ ÇÒ·Á°í Çصµ Àç»ýÀÌ ³¡³ª´Â ½ÃÁ¡À» Å뺸¹ÞÀ» ¹æ¹ýÀÌ ¾ø´Ù.

»ç¿îµåÀÇ ±æÀÌ°¡ ªÀ» ¶§´Â ±Ý¹æ ȸ¼ö°¡ µÇÁö¸¸ ±æ¾îÁö¸é ¿©·¯ °³ÀÇ °´Ã¼°¡ »ý¼ºµÇ¸ç ÀÌ »óŸ¦ ¹æÄ¡ÇÏ¸é ´Ù¿îµÇ±âµµ ÇÑ´Ù. ù¹ø° ¹öÆ°À» ¸¶±¸ ´­·¯ º¸¸é ´Ù¿îµÇ¾î ¹ö¸± °ÍÀÌ´Ù. ¹®¹ýÀûÀ¸·Î »ý¼º °¡´ÉÇÑ °´Ã¼ °³¼ö¿¡´Â Á¦ÇÑÀÌ ¾øÁö¸¸ Çϵå¿þ¾î°¡ ¹«ÇÑ´ëÀÇ °´Ã¼¸¦ ´Ù Áö¿øÇÒ ¼ö ¾øÀ¸¹Ç·Î ÀÏÁ¤ °³¼ö ÀÌ»óÀÌ µÇ¸é nullÀÌ ¸®ÅϵȴÙ. if (player == null) Á¶°Ç¹®À¸·Î Á¡°ËÇÒ ¼ö´Â ÀÖÀ¸³ª ±× º¸´Ù ´õ ÁÁÀº ¹æ¹ýÀº ¸â¹ö·Î ¼±¾ðÇØ µÎ°í ÇÑ °´Ã¼¸¦ °è¼Ó »ç¿ëÇÏ´Â °ÍÀÌ´Ù.

³× ¹ø° ¹öÆ°Àº ÀÌ ¹æ¹ý´ë·Î »ç¿îµå¸¦ Àç»ýÇÑ´Ù. MediaPlayer °´Ã¼¸¦ ¸â¹ö·Î ¼±¾ðÇØ µÎ°í onCreate¿¡¼­ ¹Ì¸® »ý¼º ¹× Áغñ±îÁö ¿Ï·áÇØ ³õ¾Ò´Ù. ¹öÆ°À» ´©¸£¸é seekTo ¸Þ¼­µå·Î Àç»ý À§Ä¡¸¦ ¸®¼ÂÇÏ°í start¸¦ È£ÃâÇÑ´Ù. ÇÑ °´Ã¼·Î »ç¿îµå¸¦ Àç»ýÇϹǷΠ¿©·¯ À½À» µ¿½Ã¿¡ Ãâ·ÂÇÒ ¼ö´Â ¾øÁö¸¸ ÃÖ¼ÒÇÑ ´Ù¿îµÇÁö´Â ¾Ê´Â´Ù. ¶Ç onDestroy¿¡¼­ release¸¦ È£ÃâÇÏ¿© Á¤¸®ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¾×ƼºñƼ°¡ Á¾·áµÇ¸é Àç»ýÇÏ´ø »ç¿îµåµµ ÀÚµ¿À¸·Î Á¤ÁöµÈ´Ù.

MediaPlayer´Â ¹Ìµð¾î°¡ Àç»ýµÇ´Â µ¿¾È Àå±â°£ Á¸¼ÓÇÏ¸ç ¹Ìµð¾î³ª ¿ÜºÎ ȯ°æ¿¡ ¿µÇâÀ» ¹ÞÀ¸¹Ç·Î ¿¡·¯ »óȲÀ» °ü¸®Çϱâ À§ÇØ ½º½º·ÎÀÇ »óŸ¦ À¯ÁöÇÑ´Ù. ÇöÀç »óÅ¿¡ µû¶ó È£Ãâ °¡´ÉÇÑ ¸Þ¼­µå°¡ ´Þ¶óÁö¸ç ƯÁ¤ ¸Þ¼­µå¸¦ È£ÃâÇÏ¸é »óÅ°¡ ¹Ù²î±âµµ ÇÑ´Ù. ÀÓÀÇÀÇ µ¿ÀÛÀÌ ¾ðÁ¦³ª °¡´ÉÇÑ °ÍÀº ¾Æ´Ï°í ÇöÀç »óÅ¿¡ µû¶ó ¾ö°ÝÇÑ Á¦ÇÑÀÌ °¡ÇØÁö¹Ç·Î »óÅ¿¡ µû¶ó ¼¶¼¼ÇÑ °ü¸®°¡ ÇÊ¿äÇÏ´Ù.

¿¹¸¦ µé¾î ¹Ìµð¾î¸¦ ¿­Áöµµ ¾Ê¾Ò´Âµ¥ Àç»ýÀ» ½ÃÀÛÇÒ ¼ö´Â ¾ø°í Àç»ýÁß¿¡ °©Àڱ⠴ٸ¥ ¹Ìµð¾î·Î ¹Ù²Ù´Â °Íµµ ¾ÈµÈ´Ù. ¿Ö »óÅ°¡ ÇÊ¿äÇÑÁö´Â Á÷°üÀûÀ¸·Î ½±°Ô ÀÌÇØ°¡ µÉ °ÍÀÌ´Ù. MediaPlayerÀÇ Àüü »óÅÂ¿Í °¢ ¸Þ¼­µå È£Ãâ¿¡ ÀÇÇÑ »óÅ º¯È­µµ´Â ´ÙÀ½°ú °°´Ù. ÀÌÇظ¦ À§ÇØ ²À ÇÊ¿äÇÑ ºÎºÐ¸¸ °£´ÜÇÏ°Ô ±×·È´Âµ¥ ·¹ÆÛ·±½º¿¡´Â Á» ´õ »ó¼¼ÇÑ »óÅ º¯È­µµ°¡ ÀÖÀ¸¹Ç·Î Âü°íÇϱ⠹ٶõ´Ù.

°´Ã¼¸¦ óÀ½ »ý¼ºÇϰųª resetÇϸé Idle »óÅ·Π½ÃÀ۵Ǹç ÀÌ »óÅ¿¡¼­´Â Àç»ýÀ» ÇÒ ¼ö ¾ø´Ù. ¶È°°Àº Idle »óÅÂ¶óµµ »õ·Î »ý¼ºµÈ °´Ã¼¿Í resetµÈ °´Ã¼ÀÇ µ¿ÀÛÀÌ Á¶±Ý ´Ù¸¥µ¥ »óÅ¿¡ ¸ÂÁö ¾ÊÀº ¸Þ¼­µå È£Ãâ½ÃÀÇ ¿¡·¯ 󸮰¡ ´Ù¸£´Ù. »ý¼º Á÷ÈÄ¿¡´Â ´Ü¼øÈ÷ ¿¡·¯¸¦ ¹«½ÃÇØ ¹ö¸®Áö¸¸ resetµÈ °´Ã¼´Â Error »óÅ·ΠÀüȯµÇ¸ç onError ÄݹéÀÌ È£ÃâµÈ´Ù.

Idel »óÅ¿¡¼­ ÃʱâÈ­¸¦ ÇÏ·Á¸é setDataSource ¸Þ¼­µå¸¦ È£ÃâÇÏ¿© ¹Ìµð¾î¸¦ ¿¬´Ù. ÀÌ ¸Þ¼­µå´Â IdleÀÏ ¶§¸¸ È£ÃâÇÒ ¼ö ÀÖÀ¸¸ç Àç»ýÁßÀ̰ųª ÀϽà Á¤ÁöµÈ »óÅ¿¡¼­ ¹Ìµð¾î¸¦ ±³Ã¼ÇÏÁö´Â ¸øÇÑ´Ù. ¹Ìµð¾î¸¦ ¿¬ ÈÄ prepare ¸Þ¼­µå¸¦ È£ÃâÇÏ¿© Áغñ »óÅ·ΠÀüȯÇϸç Àç»ýÀü¿¡ ¹Ýµå½Ã Áغñ »óÅ¿©¾ß ÇÑ´Ù. create Á¤Àû ¸Þ¼­µå·Î °´Ã¼¸¦ »ý¼ºÇÏ¸é »ý¼º°ú µ¿½Ã¿¡ ¹Ìµð¾î¸¦ ¿­°í Áغñ »óÅ·Π½ÃÀÛÇÑ´Ù. Áغñ »óÅÂÀÏ ¶§ º¼·ý Á¶Àý, ¹Ýº¹ ¿©ºÎ µîÀ» Á¶Á¤ÇÒ ¼ö ÀÖ´Ù.

start ¸Þ¼­µå¸¦ È£ÃâÇϸé Àç»ýÁß(Started) »óÅ°¡ µÇ¸ç ÀÌ »óÅ¿¡¼­ ¾ðÁ¦µçÁö Á¤Áö, ÀϽà Á¤Áö °¡´ÉÇÏ´Ù. ÀϽà Á¤Áö´Â pause/start ¸Þ¼­µå·Î ¾ðÁ¦µçÁö Åä±Û °¡´ÉÇÏ´Ù. ±×·¯³ª stop ¸Þ¼­µå·Î Á¤ÁöÇÑ »óÅ¿¡¼­´Â ¹Ù·Î Àç»ý »óÅ·Πº¹±ÍÇÒ ¼ö ¾øÀ¸¸ç ´Ù½Ã Áغñ °úÁ¤À» °ÅÃÄ¾ß ÇÑ´Ù. isPlaying ¸Þ¼­µå´Â ÇöÀç Àç»ýÁßÀÎÁö¸¦ Á¶»çÇϴµ¥ ÀϽà Á¤Áö, ÀϽà ÁßÁö »óÅÂÀÏ ¶§´Â falseÀ̸ç Àç»ýÁß¿¡´Â true°¡ ¸®ÅϵȴÙ. ´ÙÀ½ ¸Þ¼­µåµéÀº Àç»ý ±æÀ̸¦ Á¶»çÇϰųª À§Ä¡¸¦ Á¶»ç ¹× º¯°æÇÑ´Ù.

 

int getDuration ()

int getCurrentPosition ()

void seekTo (int msec)

 

getDurationÀº ÃÑ Àç»ý ±æÀ̸¦ ±¸ÇÏ°í getCurrentPositionÀº ÇöÀç Àç»ý À§Ä¡¸¦ ±¸ÇÑ´Ù. ÁÖ·Î ÇÁ·Î±×·¡½º ¹Ù °»½Å¿¡ »ç¿ëµÇ´Âµ¥ µÑ ´Ù Áغñ »óÅ ÀÌÈÄ¿¡´Â ¾ðÁ¦µçÁö È£ÃâÇÒ ¼ö ÀÖ´Ù. seekTo´Â Àç»ý À§Ä¡¸¦ ÀÓÀÇ·Î º¯°æÇϴµ¥ Prepared, Started, Paused, PalybackCompleted »óÅ¿¡¼­ È£Ãâ °¡´ÉÇÏ´Ù. Àç»ýÁß¿¡µµ Áï½Ã ´Ù¸¥ À§Ä¡·Î À̵¿ °¡´ÉÇϸç Áغñ³ª ÀϽà Á¤ÁöµÈ »óÅ¿¡¼­µµ ½ÃÀÛ À§Ä¡¸¦ ¸¶À½´ë·Î ¹Ù²Ü ¼ö ÀÖÁö¸¸ Á¤ÁöµÈ(Stopped) »óÅ¿¡¼­´Â À§Ä¡¸¦ ¹Ù²Ü ¼ö ¾ø´Ù.

MediaPlayer´Â »óÅ°¡ º¯°æµÇ°Å³ª ¿¡·¯°¡ ¹ß»ýÇÒ ¶§ ¹Ì¸® µî·ÏµÈ ÄÝ¹é ¸Þ¼­µå¸¦ È£ÃâÇÑ´Ù. °ü½ÉÀÖ´Â »ç°Ç¿¡ ´ëÇØ ¸®½º³Ê¸¦ µî·ÏÇØ ³õÀ¸¸é ¿øÇÏ´Â ½ÃÁ¡¿¡ ½ÅÈ£¸¦ ¹ÞÀ» ¼ö ÀÖ´Ù. ¹°·Ð °ü½É¾ø´Â À̺¥Æ®¿¡ ´ëÇؼ­´Â ±»ÀÌ ÄݹéÀ» µî·ÏÇÏÁö ¾Ê¾Æµµ »ó°ü¾øµÇ ´ë°³ÀÇ °æ¿ì ¿¡·¯ ÄݹéÀº µî·ÏÇÏ´Â °ÍÀÌ ±ÇÀåµÈ´Ù. °¢ ¸®½º³Ê ÀÎÅÍÆäÀ̽º¿¡´Â À̺¥Æ®¸¦ ¹Þ´Â ¸Þ¼­µå°¡ Á¤ÀǵǾî ÀÖ°í À̺¥Æ®¿Í °ü·ÃµÈ Àμö°¡ Àü´ÞµÈ´Ù.

 

void setOnErrorListener (MediaPlayer.OnErrorListener listener)

void setOnPreparedListener (MediaPlayer.OnPreparedListener listener)

void setOnCompletionListener (MediaPlayer.OnCompletionListener listener)

void setOnBufferingUpdateListener (MediaPlayer.OnBufferingUpdateListener listener)

void setOnSeekCompleteListener (MediaPlayer.OnSeekCompleteListener listener)

 

onCompletion ÄݹéÀº ½ºÆ®¸²À» ³¡±îÁö Àç»ý ÇßÀ» ¶§ È£ÃâµÇ¸ç À̶§ °´Ã¼´Â Àç»ý ¿Ï·á(Playback Completed)»óÅÂÀÌ´Ù. ÀÌ ÄݹéÀ» ¹Þ¾ÒÀ» ¶§ start ¸Þ¼­µå¸¦ È£ÃâÇÏ¸é °°Àº ¹Ìµð¾î¸¦ óÀ½ºÎÅÍ ´Ù½Ã Àç»ýÇÑ´Ù. ´ÙÀ½ ¹Ìµð¾î·Î º¯°æÇÏ·Á¸é reset ÇÏ¿© Idle »óÅ·Π°£ ÈÄ Ã³À½ºÎÅÍ ´Ù½Ã ½ÃÀÛÇØ¾ß ÇÑ´Ù. ¾Õ¿¡¼­µµ ¾ê±âÇß´Ù½ÃÇÇ ½ÇÇàÁß¿¡ ¹Ìµð¾î¸¦ ¿ÀÇÂÇÏ´Â setDataSource ¸Þ¼­µå´Â Idle »óÅ¿¡¼­¸¸ È£Ãâ °¡´ÉÇϹǷΠresetÀ» Çؾ߸¸ ¹Ìµð¾î¸¦ ±³Ã¼ÇÒ ¼ö ÀÖ´Ù.

onBufferingUpdate ÄݹéÀº ½ºÆ®¸®¹Ö½Ã¿¡ ¹öÆÛ¿¡ »õ·Î¿î µ¥ÀÌÅÍ°¡ µé¾î¿ÔÀ» ¶§ È£ÃâµÈ´Ù. ·ÎÄà ¸®¼Ò½º³ª ÆÄÀÏÀ» ÀÐÀ» ¶§´Â ¹öÆÛ¸µÀ» ÇÏÁö ¾ÊÀ¸¹Ç·Î ÀÌ ÄݹéÀ» ÇÁ·Î±×·¡¹ÖÇÒ ÇÊ¿ä°¡ ¾ø´Ù. onSeekComplete ÄݹéÀº Àç»ý À§Ä¡ º¯°æÀÌ ¿Ï·áµÉ ¶§ È£ÃâµÈ´Ù. seekTo ¸Þ¼­µå°¡ µ¿±âÀûÀ¸·Î µ¿ÀÛÇÏÁö ¾ÊÀ¸¹Ç·Î º¯°æ ½ÃÁ¡À» Á¤È®ÇÏ°Ô ¾Ë¾Æ ³»·Á¸é ÀÌ ÄݹéÀÌ ÇÊ¿äÇÏ´Ù.

ÀÌ»óÀ¸·Î MediaPlayer °´Ã¼ÀÇ »óÅ º¯È­¿Í °¢ »óÅ º¯È­½Ã È£ÃâµÇ´Â Äݹ鿡 ´ëÇØ ¿¬±¸ÇØ º¸¾Ò´Âµ¥ º¹ÀâÇØ º¸ÀÌÁö¸¸ ´ëºÎºÐ »ó½Ä¼±¿¡¼­ ÀÌÇØ°¡ µÉ °ÍÀÌ´Ù. »óŸ¦ ÁöÅ°Áö ¾Ê¾ÒÀ» ¶§ ¾î¶² °á°ú°¡ ÃÊ·¡µÇ´ÂÁö ¸î °¡Áö Å×½ºÆ®¸¦ ÇØ º¸ÀÚ. ´Ù¼¸ ¹ø° ¹öÆ°Àº Áغñ °úÁ¤À» »ý·«ÇÏ°í start ¸Þ¼­µå¸¦ ¹Ù·Î È£ÃâÇϴµ¥ ÀÌ °æ¿ì »ç¿îµå´Â Àç»ýµÇÁö ¾Ê´Â´Ù. ¿¡·¯´Â ¹ß»ýÇÏÁö ¾ÊÁö¸¸ »óŸ¦ ÁöÅ°Áö ¾Ê¾Ò±â ¶§¹®¿¡ ¹«½Ã´çÇÑ´Ù.

¿©¼¸ ¹ø° ¹öÆ°Àº create Á¤Àû ¸Þ¼­µå·Î ¹Ìµð¾î¸¦ ¿¬ »óÅ¿¡¼­ setDataSource ¸Þ¼­µå·Î ´Ù¸¥ ¹Ìµð¾î¸¦ ´Ù½Ã ¿­¾ú´Ù. ÁغñµÈ »óÅ¿¡¼­´Â Àç»ý¸¸ °¡´ÉÇÏ¸ç ´Ù¸¥ ¹Ìµð¾î·Î ±³Ã¼¸¦ ÇÒ ¼ö ¾øÀ¸¹Ç·Î »óŸ¦ À§¹ÝÇÑ °ÍÀÌ¸ç ¿¹¿Ü ó¸® ±¸¹®À¸·Î °¨½Î º¸¸é  IllegalStateException ¿¹¿Ü°¡ ¹ß»ýÇÑ´Ù. »ç¿ëÇÏ´ø °´Ã¼¸¦ ´Ù¸¥ ¿ëµµ·Î Àç»ç¿ëÇÏ·Á¸é ¹Ýµå½Ã reset ¸Þ¼­µå·Î ¸®¼ÂÇÑ ÈÄ Àç»ç¿ëÇØ¾ß ÇÑ´Ù. ÁÖ¼®À¸·Î ó¸®µÈ reset ¹®ÀÇ ÁÖ¼®À» Ç®¸é Á¦´ë·Î µ¿ÀÛÇÒ °ÍÀÌ´Ù.

Áö±Ý ´çÀåÀº ÀÌ »óÅ µµÇ¥°¡ ´«¿¡ µé¾î¿ÀÁö ¾Ê°ÚÁö¸¸ Äڵ带 ÀÛ¼ºÇØ º¸¸é ¿Ö ÀÌ·± »óÅ °ü¸®°¡ ÇÊ¿äÇÑÁö ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÇÏ´Ù°¡ ¹º°¡ ¶æÇϴ´ë·Î µÇÁö ¾Ê°Å³ª ¿Àµ¿ÀÛÀ» ÇÑ´Ù¸é Á¤È®ÇÑ ÀýÂ÷´ë·Î Äڵ带 ÀÛ¼ºÇß´ÂÁö ÀÌ µµÇ¥¸¦ º¸°í ´Ù½Ã Á¡°ËÇØ º¸µµ·Ï ÇÏÀÚ. »ó´ë º¯È­µµ ±×¸²Àº MediaPlayerÀÇ °ÅÀÇ ¸ðµç °ÍÀÌ ÇÔÃàÀûÀ¸·Î ¼³¸íÇÏ°í ÀÖ´Ù.

3.¹ÂÁ÷ Ç÷¹À̾î

MediaPlayer·Î Á¦ÀÛÇÒ ¼ö ÀÖ´Â ÀÀ¿ë ÇÁ·Î±×·¥Áß¿¡ °¡Àå ½Ç¿ëÀûÀÌ°íµµ ´ëÇ¥ÀûÀÎ °ÍÀÌ MP3 Ç÷¹À̾îÀÌ´Ù. ´ÙÀ½ ¿¹Á¦´Â À½¾Ç Àç»ý±âÀÇ °¡Àå ±âº»ÀûÀÎ ±â´ÉÀ» ±¸ÇöÇÑ´Ù. SD Ä«µåÀÇ ·çÆ® µð·ºÅ丮¿¡¼­ MP3 ÆÄÀÏ ¸ñ·ÏÀ» Á¶»çÇÏ¿© Â÷·Ê´ë·Î Àç»ýÇϸç Àç»ý À§Ä¡¸¦ º¸¿© ÁÖ°í ÀÓÀÇ À§Ä¡·Î À̵¿ÇÏ´Â Á¤µµÀÇ ±â´ÉÀ» Á¦°øÇÑ´Ù.

¾îµð±îÁö³ª ÇнÀ¿ëÀ¸·Î Á¦ÀÛÇÑ °ÍÀ̹ǷΠ¿¡·¯ 󸮵µ Áö±ØÈ÷ ±âº»ÀûÀÎ °Í¸¸ µÇ¾î ÀÖÀ¸¸ç ÆÄÀÏ ¸ñ·Ïµµ SD Ä«µåÀÇ ·çÆ® µð·ºÅ丮·Î¸¸ ±¹ÇѵǾî ÀÖ´Ù. µû¶ó¼­ ÀÌ ¿¹Á¦¸¦ Å×½ºÆ®ÇØ º¸·Á¸é SD Ä«µå¿¡ ¹Ì¸® MP3 ÆÄÀÏÀ» º¹»çÇØ µÎ¾î¾ß ÇÑ´Ù. Ä¡·· Ä¡··ÇÑ Àå½Ä°ú º¹ÀâÇÑ ±â´ÉÀº »©°í ÃÖ´ëÇÑ °£´ÜÇÏ°Ô ÀÛ¼ºÇßÀ½¿¡µµ 200ÁÙÀÌ ³Ñ´Â´Ù. º¹ÀâÇÑ ±â´ÉÀÌ ¾ø°í ¾à°£ÀÇ ÁÖ¼®ÀÌ ´Þ·Á ÀÖ¾î ºÐ¼®ÇØ º¸±â´Â ¾î·ÆÁö ¾ÊÀ» °ÍÀÌ´Ù.

 

mm_PlayAudio

public class mm_PlayAudio extends Activity {

     ArrayList<String> mList;

     int mIdx;

     MediaPlayer mPlayer;

     Button mPlayBtn;

     TextView mFileName;

     SeekBar mProgress;

     boolean wasPlaying;

    

     public void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

          setContentView(R.layout.mm_playaudio);

         

          mList = new ArrayList<String>();

          mPlayer = new MediaPlayer();

 

          // SD Ä«µå°¡ ¾øÀ» ½Ã ¿¡·¯ ó¸®ÇÑ´Ù.

          String ext = Environment.getExternalStorageState();

          String sdPath;

          if (ext.equals(Environment.MEDIA_MOUNTED) == false) {

              Toast.makeText(this, "SD Ä«µå°¡ ¹Ýµå½Ã ÇÊ¿äÇÕ´Ï´Ù.", Toast.LENGTH_LONG).show();

              finish();

              return;

          }

 

          // SD Ä«µå ·çÆ®ÀÇ MP3 ÆÄÀÏ ¸ñ·ÏÀ» ±¸ÇÑ´Ù.

          sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();

          File sdRoot = new File(sdPath);

          FilenameFilter filter = new FilenameFilter() {

              public boolean accept(File dir, String name) {

                   return name.endsWith(".mp3");

              }

          };

          String[] mplist = sdRoot.list(filter);

          if (mplist.length == 0) {

              Toast.makeText(this, "Àç»ýÇÒ ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.", Toast.LENGTH_LONG).show();

              finish();

              return;

          }

          for(String s : mplist) {

              mList.add(sdPath + "/" + s);

          }

          mIdx = 0;

 

          // ¹öÆ°µéÀÇ Å¬¸¯ ¸®½º³Ê µî·Ï

          mFileName = (TextView)findViewById(R.id.filename);

          mPlayBtn = (Button)findViewById(R.id.play);

          mPlayBtn.setOnClickListener(mClickPlay);

          findViewById(R.id.stop).setOnClickListener(mClickStop);

          findViewById(R.id.prev).setOnClickListener(mClickPrevNext);

          findViewById(R.id.next).setOnClickListener(mClickPrevNext);

         

          // ¿Ï·á ¸®½º³Ê, ½ÃÅ©¹Ù º¯°æ ¸®½º³Ê µî·Ï

          mPlayer.setOnCompletionListener(mOnComplete);

          mPlayer.setOnSeekCompleteListener(mOnSeekComplete);

          mProgress = (SeekBar)findViewById(R.id.progress);

          mProgress.setOnSeekBarChangeListener(mOnSeek);

          mProgressHandler.sendEmptyMessageDelayed(0,200);

         

          // ù °î ÀÐ±â ¹× Áغñ

          if (LoadMedia(mIdx) == false) {

              Toast.makeText(this, "ÆÄÀÏÀ» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù.", Toast.LENGTH_LONG).show();

              finish();

          }

     }

 

     // ¾×ƼºñƼ Á¾·á½Ã Àç»ý °­Á¦ Á¾·á

     public void onDestroy() {

        super.onDestroy();

        if (mPlayer != null) {

          mPlayer.release();

          mPlayer = null;

        }

    }

 

    // Ç×»ó Áغñ »óÅ¿©¾ß ÇÑ´Ù.

    boolean LoadMedia(int idx) {

          try {

              mPlayer.setDataSource(mList.get(idx));

          } catch (IllegalArgumentException e) {

              return false;

          } catch (IllegalStateException e) {

              return false;

          } catch (IOException e) {

              return false;

          }

          if (Prepare() == false) {

              return false;

          }

          mFileName.setText("ÆÄÀÏ : " + mList.get(idx));

          mProgress.setMax(mPlayer.getDuration());

          return true;

    }

   

    boolean Prepare() {

          try {

              mPlayer.prepare();

          } catch (IllegalStateException e) {

              return false;

          } catch (IOException e) {

              return false;

          }

          return true;

    }

 

    // Àç»ý ¹× ÀϽà Á¤Áö

    Button.OnClickListener mClickPlay = new View.OnClickListener() {

          public void onClick(View v) {

              if (mPlayer.isPlaying() == false) {

                   mPlayer.start();

                   mPlayBtn.setText("Pause");

              } else {

                   mPlayer.pause();

                   mPlayBtn.setText("Play");

              }

          }

     };

 

     // Àç»ý Á¤Áö. Àç½ÃÀÛÀ» À§ÇØ ¹Ì¸® ÁغñÇØ ³õ´Â´Ù.

    Button.OnClickListener mClickStop = new View.OnClickListener() {

          public void onClick(View v) {

              mPlayer.stop();

              mPlayBtn.setText("Play");

              mProgress.setProgress(0);

              Prepare();

          }

    };

   

    Button.OnClickListener mClickPrevNext = new View.OnClickListener() {

          public void onClick(View v) {

              boolean wasPlaying = mPlayer.isPlaying();

             

              if (v.getId() == R.id.prev) {

                   mIdx = (mIdx == 0 ? mList.size() - 1:mIdx - 1);

              } else {

                   mIdx = (mIdx == mList.size() - 1 ? 0:mIdx + 1);

              }

             

              mPlayer.reset();

              LoadMedia(mIdx);

 

              // ÀÌÀü¿¡ Àç»ýÁßÀ̾úÀ¸¸é ´ÙÀ½ °î ¹Ù·Î Àç»ý

              if (wasPlaying) {

                   mPlayer.start();

                   mPlayBtn.setText("Pause");

              }

          }

    };

 

    // Àç»ý ¿Ï·áµÇ¸é ´ÙÀ½°îÀ¸·Î

    MediaPlayer.OnCompletionListener mOnComplete = new MediaPlayer.OnCompletionListener() {

          public void onCompletion(MediaPlayer arg0) {

              mIdx = (mIdx == mList.size() - 1 ? 0:mIdx + 1);

              mPlayer.reset();

              LoadMedia(mIdx);

              mPlayer.start();

          }

    };

 

    // ¿¡·¯ ¹ß»ý½Ã ¸Þ½ÃÁö Ãâ·Â

    MediaPlayer.OnErrorListener mOnError = new MediaPlayer.OnErrorListener() {

          public boolean onError(MediaPlayer mp, int what, int extra) {

              String err = "OnError occured. what = " + what + " ,extra = " + extra;

              Toast.makeText(mm_PlayAudio.this, err, Toast.LENGTH_LONG).show();

              return false;

          }

    };

 

    // À§Ä¡ À̵¿ ¿Ï·á ó¸®

    MediaPlayer.OnSeekCompleteListener mOnSeekComplete = new MediaPlayer.OnSeekCompleteListener() {

          public void onSeekComplete(MediaPlayer mp) {

              if (wasPlaying) {

                   mPlayer.start();

              }

          }

    };

 

    // 0.2ÃÊ¿¡ Çѹø²Ã·Î Àç»ý À§Ä¡ °»½Å

     Handler mProgressHandler = new Handler() {

          public void handleMessage(Message msg) {

              if (mPlayer == null) return;

              if (mPlayer.isPlaying()) {

                   mProgress.setProgress(mPlayer.getCurrentPosition());

              }

              mProgressHandler.sendEmptyMessageDelayed(0,200);

          }

     };

 

     // Àç»ý À§Ä¡ À̵¿

     SeekBar.OnSeekBarChangeListener mOnSeek = new SeekBar.OnSeekBarChangeListener() {

          public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

              if (fromUser) {

                   mPlayer.seekTo(progress);

              }

          }

 

          public void onStartTrackingTouch(SeekBar seekBar) {

              wasPlaying = mPlayer.isPlaying();

              if (wasPlaying) {

                   mPlayer.pause();

              }

          }

 

          public void onStopTrackingTouch(SeekBar seekBar) {

          }

     };

}

 

 

·¹À̾ƿô¿¡´Â ÆÄÀÏÀ» Ç¥½ÃÇÏ´Â ÅؽºÆ® ºä Çϳª, Àç»ý ¹× ÀÌÀü/´ÙÀ½ °îÀ¸·Î À̵¿ÇÏ´Â ¹öÆ° 4°³, ÇöÀç Àç»ý À§Ä¡¸¦ º¸¿©ÁÖ´Â ½ÃÅ© ¹Ù Á¤µµ°¡ ¹èÄ¡µÇ¾î ÀÖ´Ù. ½ÃÅ©¹Ù´Â Àç»ý À§Ä¡¸¦ À̵¿ÇÏ´Â ±â´Éµµ Á¦°øÇÑ´Ù. º¼·ý Á¶Àý ±â´Éµµ Á¦°øÇÒ¸¸ ÇÏÁö¸¸ Çϵå¿þ¾î º¼·ýÅ°°¡ Á¦°øµÇ¹Ç·Î ±»ÀÌ Æ÷ÇÔÇÏÁö ¾Ê¾Ò´Ù.

onCreate´Â Àç»ý¿¡ ÇÊ¿äÇÑ ÃʱâÈ­¸¦ ¼öÇàÇÑ´Ù. SD Ä«µåÀÇ ·çÆ® µð·ºÅ丮¿¡¼­ MP3 ÆÄÀÏÀÇ ¸ñ·ÏÀ» ±¸Ç쵂 SD Ä«µå°¡ ¾ø°Å³ª MP3 ÆÄÀÏÀÌ ¾øÀ¸¸é Á¤»óÀûÀÎ µ¿ÀÛÀ» ÇÒ ¼ö ¾øÀ¸¹Ç·Î ¿¡·¯ ó¸®ÇÏ°í Á¾·áÇÑ´Ù. ¸ñ·Ï Á¶»ç ÈÄ Ã¹ °îÀ» ¿­°í Àç»ý Áغñ¸¦ Çϴµ¥ ÀÌ ÀÛ¾÷Àº LoadMedia ¸Þ¼­µå°¡ ´ã´çÇÑ´Ù. LoadMedia´Â ¹Ìµð¾î ÆÄÀÏÀ» ¿­¾î Áغñ »óÅ·Π¸¸µé¾î ÁֹǷΠÀÌÈÄ ¾ðÁ¦µçÁö Àç»ýÀ» ½ÃÀÛÇÒ ¼ö ÀÖ´Ù. ±× ¿Ü ÆÄÀÏÀÇ Á¦¸ñÀ» Ãâ·ÂÇÏ°í ½ÃÅ©¹Ù¿¡ Àç»ý ¹üÀ§¸¦ ¼³Á¤ÇÏ´Â ÀÛ¾÷µµ ÇÑ´Ù.

Play ¹öÆ°Àº isPlaying ¸Þ¼­µå·Î ÇöÀç »óŸ¦ Á¶»çÇÑ ÈÄ Àç»ý ¹× ÀϽà Á¤Áö¸¦ Åä±ÛÇÑ´Ù. ÇÑ ¹öÆ°À¸·Î µÎ °¡Áö ±â´ÉÀ» ¼öÇàÇϹǷΠ»óÅ¿¡ µû¶ó ¹öÆ°ÀÇ Ä¸¼ÇÀ» Àû´çÈ÷ º¯°æÇÑ´Ù. Stop ¹öÆ°Àº Àç»ýÀ» ÁßÁöÇÏ°í ½ÃÅ©¹Ù¸¦ ÃʱâÈ­ÇÑ´Ù. »óÅ Àüȯµµ¸¦ º¸¸é Stop »óÅ¿¡¼­´Â start ¸Þ¼­µå¸¦ ¹Ù·Î È£ÃâÇÒ ¼ö ¾ø´Ù°í µÇ¾î ÀÖÀ¸¹Ç·Î ¹Ýµå½Ã prepare¸¦ È£ÃâÇÏ¿© Áغñ »óÅ·ΠÀüȯÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é Á¤Áö´Â µÇÁö¸¸ Àç½ÃÀÛÀ» ÇÒ ¼ö ¾ø´Ù.

Prev/Next ¹öÆ°Àº ÇöÀç Àç»ý À§Ä¡ÀÎ mIdx¸¦ Áõ°¨½ÃÄÑ ÀÌÀü/´ÙÀ½ °îÀ» Àç»ýÇÑ´Ù. Àç»ýÁß¿¡ ¹Ìµð¾î¸¦ º¯°æÇÏ·Á¸é ¹Ýµå½Ã resetÇÑ ÈÄ »õ ¹Ìµð¾î¸¦ Àоî¾ß ÇÑ´Ù. Àç»ýÁß¿¡ °îÀ» º¯°æÇßÀ¸¸é ´ÙÀ½°îÀ» °è¼Ó Àç»ýÇÏ°í Á¤Áö »óÅ¿´´Ù¸é ¹Ìµð¾î¸¸ º¯°æÇÑ ÈÄ ´ë±âÇÑ´Ù. Àç»ýÇÏ´ø ¹Ìµð¾î°¡ ³¡±îÁö Àç»ý ¿Ï·áµÇ¾úÀ¸¸é ÀÚ¿¬½º·´°Ô ´ÙÀ½ °îÀ¸·Î ³Ñ¾î°¡¾ß Çϴµ¥ ÀÌ Ã³¸®¸¦ À§ÇØ ¿Ï·á ¸®½º³Ê¸¦ ¼³Ä¡ÇÏ°í Àç»ýÀÌ ³¡³¯ ¶§ ´ÙÀ½°îÀ» ·ÎµåÇÏ¿© °è¼Ó Àç»ýÇÑ´Ù. ÀÌÀü/´ÙÀ½À¸·Î À̵¿ÇÒ ¶§´Â ³¡¿¡¼­ ¹Ý´ëÂÊÀ¸·Î ¼øȯÇϵµ·Ï Çß´Ù.

MediaPlayer´Â Àç»ý À§Ä¡°¡ º¯°æµÉ ¶§ Ưº°ÇÑ ÄݹéÀ» È£ÃâÇÏÁö ¾Ê´Â ´ë½Å getCurrentPosition ¸Þ¼­µå·Î ¾ðÁ¦µçÁö Àç»ý À§Ä¡¿¡ ´ëÇÑ Á¤º¸¸¦ Á¶»çÇÒ ¼ö ÀÖ´Ù. µû¶ó¼­ Çڵ鷯·Î ŸÀ̸Ӹ¦ µ¹¸®¸ç ÁÖ±âÀûÀ¸·Î ÇöÀç À§Ä¡¸¦ Á¶»çÇÏ¿© ½ÃÅ©¹Ù·Î Ãâ·ÂÇØ¾ß ÇÑ´Ù. Àç»ý À§Ä¡ Ç¥½Ã°¡ ¼öµ¿À̶ó Á» ºÒÆíÇϱâ´Â ÇÏÁö¸¸ ´ë½Å Çڵ鷯 È£Ãâ Áö¿¬ ½Ã°£À» Á¶Á¤ÇÔÀ¸·Î½á °»½Å Áֱ⸦ ÀÚÀ¯·Ó°Ô ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. Á¾·á½Ã¿¡µµ Çڵ鷯´Â È£ÃâµÇ´Âµ¥ À̶§´Â mPlayer°¡ À¯È¿ÇÑ »óÅÂÀÎÁö¸¦ ¹Ýµå½Ã Á¡°ËÇØ¾ß ÇÔÀ» ÁÖÀÇÇÏÀÚ.

»ç¿ëÀÚ°¡ ½ÃÅ©¹Ù¸¦ Ŭ¸¯Çϸé Àç»ý À§Ä¡¸¦ º¯°æÇ쵂 ¼Ò¸®°¡ ²÷¾îÁö´Â °ÍÀ» ¹æÁöÇϱâ À§ÇØ º¯°æ Á÷Àü¿¡ Àç»ýÀ» Àá½Ã ÁßÁöÇÏ°í À§Ä¡ º¯°æ ¸®½º³Ê¿¡¼­ ´Ù½Ã Àç»ýÀ» ½ÃÀÛÇØ¾ß ÇÑ´Ù. seekTo ¸Þ¼­µå°¡ µ¿±âÀûÀ¸·Î µ¿ÀÛÇÏÁö ¾ÊÀ¸¸ç ¶§·Î´Â À§Ä¡ º¯°æ¿¡ »ó´çÇÑ ½Ã°£ÀÌ °É¸± ¼öµµ ÀÖÀ¸¹Ç·Î ¸®½º³Ê 󸮴 ²À ÇÊ¿äÇÏ´Ù. Á¤Áö »óÅ¿¡¼­ À§Ä¡¸¦ ¹Ù²Û °ÍÀ̶ó¸é À§Ä¡¸¸ ¹Ù²Ù¸é µÉ »Ó Àç»ýÀ» ´Ù½Ã ½ÃÀÛÇÒ ÇÊ¿ä´Â ¾ø´Ù. wasPlaying Çʵå´Â À§Ä¡ À̵¿Àü¿¡ Àç»ý »óÅ¿´´ÂÁö¸¦ ±â¾ïÇÑ´Ù.

onDestroy¿¡¼­´Â release¸¦ È£ÃâÇÏ¿© °´Ã¼¸¦ ¿ÏÀüÈ÷ ÇØÁ¦ÇÑ´Ù. release ¸Þ¼­µå´Â »óÅ¿¡ »ó°ü¾øÀÌ ¾ðÁ¦µçÁö È£ÃâÇÒ ¼ö ÀÖ´Â ¸Þ¼­µåÀ̸ç Àç»ýÁßÀÌ¶óµµ Áï½Ã ÁßÁöÇÏ°í °´Ã¼¸¦ ÇØÁ¦ÇÑ´Ù. onPause¿¡¼­´Â Àç»ýÀ» Á¤ÁöÇÏÁö ¾Ê´Âµ¥ MP3 Ç÷¹À̾î´Â ¹é±×¶ó¿îµå¿¡¼­µµ °è¼Ó ½ÇÇàµÇ¾î¾ß ÇϹǷΠ¾×ƼºñƼ°¡ Àá½Ã ¸ØÃß¾ú´Ù°í Çؼ­ Àç»ýÀ» ÁßÁöÇÒ ÇÊ¿ä´Â ¾ø´Ù. »ç¿ëÀÚ°¡ Back Å°¸¦ ´­·¯ ÇÁ·Î±×·¥À» ¸í½ÃÀûÀ¸·Î Á¾·áÇßÀ» ¶§¸¸ °´Ã¼¸¦ ÇØÁ¦ÇÏ°í HomeÅ°¸¦ ´­·¶À» ¶§´Â °è¼Ó Àç»ýÇØ¾ß ÇÑ´Ù.

ÀÌ»óÀ¸·Î Áö±ØÈ÷ °£´ÜÇÑ MP3 Ç÷¹À̾ Á¦ÀÛÇØ ºÃ´Âµ¥ ½Ç¿ë¼ºÀ» ³ôÀÌ·Á¸é Á» ´õ °³¼±ÀÌ ÇÊ¿äÇÏ´Ù. ÆÄÀÏ ¸ñ·Ï À§Ä¡°¡ °íÁ¤µÇ¾î Àִµ¥ ÀÓÀÇ À§Ä¡ÀÇ ÆÄÀϵµ Àç»ý °¡´ÉÇØ¾ß ÇÏ¸ç ¹Ìµð¾î DB¸¦ ÂüÁ¶ÇÏ´Â ¹æ¹ýµµ ÀÖ´Ù. ¿¡·¯ ¸®½º³Ê´Â Å佺Ʈ·Î ¿¡·¯ ³»¿ë¸¸ Ãâ·ÂÇߴµ¥ Á» ´õ »ó¼¼ÇÑ Ã³¸®°¡ ÇÊ¿äÇÏ´Ù. UIµµ ³Ê¹« Ã̽º·¯¿îµ¥ Á» ´õ ¿¹»Ú°Ô ¸¸µé ¼ö ÀÖ´Â ¿©Áö°¡ ¸¹À¸¸ç ·£´ý Àç»ýÀ̳ª ¹Ýº¹ Àç»ý µîÀÇ ±â´Éµµ ÇʼöÀûÀÌ´Ù. ¶Ç Àç»ýÁß¿¡ ÀüÈ­°¡ °É·Á¿À´Â »óȲµµ Àß ´ëóÇØ¾ß ÇÑ´Ù. À§ ¿¹Á¦¸¦ ¿Ïº®ÇÏ°Ô ÀÌÇØÇÑ´Ù¸é Ãß°¡ ±â´É ÀÛ¼º¿¡´Â Å« ¾î·Á¿òÀÌ ¾øÀ» °ÍÀÌ´Ù.

4.¿Àµð¿À ³ìÀ½

Àç»ýÇÏ´Â °Íº¸´Ù ½Ç¿ë¼ºÀÌ ´Ù¼Ò ¶³¾îÁö±â´Â ÇÏÁö¸¸ ¿Àµð¿À ³ìÀ½µµ °¡´ÉÇÏ´Ù. ½º¸¶Æ®ÆùÀº ±âº»ÀûÀ¸·Î ÀüÈ­±âÀÌ°í ¿¹¿Ü¾øÀÌ ¸¶ÀÌÅ©°¡ ³»ÀåµÇ¾î ÀÖÀ¸¹Ç·Î ´ç¿¬È÷ ³ìÀ½À» ÇÒ ¼ö ÀÖ´Ù. ¾Èµå·ÎÀ̵å´Â À½¼º ³ìÀ½ ¹× ¿µ»ó ³ìÈ­¸¦ À§ÇØ MediaRecorder Ŭ·¡½º¸¦ Á¦°øÇÑ´Ù. »ç¿ëÇÏ´Â ¹æ¹ýÀº ÇüÁ¦ Ŭ·¡½ºÀÎ MediaPlayer¿Í °ÅÀÇ À¯»çÇÏ´Ù.

³ìÀ½ °´Ã¼µµ Àç»ý °´Ã¼¿Í ¸¶Âù°¡Áö·Î »óŸ¦ À¯ÁöÇÏ¸ç »óź°·Î °¡´ÉÇÑ µ¿ÀÛÀÌ ÀÖ°í ºÒ°¡´ÉÇÑ µ¿ÀÛÀÌ ÀÖ´Ù. ±×·¯³ª MediaPlayer¿¡ ºñÇØ »óÅ°¡ º¹ÀâÇÏÁö ¾ÊÀ¸¸ç ³ìÀ½Àº Àç»ý¿¡ ºñÇØ ÀÏȸÀûÀÎ °æ¿ì°¡ ¸¹À¸¹Ç·Î ¸Þ¼­µå¸¦ ¼ø¼­´ë·Î È£ÃâÇϱ⸸ ÇÏ¸é º° ¹®Á¦¾øÀÌ È°¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¼ø¼­´ë·Î °´Ã¼¸¦ ÃʱâÈ­ÇÏ°í ÇÊ¿äÇÑ ¸Þ¼­µå¸¸ È£ÃâÇÏ¸é µÈ´Ù. µðÆúÆ® »ý¼ºÀÚ·Î »ý¼ºÇÑ ÈÄ ´ÙÀ½ ¸Þ¼­µå·Î ÀÔ·Â ¼Ò½º¸¦ ÁöÁ¤ÇÑ´Ù.

 

void setAudioSource (int audio_source)

setVideoSource (int video_source)

 

ÀÔ·Â ¼Ò½º¶õ À½¼ºÀ̳ª ¿µ»óÀ» ¾î¶² Àåºñ·ÎºÎÅÍ ¹ÞÀ» °ÍÀΰ¡¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù. ¿Àµð¿À ¼Ò½º·Î´Â Ä·ÄÚ´õ³ª À½¼º ÀÎ½Ä µîÀÌ ÀÖÀ¸³ª ÇöÀç ¹öÀü¿¡¼­´Â ¸¶ÀÌÅ©(MIC)¸¸ Áö¿øµÈ´Ù. ÇÚµåÆù¿¡ ³»ÀåµÈ ¸¶ÀÌÅ©¸¦ ÅëÇØ À½¼ºÀ» ÀԷ¹޴´Ù. ºñµð¿À ¼Ò½º·Î´Â Ä«¸Þ¶ó¸¸ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº Ãâ·Â ÆÄÀÏÀÇ Æ÷¸ËÀ» ÁöÁ¤ÇÑ´Ù.

 

void setOutputFormat (int output_format)

 

MPEG-4, THREE_GPP µîÀÇ Æ÷¸ËÀ» ÁöÁ¤ÇÒ ¼ö Àִµ¥ ½º¸¶Æ®Æù¿¡¼­´Â °¡±ÞÀûÀ̸é 3GP Æ÷¸ËÀ» »ç¿ëÇÒ °ÍÀÌ ±ÇÀåµÈ´Ù. 3GP´Â 3¼¼´ë ÈÞ´ëÆù¿¡ »ç¿ëÇÒ ¸ñÀûÀ¸·Î Mepg4¸¦ ´Ü¼øÈ­ÇÑ Æ÷¸ËÀ̶ó ´ëºÎºÐÀÇ ½º¸¶Æ®Æù°ú ȣȯµÈ´Ù. ¹°·Ð ±ÇÀåµÈ´Ù´Â °ÍÀÌÁö °­Á¦ÀûÀÎ °ÍÀº ¾Æ´Ï¹Ç·Î ÀåºñÀÇ ¼º´ÉÀÌ µû¶ó ÁØ´Ù¸é ´õ °íÇ°Áú Æ÷¸ËÀ» »ç¿ëÇصµ ¹«¹æÇÏ´Ù. ´ÙÀ½Àº ÀÔ·ÂµÈ °ªÀ» ¾ÐÃàÇÒ ÀÎÄÚ´õ¸¦ ÁöÁ¤ÇÑ´Ù.

 

void setAudioEncoder (int audio_encoder)

void setVideoEncoder (int video_encoder)

 

¿Àµð¿À ÀÎÄÚ´õ´Â AMR_NB¸¸ À¯È¿ÇÏ¸ç ºñµð¿À ÀÎÄÚ´õ·Î H263, H264, MPEG_4_SP Áß Çϳª¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ¾ÐÃà ¹æ½Ä¿¡ µû¶ó ÆÄÀÏ Å©±â¿Í Ç°ÁúÀÌ ´Þ¶óÁú °ÍÀÌ´Ù. ´ÙÀ½Àº Ãâ·Â ÆÄÀÏÀÇ °æ·Î¸¦ ÁöÁ¤ÇÑ´Ù. À½¼ºÀÌµç ¿µ»óÀÌµç °á±¹Àº ÆÄÀÏ ÇüÅ·ΠSD Ä«µå¿¡ ÀúÀåµÇ¾î¾ß ÇϹǷΠ³ìÀ½Çϱâ Àü¿¡ ÆÄÀÏÀÇ °æ·Î¸¦ ¾Ë·Á ÁÖ¾î¾ß ÇÑ´Ù.

 

void setOutputFile (String path)

 

¼­ºê µð·ºÅ丮¿¡ ÀúÀåÇÒ °æ¿ì µð·ºÅ丮´Â ¹Ýµå½Ã ¹Ì¸® »ý¼ºÇØ µÎ¾î¾ß Çϸç ÆÄÀÏÀº ´çÀå ¾ø¾îµµ »õ·Î »ý¼ºµÈ´Ù. ÀԷ°ú Ãâ·Â, ÀÎÄÚµù ¹æ½Ä, Æ÷¸Ë µîÀ» ¼ø¼­´ë·Î ÁöÁ¤Çߴµ¥ ¾îµð¼­ ¹ÞÀº À½¼ºÀ» ¾î¶² ¹æ½ÄÀ¸·Î ¾ÐÃàÇؼ­ ¾îµð´Ù ÀúÀåÇÒ °ÍÀÎÁö¸¦ ¾Ë·Á ÁØ °ÍÀÌ´Ù. ¿©±â±îÁö ÁøÇàÇÑ ÈÄ ´ÙÀ½ ¸Þ¼­µå·Î ³ìÀ½ ¹× ³ìÈ­¸¦ Áغñ, ½ÃÀÛ, Á¤ÁöÇÑ´Ù.

 

void prepare ()

void start ()

void stop ()

 

prepare¸¦ È£ÃâÇϱâ Àü¿¡ ³ìÀ½À» À§ÇÑ ¸ðµç Áغñ°¡ ¿Ï·áµÇ¾î ÀÖ¾î¾ß Çϸç start¸¦ È£ÃâÇϱâ Àü¿¡´Â ¹Ýµå½Ã prepare¸¦ ¸ÕÀú È£ÃâÇØ¾ß ÇÑ´Ù. Àç»ý°ú´Â ´Þ¸® ³¡ÀÌ µû·Î ¾øÀ¸¹Ç·Î ³ìÀ½Àº stop ¸Þ¼­µå¸¦ È£ÃâÇÒ ¶§±îÁö °è¼ÓµÈ´Ù. ƯÁ¤ ±æÀ̳ª ½Ã°£ºÐ¸¸Å­¸¸ ³ìÀ½À» ÇÏ·Á¸é prepare¸¦ È£ÃâÇϱâ Àü¿¡ ´ÙÀ½ ¸Þ¼­µå·Î ½Ã°£°ú ÆÄÀÏ Å©±âÀÇ »óÇѼ±À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

 

void setMaxDuration (int max_duration_ms)

void setMaxFileSize (long max_filesize_bytes)

 

ƯÁ¤ ¸ñÀûÀ¸·Î »ç¿ëÇÒ ÆÄÀÏÀ̶ó¸é ±æÀ̳ª ½Ã°£À» Á¦ÇÑÇÒ ÇÊ¿ä°¡ Àִµ¥ ¿¹¸¦ µé¾î MMS ÷ºÎ¿ë µ¿¿µ»óÀº ½Ã°£ Á¦ÇÑÀÌ ÀÖ´Ù. ÁöÁ¤ÇÑ ½Ã°£À̳ª ¿ë·®¿¡ À̸£¸é OnInfoListener ÄݹéÀÌ È£ÃâµÇ¸ç ³ìÀ½Àº ÀÚµ¿À¸·Î Á¤ÁöµÈ´Ù. ´ÙÀ½ ¸Þ¼­µå´Â ´Ù »ç¿ëÇÑ ÈÄ °´Ã¼¸¦ ¸®¼ÂÇϰųª ÇØÁ¦ÇÑ´Ù.

 

void release ()

void reset ()

 

2.2 ¹öÀü ÀÌÈÄ¿¡´Â ºñÆ® ·¹ÀÌÆ®³ª »ùÇøµ ºñÀ², ä³Î¼ö µîÀ» »ó¼¼ Á¶Á¤ÇÒ ¼ö ÀÖ´Â ¸Þ¼­µå°¡ Ãß°¡µÇ¾ú°í Çϵå¿þ¾î·ÎºÎÅÍ ÇÁ·ÎÇÊÀ» ¹Þ¾Æ ¿É¼ÇÀ» ¼³Á¤ÇÏ´Â ±â´Éµµ Ãß°¡µÇ¾ú´Ù. ³ìÀ½À» ÇÏ·Á¸é ´ÙÀ½ µÎ °³ÀÇ Æ۹̼ÇÀÌ ÇÊ¿äÇÏ´Ù.

 

RECORD_AUDIO

WRITE_EXTERNAL_STORAGE

 

RECORD_AUDIO´Â ÇÏ°íÀÚ ÇÏ´Â ÀÛ¾÷°ú À̸§ÀÌ ÀÏÄ¡ÇϹǷΠÁ÷°üÀûÀÌ´Ù. ÀÌ ÆÛ¹Ì¼Ç ¿Ü¿¡ SD Ä«µå¿¡ ³ìÀ½µÈ ÆÄÀÏÀ» »ý¼ºÇØ¾ß ÇϹǷΠÆÄÀÏ ±â·Ï Æ۹̼ǵµ ÇÊ¿äÇÏ´Ù. ³Ê¹«³ª ´ç¿¬ÇÏÁö¸¸ ·¹ÆÛ·±½º¿¡ ¸í½ÃµÇ¾î ÀÖÁö ¾Ê¾Æ ÀÌ Æ۹̼ÇÀ» »© ¸Ô°í °í»ýÇÏ´Â »ç¶÷µéÀÌ °¡²û ÀÖ´Â °Í °°´Ù. ¹Ù·Î ³»°¡ ±×·¨´Âµ¥ ÀÌ Æ۹̼ÇÀ» ¹Ìó »ý°¢Ä¡ ¸øÇØ ²¿¹Ú ÇϷ絿¾È »ðÁúÀ» Çß¾ú´ø ¾ÆÇ Ãß¾ïÀÌ ÀÖ´Ù.

³ìÀ½Àº Àç»ý¿¡ ºñÇؼ­ ÀýÂ÷°¡ ¼øÂ÷ÀûÀÌ°í ¿©·¯¹ø ¹Ýº¹µÇÁö ¾ÊÀ¸¹Ç·Î ÄÚµå ÀÛ¼ºÀÌ ÈξÀ ´õ ½±´Ù. ´ÙÀ½ ¿¹Á¦´Â °£´ÜÇÑ ¿Àµð¿À ³ìÀ½ ±â´É°ú Á¦´ë·Î ³ìÀ½µÇ¾ú´ÂÁö¸¦ È®ÀÎÇÏ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. ³ìÀ½ ¹öÆ°ÀÇ onClick ¸®½º³Ê¿¡ ÀÛ¼ºµÈ Äڵ尡 ³ìÀ½À» ÇÏ´Â ÀýÂ÷ÀÇ Á¤¼®À̹ǷΠÀÌ Äڵ带 ±×´ë·Î µû¶óÇÏ¸é ½±°Ô ³ìÀ½ÇÒ ¼ö ÀÖ´Ù.

 

mm_RecAudio

public class mm_RecAudio extends Activity {

     MediaRecorder mRecorder = null;

     Button mStartBtn, mPlayBtn;

     boolean mIsStart = false;

     String Path = "";

    

     public void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

          setContentView(R.layout.mm_recaudio);

 

          mStartBtn = (Button)findViewById(R.id.start);

          mPlayBtn = (Button)findViewById(R.id.play);

         

          mStartBtn.setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   if (mIsStart == false) {

                      Path = "/sdcard/recaudio.3gp";

                        if (mRecorder == null) {

                             mRecorder = new MediaRecorder();

                        } else {

                             mRecorder.reset();

                        }

                        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

                        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

                        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

                        mRecorder.setOutputFile(Path);

                        try {

                             mRecorder.prepare();

                        } catch (IllegalStateException e) {

                             Toast.makeText(mm_RecAudio.this, "IllegalStateException", 1).show();

                        } catch (IOException e) {

                             Toast.makeText(mm_RecAudio.this, "IOException", 1).show();

                        }

                        mRecorder.start();

                        mIsStart = true;

                        mStartBtn.setText("Stop");

                   } else {

                        mRecorder.stop();

                        mRecorder.release();

                        mRecorder = null;

                        mIsStart = false;

                        mStartBtn.setText("Start");

                   }

              }

          });

 

          mPlayBtn.setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   if (Path.length() == 0 || mIsStart) {

                        Toast.makeText(mm_RecAudio.this, "³ìÀ½À» ¸ÕÀú ÇϽʽÿÀ.", 0).show();

                        return;

                   }

                   MediaPlayer player = new MediaPlayer();

                   try {

                        player.setDataSource(Path);

                        player.prepare();

                        player.start();

                   } catch (Exception e) {

                        Toast.makeText(mm_RecAudio.this, "error : " + e.getMessage(), 0).show();

                   }

              }

          });

     }

 

     public void onDestroy() {

        super.onDestroy();

        if (mRecorder != null) {

          mRecorder.release();

          mRecorder = null;

        }

    }

}

 

 

·¹À̾ƿô¿¡´Â ½ÃÀÛ/Á¤Áö ¹öÆ°°ú ³ìÀ½µÈ À½¼ºÀ» È®ÀÎÇÏ´Â ¹öÆ°¸¸ ¹èÄ¡ÇØ µÎ¾ú´Ù. À§ÂÊ ¹öÆ° ´­·¯ ³ìÀ½À» ½ÃÀÛÇÏ°í ´Ù½Ã Çѹø ´õ ´­·¯ ÁßÁöÇÑ ÈÄ ¾Æ·¡ÂÊ ¹öÆ° ´­·¯º¸¸é ÇÑ ¿¹Á¦·Î ³ìÀ½°ú °á°ú È®ÀÎÀ» ÇØ º¼ ¼ö ÀÖ´Ù. ÆíÀÇ»ó ³ìÀ½ ÆÄÀÏÀÇ À§Ä¡¿Í À̸§Àº °íÁ¤ÇØ µÎ¾ú´Ù.

¿¡¹Ä·¹ÀÌÅÍ´Â ¸¶ÀÌÅ©°¡ ¾ø°í DDMS¿¡µµ ¸¶ÀÌÅ©¸¦ Èä³»³»´Â ±â´ÉÀº Á¦°øµÇÁö ¾Ê´Â´Ù. ·¹ÆÛ·±½º¿¡´Â MediaRecord°¡ ¿¡¹Ä·¹ÀÌÅÍ¿¡¼­´Â µ¿ÀÛÇÏÁö ¾Ê´Â´Ù°í ¸í½ÃµÇ¾î ÀÖÁö¸¸ ½ÇÁ¦·Î ÇØ º¸¸é È£½ºÆ® PCÀÇ ¸¶ÀÌÅ©·Î ³ìÀ½ °¡´ÉÇÏ´Ù. ¿¡¹Ä·¹ÀÌÅÍÀÇ ±â´ÉÀº °³¼±µÇ¾ú´Âµ¥ ·¹ÆÛ·±½º°¡ ¾ÆÁ÷ ¾÷µ¥ÀÌÆ®µÇÁö ¾ÊÀº °Í °°´Ù. ½ÇÀåºñ¿¡¼­´Â ¹°·Ð ¾Æ¹« ÀÌ»ó¾øÀÌ Àß µ¿ÀÛÇÑ´Ù.