반응형
오디오 재생하기
@어플리케이션에서 백그라운드에서 노래나 멜로디가 나오게 도와주는 클래스 MediaPlayer
방법은 3가지가 있다
1) 웹상에 위치를 지정하기
변수에 미디어가 있는 웹 경로를 지정하여 하는방법
2)프로젝트 파일에 포함한 후 위치 지정 (어플리케이션 무게가 커지긴 하는데 어쩔수 없다 )
에셋(assets) 폴더에 넣은후 위치를 지정
3) 단말 SD카드에 넣은후 위치 지정
단말에 넣어 둔 SD카드에 파일을 넣은 후 그 위치를 지정
음악파일의 재생과정은 다음과 같다 .
실 코딩 화면
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
//웹상의 경로 지정 하여 할때 이렇게 경로를 지정 해준다
static final String AUDIO_URL = "https://sites.google.com/site/ubiaccessmobile/sample_audio.amr";
Button btn_Start, btn_Pause, btn_Restart;
MediaPlayer mediaPlayer;
int position;
String filePath;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//위험 권한은 인터넷에서 가져올땐 필요가 없다 하지만 sd 카드 접근할땐 필요함 매니패스트도 추가해줘야 한다.
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE}, 0);
btn_Start = findViewById(R.id.button);
btn_Pause = findViewById(R.id.button2);
btn_Restart = findViewById(R.id.button3);
btn_Pause.setOnClickListener(this);
btn_Restart.setOnClickListener(this);
btn_Start.setOnClickListener(this);
//절대 경로를 가져오기 위한 기본구조는
//Environment.getExternalStorageDirectory().getAbsolutePath();
//=> 외부 스토리지 최상위 주소를 나타낸다.
//여기에서 직접 만든 폴더를 이용하고 싶으면 뒤에다가 /폴더명을 추가 하면 된다
filePath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/Download/sleep.mp3";
}
@Override
public void onClick(View v) {
if (v == btn_Start) {
try {
playAudio(filePath);
} catch (IOException e) {
e.printStackTrace();
}
} else if (v == btn_Pause) {
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
//mediaPlayer.getCurrentPosition()
//현재 플레이중인 미디어에 진행 상황을 int 값으로 얻어오는 메소드이다.
//seekTo에서 다시 실행시키기 위하여 받아옴
position = mediaPlayer.getCurrentPosition();
//미디어 플레이어 정지
mediaPlayer.pause();
}
} else if (v == btn_Restart) {
if (mediaPlayer != null &&! mediaPlayer.isPlaying()) {
//mediaPlayer.seekTo(여기 값으로 이동함);
//
mediaPlayer.seekTo(position);
mediaPlayer.start();
}
}
}
// 인테넷에서 받아와서 사용할때와 절대 경로로 찾아 가기
private void playAudio(String filePath) throws IOException {
killplayer();
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(filePath);
//mediaPlayer.prepare(); 준비 하기
mediaPlayer.prepare();
//mediaPlayer.start(); 시작
mediaPlayer.start();
}
// 파일 저장해서 했음 raw 폴더에 있는 파일 가져다 쓰기
// private void playAudio() throws IOException {
// killplayer();
// mediaPlayer = MediaPlayer.create(this,R.raw.sleep);
// mediaPlayer.start();
// }
private void killplayer() {
if (mediaPlayer != null) {
//mediaPlayer.release(); 해제하기
mediaPlayer.release();
}
}
}
동영상 재생하기
@VideoView 와 MediaController 빼면 오디오와 비슷하다 .
public class MainActivity extends AppCompatActivity {
//인터넷 상의 경로 지정
static final String VIDEO_URL = "http://sites.google.com/site/ubiaccessmobile/sample_video.mp4";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE}, 0);
Button btnStart = findViewById(R.id.button);
Button btnvol = findViewById(R.id.button2);
VideoView videoView = findViewById(R.id.videoView);
//sd카드 파일 경로 얻어오기
String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Download/mv.mp4";
MediaController mc = new MediaController(this);
//videoView에 미디어 컨트롤러 설정
videoView.setMediaController(mc);
//url 으로 지정하여 하는법
//videoView.setVideoURI(Uri.parse(VIDEO_URL));
//videoView 객체에 재생할 동영상 url 설정
videoView.setVideoPath(filePath);
videoView.requestFocus();
//비디오 준비 완료 되면 호출 메소드
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
Toast.makeText(MainActivity.this, "동영상준비완료 ", Toast.LENGTH_LONG).show();
}
});
//비디오
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
Toast.makeText(MainActivity.this, "동영상재생완료 ", Toast.LENGTH_LONG).show();
}
});
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
videoView.seekTo(0);
videoView.start();
}
});
btnvol.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AudioManager manager = (AudioManager) getSystemService(AUDIO_SERVICE);
int max = manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
manager.setStreamVolume(AudioManager.STREAM_MUSIC, max, AudioManager.FLAG_SHOW_UI);
}
});
}
}
반응형
'아옳옳의 코딩공부 > 아옳옳의 안드로이드스튜디오' 카테고리의 다른 글
2021-06-14안드로이드 스튜디오 (구글맵 사용 하기 ) (0) | 2021.06.14 |
---|---|
2021-06-14안드로이드 스튜디오 (멀티미디어 오디오녹음 저장) (0) | 2021.06.14 |
2021-06-06안드로이드 스튜디오 (파이어베이스 연동) (0) | 2021.06.07 |
2021-06-06안드로이드 스튜디오 (SQLite 사용하기 2) (0) | 2021.06.07 |
2021-06-03안드로이드 스튜디오 (SQLite 사용하기) (0) | 2021.06.03 |