ºñ½Ñ ½º¸¶Æ®ÆùÀ» »ç ³õ°íµµ ¸·»ó ÀüÈ ±â´É¸¸ »ç¿ëÇÏ´Â »ç¶÷µéÀÌ¶óµµ ÃÖ¼ÒÇÑ À½¾ÇÀº µè´Â´Ù. ½º¸¶Æ®ÆùÀÇ ÁÖµÈ ±¸ÀÔ ¸ñÀû Áß Çϳª°¡ ÆùÀ̶û 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·Î ¹Ù²ï °Í¸¸ ´Ù¸£´Ù. ·ÎÄÿ¡ ÆÄÀÏÀÌ ¾ø¾îµµ ÀÎÅͳݿ¡ ¿¬°áµÇ¾î Àֱ⸸ ÇÏ¸é ´Ù¿î·Îµå¹Þ¾Æ Àç»ýÇÒ ¼ö ÀÖ´Ù. ½ºÆ®¸®¹Ö ÆÄÀÏÀº ¹Ì¸® ¾÷·ÎµåÇØ ³õ¾Ò´Âµ¥ Ȥ½Ã ÀÌ »çÀÌÆ®°¡ ¸ÁÇßÀ¸¸é ÁÖ¼Ò¸¦ ¹Ù²ã º¸¾Æ¶ó. ³ª¸ÓÁö »õ ¹öÆ°ÀÇ ÄÚµå´Â ¾à°£ÀÇ ¹®Á¦°¡ Àִµ¥ ´ÙÀ½ Ç׿¡¼ Á» ´õ ¿¬±¸ÇØ º¸ÀÚ.
¾Õ ¿¹Á¦´Â »ç¿îµå¸¦ Àç»ýÇÏ´Â ¿©·¯ °¡Áö ¹æ¹ýÀÇ ¿ø·ÐÀûÀÎ ÀýÂ÷¸¦ º¸¿©ÁÖ±â À§ÇØ ÀǵµÀûÀ¸·Î ÀÛ¼ºÇÑ °ÍÀÌ´Ù. ¼¶¼¼ÇÑ ¿¹¿Ü 󸮴 ¿¹Á¦¶ó¼ »ý·«Çß´Ù Ä¡´õ¶óµµ ¸î °¡Áö Ä¡¸íÀûÀÎ ¹®Á¦°¡ ÀÖ´Ù. ¿ì¼± 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ÀÇ °ÅÀÇ ¸ðµç °ÍÀÌ ÇÔÃàÀûÀ¸·Î ¼³¸íÇÏ°í ÀÖ´Ù.
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µµ ³Ê¹« Ã̽º·¯¿îµ¥ Á» ´õ ¿¹»Ú°Ô ¸¸µé ¼ö ÀÖ´Â ¿©Áö°¡ ¸¹À¸¸ç ·£´ý Àç»ýÀ̳ª ¹Ýº¹ Àç»ý µîÀÇ ±â´Éµµ ÇʼöÀûÀÌ´Ù. ¶Ç Àç»ýÁß¿¡ ÀüÈ°¡ °É·Á¿À´Â »óȲµµ Àß ´ëóÇØ¾ß ÇÑ´Ù. À§ ¿¹Á¦¸¦ ¿Ïº®ÇÏ°Ô ÀÌÇØÇÑ´Ù¸é Ãß°¡ ±â´É ÀÛ¼º¿¡´Â Å« ¾î·Á¿òÀÌ ¾øÀ» °ÍÀÌ´Ù.
Àç»ýÇÏ´Â °Íº¸´Ù ½Ç¿ë¼ºÀÌ ´Ù¼Ò ¶³¾îÁö±â´Â ÇÏÁö¸¸ ¿Àµð¿À ³ìÀ½µµ °¡´ÉÇÏ´Ù. ½º¸¶Æ®ÆùÀº ±âº»ÀûÀ¸·Î ÀüȱâÀÌ°í ¿¹¿Ü¾øÀÌ ¸¶ÀÌÅ©°¡ ³»ÀåµÇ¾î ÀÖÀ¸¹Ç·Î ´ç¿¬È÷ ³ìÀ½À» ÇÒ ¼ö ÀÖ´Ù. ¾Èµå·ÎÀ̵å´Â À½¼º ³ìÀ½ ¹× ¿µ»ó ³ìȸ¦ À§ÇØ 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ÀÇ ¸¶ÀÌÅ©·Î ³ìÀ½ °¡´ÉÇÏ´Ù. ¿¡¹Ä·¹ÀÌÅÍÀÇ ±â´ÉÀº °³¼±µÇ¾ú´Âµ¥ ·¹ÆÛ·±½º°¡ ¾ÆÁ÷ ¾÷µ¥ÀÌÆ®µÇÁö ¾ÊÀº °Í °°´Ù. ½ÇÀåºñ¿¡¼´Â ¹°·Ð ¾Æ¹« ÀÌ»ó¾øÀÌ Àß µ¿ÀÛÇÑ´Ù.