ȸ¿ø·Î±×ÀÎ
Media Player¸¦ ÀÌ¿ëÇÑ À½¾Ç Àç»ý ¾îÇø®ÄÉÀÌ¼Ç ¸¸µé¾îº¸±â
8³â Àü
¼Ò½º ÆÄÀÏÀ» º¸¸é¼ ¼³¸íÇϵµ·Ï ÇÏ°Ú½À´Ï´Ù.
package com.androidhuman.AudioPlayer;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import android.media.MediaPlayer;
public class AudioPlayer extends Activity {
private MediaPlayer mp;
// MediaPlayer °´Ã¼ÀÔ´Ï´Ù.
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText audioPath = (EditText)findViewById(R.id.srcEdt);
final CheckBox loopControl = (CheckBox)findViewById(R.id.setLoop);
final Button PlayPause = (Button)findViewById(R.id.PlayPause);
final Button Stop = (Button)findViewById(R.id.Stop);
final Button Load = (Button)findViewById(R.id.load);
// ÆÄÀÏ ºÒ·¯¿À±â ¹öÆ°¿¡ ´ëÇÑ ¸®½º³Ê
Load.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(!loadAudio(audioPath.getText().toString())){
// ¿Àµð¿À ÆÄÀÏÀ» ºÒ·¯¿É´Ï´Ù.
Toast
// ¿Àµð¿À ÆÄÀÏ ºÒ·¯¿À±â¿¡ ½ÇÆÐÇÑ °æ¿ì
.makeText(getApplicationContext(), "ÆÄÀÏ ºÒ·¯¿À±â¿¡ ½ÇÆÐÇß½À´Ï´Ù.", Toast.LENGTH_LONG)
.show();
return;
}
audioPath.setEnabled(false);
// ÆÄÀÏ Path ÀԷ¶õÀ» ºñÈ°¼ºÈÇÕ´Ï´Ù.
PlayPause.setEnabled(true);
Stop.setEnabled(true);
loopControl.setEnabled(true);
Load.setEnabled(false);
Toast
.makeText(getApplicationContext(), "ÆÄÀÏ : " + audioPath.getText().toString() +" ·Îµå°¡ ¿Ï·áµÇ¾ú½À´Ï´Ù.", Toast.LENGTH_LONG)
.show();
}
});
// Àç»ý ¹Ýº¹ ¿©ºÎ ¼±Åà ¹öÆ°¿¡ ´ëÇÑ ¸®½º³Ê
loopControl.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(loopControl.isChecked()){
// üũ¹Ú½º¿¡ üũÇϸé
mp.setLooping(true);
// ¹Ýº¹À» È°¼ºÈÇÕ´Ï´Ù.
Toast
.makeText(getApplicationContext(), "¹Ýº¹ È°¼ºÈµÊ", Toast.LENGTH_SHORT)
.show();
}else{
mp.setLooping(false);
// ¹Ýº¹À» ºñÈ°¼ºÈÇÕ´Ï´Ù.
Toast
.makeText(getApplicationContext(), "¹Ýº¹ ÇØÁ¦µÊ", Toast.LENGTH_SHORT)
.show();
}
}
});
// Àç»ý/ÀϽÃÁ¤Áö ¹öÆ°¿¡ ´ëÇÑ ¸®½º³Ê
PlayPause.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(PlayPauseAudio()==0){
// Àç»ý½Ã
PlayPause.setText("ÀϽÃÁ¤Áö");
// ¹öÆ°ÀÇ Ä¸¼ÇÀ» ÀϽÃÁ¤Áö·Î º¯°æÇÕ´Ï´Ù.
}else{
// ÀϽÃÁ¤Áö½Ã
PlayPause.setText("Àç»ý");
// ¹öÆ°ÀÇ Ä¸¼ÇÀ» Àç»ýÀ¸·Î º¯°æÇÕ´Ï´Ù.
}
}
});
// Á¤Áö¹öÆ°¿¡ ´ëÇÑ ¸®½º³Ê
Stop.setOnClickListener(new OnClickListener(){
// Á¤Áö¹öÆ°À» ´©¸£¸é
public void onClick(View v){
mp.stop();
// Á¤ÁöÇÕ´Ï´Ù.
// Á¤Áö°¡ µÇ¸é, Load¹öÆ°À» ´·¯ ÆÄÀÏÀ» prepare ÇØ¾ß ÇϹǷÎ, ¼³Á¤°ªµéÀ» ÃʱâÈÇÕ´Ï´Ù.
audioPath.setEnabled(true);
// ºñÈ°¼ºÈ µÇ¾ú´ø ÀԷ¶õÀ» È°¼ºÈÇÕ´Ï´Ù.
PlayPause.setText("Àç»ý");
loopControl.setChecked(false);
PlayPause.setEnabled(false);
Stop.setEnabled(false);
loopControl.setEnabled(false);
Load.setEnabled(true);
}
});
}
private int PlayPauseAudio(){
if(!mp.isPlaying()){
// Àç»ýÁßÀÌ ¾Æ´Ï¶ó¸é
mp.start();
// ÆÄÀÏÀ» Àç»ýÇÕ´Ï´Ù.
Toast.makeText(getApplicationContext(), "Àç»ý", Toast.LENGTH_SHORT).show();
return 0;
}else{
// Àç»ýÁßÀ̶ó¸é
mp.pause();
// ÀϽÃÁ¤ÁöÇÕ´Ï´Ù.
Toast.makeText(getApplicationContext(), "ÀϽà Á¤ÁöµÊ", Toast.LENGTH_SHORT).show();
return 1;
}
}
private boolean loadAudio(String path){
// ¿Àµð¿À ÆÄÀÏÀ» ·ÎµåÇÕ´Ï´Ù.
mp = new MediaPlayer();
// MediaPlayer °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.
try{
mp.setDataSource(path);
mp.prepare();
// ÆÄÀÏÀ» ÁغñÇÕ´Ï´Ù.
return true;
}catch(Exception e){
// ¿Àµð¿À ÆÄÀÏ ·Îµå¿¡ ½ÇÆÐÇϸé
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
return false;
// false¸¦ ¹ÝȯÇÕ´Ï´Ù.
}
}
public void onDestroy(){
// ¾×ƼºñƼ°¡ Á¾·áµÉ ¶§
super.onDestroy();
if(mp != null)
mp.release();
// MediaPlayer °´Ã¼¸¦ ReleaseÇÕ´Ï´Ù.
mp = null;
}
}
Á» ¼Ò½º°¡ ±æ¾îº¸ÀÌÁÒ? ÇÏÁö¸¸ º°·Î ¾î·Á¿ï °Ç ¾ø½À´Ï´Ù.
±æ¾îÁø °Ç Á¦°¡ ±ÞÇÏ°Ô Â¥´À¶ó È¿À²¼º ÀÌ·±°É °í·ÁÇÏÁö ¾Ê¾Æ¼ ±×·¡¿ä~~
import android.media.MediaPlayer;
ÀÏ´Ü, MediaPlayer °´Ã¼¸¦ »ç¿ëÇÏ·Á¸é À§¿Í °°ÀÌ import ¸¦ ÇØÁÖ¼Å¾ß ÇÕ´Ï´Ù.
Àú °´Ã¼¿¡ ¸ÖƼ¹Ìµð¾î ÆÄÀϵéÀ» ºÒ·¯¿À°Ô µÇ´Â °ÍÀÌÁÒ~
¹Ìµð¾îÇ÷¹ÀÌ¾î °´Ã¼(¿Àµð¿À)ÀÇ »ç¿ë ´Ü°è´Â ´ÙÀ½°ú °°½À´Ï´Ù.
1. °´Ã¼ »ý¼º
2. setDataSource()¸¦ ÀÌ¿ëÇÏ¿© ÆÄÀÏÀ» ºÒ·¯¿È (´Ù¸¥ ÀÛ¾÷À» Çϱâ Àü¿¡ ÀÌ °úÁ¤ÀÌ ²À ÇÊ¿äÇÕ´Ï´Ù! ¾ÈÇÏ¸é ¿¡·¯..)
3. prepare()¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ¿© »ç¿ëÇÒ Áغñ¸¦ ÇÔ
4. start() ¸Þ¼Òµå·Î Àç»ý ½ÃÀÛ, ÀÌÈÄ ¹Ìµð¾î Ç÷¹À̾îÀÇ °¢Á¾ ¸Þ¼Òµå·Î Àç»ý ÄÁÆ®·Ñ
5. Àç»ýÀÌ ³¡³ª¸é ¹Ìµð¾îÇ÷¹ÀÌ¾î °´Ã¼¸¦ ¼Ò¸ê½ÃÅ´ (Garbage collection)
°´Ã¼¸¦ »ý¼ºÇÏ´Â °úÁ¤ ¹× setDataSource()¸¦ ÅëÇØ Àç»ý Áغñ¸¦ ÇÏ´Â °úÁ¤À» º¸°Ú½À´Ï´Ù.
private boolean loadAudio(String path){
// ¿Àµð¿À ÆÄÀÏÀ» ·ÎµåÇÕ´Ï´Ù.
mp = new MediaPlayer();
// MediaPlayer °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.
try{
mp.setDataSource(path);
mp.prepare();
// ÆÄÀÏÀ» ÁغñÇÕ´Ï´Ù.
return true;
}catch(Exception e){
// ¿Àµð¿À ÆÄÀÏ ·Îµå¿¡ ½ÇÆÐÇϸé
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
return false;
// false¸¦ ¹ÝȯÇÕ´Ï´Ù.
}
}
À§¿Í °°ÀÌ path¸¦ ÀÎÀÚ·Î ¹Þ¾Æ ¿Àµð¿À ÆÄÀÏÀ» ºÒ·¯¿À´Â °úÁ¤À» º¼ ¼ö ÀÖ½À´Ï´Ù. ÆÄÀÏÀÇ path¿¡ °üÇÑ ¼³¸íÀº ÀÌÀü Æ÷½ºÆ®(2009/04/07 - [¾Èµå·ÎÀ̵å À̾߱â/ÀÌ°Å, ¾Ë°íÀÖ´Ï?] - ¾Èµå·ÎÀ̵忡¼ Àç»ýÇÒ ¼ö ÀÖ´Â ¸ÖƼ¹Ìµð¾î ÆÄÀÏ Çü½Äµé & ÆÄÀÏ »ç¿ë¹ý)À» Âü°íÇϼ¼¿ä~
path ÀÎÀÚ¸¦ ÅëÇØ ¹Þ¾Æ¿Â °ÍÀ» Åä´ë·Î setDataSource()¸Þ¼Òµå¿¡¼ °´Ã¼¿¡ ºÒ·¯¿Ã ÆÄÀÏÀ» ÁöÁ¤ÇØÁÖ°Ô µË´Ï´Ù. ÀÌ ¶§, ¿¡·¯°¡ ¹ß»ýÇÏ°Ô µÇ¸é ÀûÀýÈ÷ ¿¹¿Ü 󸮸¦ ÇØ ÁÖ½Ã¸é µË´Ï´Ù. Àú´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ Toast¸¦ ÅëÇØ »ç¿ëÀÚ¿¡°Ô º¸¿©ÁÖµµ·Ï ÇÏ¿´½À´Ï´Ù.
// ÆÄÀÏ ºÒ·¯¿À±â ¹öÆ°¿¡ ´ëÇÑ ¸®½º³Ê
Load.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(!loadAudio(audioPath.getText().toString())){
// ¿Àµð¿À ÆÄÀÏÀ» ºÒ·¯¿É´Ï´Ù.
Toast
// ¿Àµð¿À ÆÄÀÏ ºÒ·¯¿À±â¿¡ ½ÇÆÐÇÑ °æ¿ì
.makeText(getApplicationContext(), "ÆÄÀÏ ºÒ·¯¿À±â¿¡ ½ÇÆÐÇß½À´Ï´Ù.", Toast.LENGTH_LONG)
.show();
return;
}
audioPath.setEnabled(false);
// ÆÄÀÏ Path ÀԷ¶õÀ» ºñÈ°¼ºÈÇÕ´Ï´Ù.
PlayPause.setEnabled(true);
Stop.setEnabled(true);
loopControl.setEnabled(true);
Load.setEnabled(false);
Toast
.makeText(getApplicationContext(), "ÆÄÀÏ : " + audioPath.getText().toString() +" ·Îµå°¡ ¿Ï·áµÇ¾ú½À´Ï´Ù.", Toast.LENGTH_LONG)
.show();
}
});
ÆÄÀÏ ºÒ·¯¿À±â ¹öÆ°À» ´©¸£¸é, À§¿¡¼ ºÃ´ø loadAudio()¸Þ¼Òµå¸¦ È£ÃâÇÏ°í, ±× °á°ú¿¡ µû¶ó¼ ¿¡·¯ ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÒ °ÍÀÎÁö, ÆÄÀÏ Àç»ý Áغñ¸¦ ÇÏ´ÂÁö °áÁ¤ÇÏ°Ô µË´Ï´Ù.
±×·³, ´ÙÀ½À¸·Î Àç»ýÇÏ´Â °úÁ¤À» º¸µµ·Ï ÇÏÁÒ.
// Àç»ý/ÀϽÃÁ¤Áö ¹öÆ°¿¡ ´ëÇÑ ¸®½º³Ê
PlayPause.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(PlayPauseAudio()==0){
// Àç»ý½Ã
PlayPause.setText("ÀϽÃÁ¤Áö");
// ¹öÆ°ÀÇ Ä¸¼ÇÀ» ÀϽÃÁ¤Áö·Î º¯°æÇÕ´Ï´Ù.
}else{
// ÀϽÃÁ¤Áö½Ã
PlayPause.setText("Àç»ý");
// ¹öÆ°ÀÇ Ä¸¼ÇÀ» Àç»ýÀ¸·Î º¯°æÇÕ´Ï´Ù.
}
}
});
Àú´Â ÀÌ ¾îÇø®ÄÉÀ̼ǿ¡¼ Àç»ý ¹öÆ°À» ´©¸£¸é ÀϽÃÁ¤Áö ±â´Éµµ ¼öÇàÇÒ ¼ö ÀÖ°Ô²û ±¸ÇöÇÏ¿©¼ ¹öÆ°À» ´©¸¦ ¶§¸¶´Ù »óÅ¿¡ µû¶ó¼ ·¹À̺íÀÌ ¹Ù²îµµ·Ï ÇÏ¿´½À´Ï´Ù. ½ÇÁúÀûÀÎ Àç»ý ÄÁÆ®·Ñ¿¡ ´ëÇÑ ¼Ò½º´Â ´ÙÀ½°ú °°½À´Ï´Ù.
private int PlayPauseAudio(){
if(!mp.isPlaying()){
// Àç»ýÁßÀÌ ¾Æ´Ï¶ó¸é
mp.start();
// ÆÄÀÏÀ» Àç»ýÇÕ´Ï´Ù.
Toast.makeText(getApplicationContext(), "Àç»ý", Toast.LENGTH_SHORT).show();
return 0;
}else{
// Àç»ýÁßÀ̶ó¸é
mp.pause();
// ÀϽÃÁ¤ÁöÇÕ´Ï´Ù.
Toast.makeText(getApplicationContext(), "ÀϽà Á¤ÁöµÊ", Toast.LENGTH_SHORT).show();
return 1;
}
}
Àç»ý/ ÀϽÃÁ¤Áö ¿©ºÎ´Â MediaPlayer°´Ã¼ÀÇ isPlaying() ¸Þ¼Òµå¸¦ ÅëÇØ ±¸ÇöÇÏ¿´½À´Ï´Ù. Àç»ýÁßÀÏ°æ¿ì isPlaying() ¸Þ¼Òµå´Â true¸¦, ¾Æ´Ò °æ¿ì false¸¦ ¹ÝȯÇÏ°Ô µË´Ï´Ù.
Á¤Áö ¹öÆ°À» ´©¸£¸é, Á¤Áö¸¦ ¼öÇàÇÏ°í ¾îÇø®ÄÉÀ̼ÇÀÇ »óŸ¦ Ãʱâ»óÅ·ΠµÇµÉ¸³´Ï´Ù.
// Á¤Áö¹öÆ°¿¡ ´ëÇÑ ¸®½º³Ê
Stop.setOnClickListener(new OnClickListener(){
// Á¤Áö¹öÆ°À» ´©¸£¸é
public void onClick(View v){
mp.stop();
// Á¤ÁöÇÕ´Ï´Ù.
// Á¤Áö°¡ µÇ¸é, Load¹öÆ°À» ´·¯ ÆÄÀÏÀ» prepare ÇØ¾ß ÇϹǷÎ, ¼³Á¤°ªµéÀ» ÃʱâÈÇÕ´Ï´Ù.
audioPath.setEnabled(true);
// ºñÈ°¼ºÈ µÇ¾ú´ø ÀԷ¶õÀ» È°¼ºÈÇÕ´Ï´Ù.
PlayPause.setText("Àç»ý");
loopControl.setChecked(false);
PlayPause.setEnabled(false);
Stop.setEnabled(false);
loopControl.setEnabled(false);
Load.setEnabled(true);
}
});
¸¶Áö¸·À¸·Î, ¾×ƼºñƼ°¡ Á¾·áµÉ ¶§ ¹Ìµð¾îÇ÷¹ÀÌ¾î °´Ã¼¸¦ ¹ÝȯÇÏ°Ô µË´Ï´Ù.
public void onDestroy(){
// ¾×ƼºñƼ°¡ Á¾·áµÉ ¶§
super.onDestroy();
if(mp != null)
mp.release();
// MediaPlayer °´Ã¼¸¦ ReleaseÇÕ´Ï´Ù.
mp = null;
}
̵̧ : 293
̵̧
¸ñ·Ï