ȸ¿ø·Î±×ÀÎ
MediaPlayer Ŭ·¡½º »ç¿ë¹ý
8³â Àü
1. ·¹À̾ƿô ¼³Á¤ (activity_main.xml)
°£´ÜÇÏ°Ô Àç»ý, ÁßÁö, ÀϽÃÁßÁöÀÇ 3°¡Áö ¹öÆ°À» »ðÀÔÇÕ´Ï´Ù.
2. ·¹À̾ƿô¿¡ µû¸¥ Java Ŭ·¡½º ÀÛ¼º (MainActivity.java)
3°³ÀÇ ¹öÆ°À» Java Ŭ·¡½ºÀÇ Button Çü ÀνºÅϽº¿¡ ¿¬°áÇÏ°í Ŭ¸¯ÇÒ ¶§ °ðÀ̾î Á¤ÀÇ ÇÒ updateActivity ÇÔ¼ö°¡ È£ÃâµÇµµ·Ï ÇÕ´Ï´Ù.
Java Ŭ·¡½º¿¡´Â Àç»ý »óÅÂ¿Í °ü·ÃµÈ 4°¡Áö »ó¼ö¸¦ Á¤ÀÇÇÏ°í ÀÖ½À´Ï´Ù.
PLAYER_INIT: ¾ÛÀÌ ½ÇÇàµÇ°í Àç»ý °ü·Ã ÇÔ¼ö¿¡¼´Â ¾ÆÁ÷ ¾Æ¹«°Íµµ ¼öÇàÇÏÁö ¾ÊÀº »óÅÂÀÔ´Ï´Ù.
PLAYER_STOP: ¼Ò¸® Àç»ýÀÌ ÁßÁöµÈ »óÅÂÀÔ´Ï´Ù.
PLAYER_PLAY: ¼Ò¸®°¡ Àç»ýÁßÀÎ »óÅÂÀÔ´Ï´Ù.
PLAYER_PAUSE: ¼Ò¸® Àç»ýÀÌ ÀϽÃÁßÁöµÈ »óÅÂÀÔ´Ï´Ù.
package com.example.audiotest;
import java.io.*;
import android.app.*;
import android.content.res.*;
import android.media.*;
import android.os.*;
import android.util.*;
import android.view.*;
import android.widget.*;
public class MainActivity extends Activity
{
private static final int PLAYER_INIT = 0; // óÀ½ »óÅÂ
private static final int PLAYER_STOP = 1; // ÁßÁö »óÅÂ
private static final int PLAYER_PLAY = 2; // Àç»ý »óÅÂ
private static final int PLAYER_PAUSE = 3; // ÀϽÃÁ¤Áö »óÅÂ
private MediaPlayer mediaPlayer = null; // ¹Ìµð¾î Àç»ý Ŭ·¡½º
private int mediaPlayerStatus = PLAYER_INIT; // ¾×ƼºñƼÀÇ Ã³À½ »óÅÂ
private Button buttonPlay = null; // Àç»ý ¹öÆ°
private Button buttonStop = null; // Á¤Áö ¹öÆ°
private Button buttonPause = null; // ÀϽÃÁ¤Áö ¹öÆ°
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.buttonPlay = (Button)this.findViewById(com.example.audiotest.R.id.buttonPlay);
this.buttonStop = (Button)this.findViewById(com.example.audiotest.R.id.buttonStop);
this.buttonPause = (Button)this.findViewById(com.example.audiotest.R.id.buttonPause);
this.buttonPlay.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
MainActivity.this.updateActivity(PLAYER_PLAY);
}
});
this.buttonStop.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
MainActivity.this.updateActivity(PLAYER_STOP);
}
});
this.buttonPause.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
MainActivity.this.updateActivity(PLAYER_PAUSE);
}
});
}
// ... »ý·« ...
}
Àç»ý, ÁßÁö, ÀϽÃÁ¤Áö ÇÔ¼ö
updateActivity ÇÔ¼ö´Â ¾×ƼºñƼÀÇ Àç»ý »óŸ¦ º¯°æÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.
¸Å°³º¯¼öÀÎ mediaPlayerStatus´Â ¹öÆ°À» ´©¸§À¸·Î½á »õ·Î ¼³Á¤µÉ »óŸ¦ ÀǹÌÇÕ´Ï´Ù. ¸Å°³º¯¼ö·Î ¹ÞÀº mediaPlayerStatus¿Í ¾×ƼºñƼÀÇ ÇöÀç Àç»ý »óÅÂÀÎ this.mediaPlayerStatus¸¦ ºñ±³ÇÏ¿© Àç»ý °ü·Ã ÀÛµ¿À» Á¦¾îÇÒ °ÍÀÔ´Ï´Ù.
// this.mediaPlayerStatus = ¾×ƼºñƼÀÇ ÇöÀç Àç»ý »óÅÂ
private void updateActivity(int mediaPlayerStatus)
{
if (this.mediaPlayer == null)
{
AssetManager assetManager = null;
AssetFileDescriptor assetFileDescriptor = null;
try
{
// asset¿¡ ÀÖ´Â wav ÆÄÀÏÀ» Àç»ýÇϵµ·Ï ¼³Á¤
this.mediaPlayer = new MediaPlayer();
assetManager = this.getAssets();
assetFileDescriptor = assetManager.openFd("test.wav");
this.mediaPlayer.setDataSource(assetFileDescriptor.getFileDescriptor(), assetFileDescriptor.getStartOffset(), assetFileDescriptor.getLength());
assetFileDescriptor.close();
this.mediaPlayer.prepare();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// »õ·Î ¼³Á¤ÇÒ Àç»ý »óÅÂ
switch (mediaPlayerStatus)
{
case PLAYER_PLAY:
// ¾×ƼºñƼÀÇ ÇöÀç »óÅÂ¿Í »õ·Î ¼³Á¤ÇÒ »óŸ¦ ºñ±³
switch (this.mediaPlayerStatus)
{
case PLAYER_PLAY: // ÀÌ¹Ì Àç»ýÁßÀε¥ ¶Ç Àç»ýÀ» ´©¸¥ °æ¿ì ¾Æ¹« ÀÛ¾÷ ¾È ÇÔ
break;
case PLAYER_STOP: // Á¤Áö¿´´Ù°¡ Àç»ýÀ» ´©¸¥ °æ¿ì óÀ½ºÎÅÍ Àç»ý (MediaPlayer »ý¸íÁÖ±â ÂüÁ¶)
try
{
this.mediaPlayer.prepare();
this.mediaPlayer.seekTo(0);
}
catch (IllegalStateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
this.mediaPlayer.start();
break;
case PLAYER_PAUSE: // ÀϽÃÁ¤Áö¿´´Âµ¥ Àç»ýÀ» ´©¸¥ °æ¿ì ÀÌ¾î¼ Àç»ý
this.mediaPlayer.start();
break;
case PLAYER_INIT: // ¸Ç óÀ½»óÅ¿¡¼ Àç»ýÀ» ´©¸¥ °æ¿ì ¸¶Âù°¡Áö·Î Àç»ý
this.mediaPlayer.start();
break;
}
break;
case PLAYER_STOP:
switch (this.mediaPlayerStatus)
{
case PLAYER_PLAY: // Àç»ý ÁßÀ̾ú´Âµ¥ Á¤Áö¸¦ ´©¸¥ °æ¿ì
this.mediaPlayer.stop();
break;
case PLAYER_STOP: // Á¤Áö »óÅ¿¡¼ ¶Ç Á¤Áö ´©¸¥ °æ¿ì
break;
case PLAYER_PAUSE: // ÀϽÃÁ¤Áö »óÅ¿¡¼ Á¤Áö ´©¸¥ °æ¿ì
this.mediaPlayer.stop();
break;
case PLAYER_INIT: // ¸Ç óÀ½ »óÅ¿¡¼ Á¤Áö¸¦ ´©¸¥ °æ¿ì
break;
}
break;
case PLAYER_PAUSE:
switch (this.mediaPlayerStatus)
{
case PLAYER_PLAY: // Àç»ý ÁßÀ̾ú´Âµ¥ ÀϽÃÁ¤Áö¸¦ ´©¸¥ °æ¿ì
this.mediaPlayer.pause();
break;
case PLAYER_STOP: // Á¤Áö¿´´Âµ¥ ÀϽÃÁ¤Áö¸¦ ´©¸¥ °æ¿ì
break;
case PLAYER_PAUSE: // ÀϽÃÁ¤ÁöÀε¥ ¶Ç ÀϽÃÁ¤Áö¸¦ ´©¸¥ °æ¿ì
break;
case PLAYER_INIT: // ¸Ç óÀ½»óÅ¿¡¼ ÀϽÃÁ¤Áö¸¦ ´©¸¥ °æ¿ì
break;
}
break;
}
this.mediaPlayerStatus = mediaPlayerStatus; // ÀÌ ¾×ƼºñƼÀÇ Àç»ý »óŸ¦ »õ·Î ¹ÞÀº »óÅ·Πº¯°æ
}
̵̧ : 336
̵̧
¸ñ·Ï