Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드(Android) Sdcard 미디어 파일 읽어 MP3 실행하기

안드로이드 개발

안드로이드(Android) Sdcard 미디어 파일 읽어 MP3 실행하기

 

환경 : window 7 64bit, Eclipse Mars, Android 4.2.2

 

이전에는 raw폴더에 있는 미디어 파일을 실행했는데 이번 예제는 Sdcard 에 저장된 MP3 음악파일을 실행해 볼 것입니다. 이 예제는 MP3 플레이어나 음원을 활용하고자 할 때 응용할 수 있는 샘플입니다.

 

 

이전 아티클 안드로이드(Android) MediaPlayer 이용해 raw 폴더의 MP3 듣기 와 내용은 동일하며 MediaPlayer 객체생성시 셋팅하는 부분이 조금 변경되었습니다. 이전에는 리소스에 저장된 데이터를 가지고 MediaPlayer 객체를 만들 때 create() 함수를 사용했는데 Sdcard 에서 데이터를 읽어오기 위해서는 setDataSource() 함수를 사용하였습니다.인수로 파일이 있는 위치를 넘기게 됩니다.

 

String PATH_TO_FILE = Environment.getExternalStorageDirectory() 
		+ "/Download/media.mp3";

mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(PATH_TO_FILE);
mediaPlayer.prepare();

 

변경된 부분은 MediaPlayer 셋팅하는 부분 뿐이므로 다른 것들에 대해서는 이전 아티클을 참고 하시기 바랍니다. 아래는 메인 activity 의 전체 소스입니다.

 

import java.io.IOException;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MediaPlaySdcardActivity extends Activity {

	private MediaPlayer mediaPlayer;
	private Button btnPause, btnQuit;
	private TextView txtState;

	private int stateMediaPlayer;
	private final int STATE_NOTSTARTER = 0;
	private final int STATE_PLAYING = 1;
	private final int STATE_PAUSING = 2;
	private final int STATEMP_ERROR = 3;


	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_media_play);

		btnPause = (Button) findViewById(R.id.playpause);
		btnQuit = (Button) findViewById(R.id.quit);
		txtState = (TextView) findViewById(R.id.state);

		btnPause.setOnClickListener(buttonPlayPauseOnClickListener);
		btnQuit.setOnClickListener(buttonQuitOnClickListener);

		initMediaPlayer();
	}

	private void initMediaPlayer() {
		String PATH_TO_FILE = Environment.getExternalStorageDirectory() 
				+ "/Download/media.mp3";
		
		mediaPlayer = new MediaPlayer();
		try {
			mediaPlayer.setDataSource(PATH_TO_FILE);
			mediaPlayer.prepare();
			Toast.makeText(this, PATH_TO_FILE, Toast.LENGTH_LONG).show();
			stateMediaPlayer = STATE_NOTSTARTER;
			txtState.setText("- IDLE -");
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
			Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
			stateMediaPlayer = STATEMP_ERROR;
			txtState.setText("- 에러!!! -");
		} catch (IllegalStateException e) {
			e.printStackTrace();
			Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
			stateMediaPlayer = STATEMP_ERROR;
			txtState.setText("- 에러!!! -");
		} catch (IOException e) {
			e.printStackTrace();
			Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
			stateMediaPlayer = STATEMP_ERROR;
			txtState.setText("- 에러!!! -");
		}
	}

	Button.OnClickListener buttonPlayPauseOnClickListener = new Button.OnClickListener() {

		public void onClick(View v) {
			switch (stateMediaPlayer) {
			case STATE_NOTSTARTER:
				mediaPlayer.start();
				btnPause.setText("Pause");
				txtState.setText("- 실행 -");
				stateMediaPlayer = STATE_PLAYING;
				break;
			case STATE_PLAYING:
				mediaPlayer.pause();
				btnPause.setText("Play");
				txtState.setText("- 일시중지 -");
				stateMediaPlayer = STATE_PAUSING;
				break;
			case STATE_PAUSING:
				mediaPlayer.start();
				btnPause.setText("Pause");
				txtState.setText("- 실행중 -");
				stateMediaPlayer = STATE_PLAYING;
				break;
			}
		}
	};

	Button.OnClickListener buttonQuitOnClickListener = new Button.OnClickListener() {

		public void onClick(View v) {
			mediaPlayer.stop();
			mediaPlayer.release();
			finish();
		}
	};
}

 

 

안드로이드(Android) Sdcard 미디어 파일 읽어 MP3 실행하기

 

Posted by 녹두장군

댓글을 달아 주세요