반응형
안드로이드(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) GPS LocationListener 이용해서 도시이름 가져오기 (0) | 2015.02.12 |
---|---|
안드로이드(Android) PopupWindow 위젯을 이용해 팝업창 만들기 (5) | 2015.02.08 |
안드로이드(Android) 카메라, 갤러리 호출후 이미지 잘래내서 화면에 표시 (12) | 2015.02.05 |
안드로이드(Android) Google Map 버전2 에서 PolyLine 이용해 라인,마크 그리기 (0) | 2015.02.02 |
안드로이드(Android) MediaPlayer 이용해 raw 폴더의 MP3 듣기 (0) | 2015.01.26 |
안드로이드(Android) 행열(Matrix) 클래스의 postConcat() 함수이용해 거울이미지구현 (0) | 2015.01.25 |
안드로이드(Android) 비트맵 이미지를 다양한 방법으로 변형하는 예제 (0) | 2015.01.19 |
안드로이드(Android) 이미지다운로드해서 Sdcard 에 저장하기 (3) | 2015.01.15 |