raw 데이터는 가공되지 않은 원천 데이터를 의미한다.
사운드나 동영상, 사진 등을 데이터의 용량을 줄이기 위해 압축을 하게 되는데 이러한 가공을 거치지 않은 순수 데이터 들을 raw 데이터라고 부른다.
안드로이드에서는 각종 데이터 파일이나 동영상, 사운드 등의 데이터를 사용할 때 주로 사용한다.
동영상이나 사운드는 raw 폴더에 넣고 작업하는 경우가 많고 그 외의 파일(데이터, 폰트)은 assets폴더에 넣어두고 작업을 많이 한다.
-> 각각의 폴더별로 관리하기 위함
장점 : Stream을 추출하는게 쉽다
단점 : 하위 폴더를 만들 수 없다.
실행 중 다운받거나 생성된 데이터 파일은 내부 저장소나 외부저장소에 저장해 두었다가 필요할 때 읽어오면 된다.
만약 데이터가 저장된 파일을 애플리케이션 내부에 포함 시키겠다면 raw 폴더에 저장하면 된다.
raw 폴더에 저장된 파일은 스트림을 손쉽게 추출할 수 있다.
raw 폴더에 들어 있는 사운드 파일 재생은 매우 쉽다.
button2.setOnClickListener{
if(mediaPlayer == null){
// 사운드 재생 관리 객체를 생성한다.
// 음원재생을 activity에서 하면 activity가 종료하면 사운드가 꺼지기 때문에
// 서비스에서 가동시키도록 한다.
mediaPlayer = MediaPlayer.create(this@MainActivity, R.raw.song)
mediaPlayer?.start()
}
}
button3.setOnClickListener{
if(mediaPlayer != null){
mediaPlayer?.stop()
mediaPlayer = null
}
}
동영상 재생을 위해서는 VideoView라는 View를 사용한다.
VideoView는 재생할 영상이 있는 파일의 경로를 직접 설정해줘야 한다.
button4.setOnClickListener{
// VideoView가 재생중이 아니라면
if(videoView.isPlaying == false){
// 영상 파일의 경로를 가져온다.
val uri = Uri.parse("android.resource://${packageName}/raw/video")
// 영상 주소를 설정한다.
videoView.setVideoURI(uri)
// 재생한다.
videoView.start()
}
}
button5.setOnClickListener{
if(videoView.isPlaying == true){
// 영상 재생을 중지한다.
videoView.stopPlayback()
}
}