반응형
|
안드로이드(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 |

