반응형
Raw 데이터
- 가공되지 않은 원천(순수) 데이터 <-> 사운드,동영상, 사진 등의 데이터를 줄이기 위해 압축한 데이터이므로 가공된 데이터
- 하지만 안드로이드에서는 몇가지 XML 파일과, 이미지를 제외한 모든 데이터를 raw 데이터(각종 데이터 파일이나 동영상, 사운드)라고 정의
- xml, 이미지 파일은 res 폴더에 넣고 바로 사용, raw 데이터는 raw 폴더에 넣어 처리를 해서 사용
- 앱 내부에 포함되어 있기 때문에 읽기만 가능 (내부에 있어도 내부 저장소랑은 다른 곳에 있음) -> 넣고 싶으면 raw 폴더에 저장하면 됨
- 스트림을 통해 쉽게 추출
- raw 폴더 안에 들어가는 파일은 무조건 소문자, 숫자로만 구성되어 있어야 함
텍스트 파일 출력하기
binding.button.setOnClickListener {
// 스트림 : 앱과 외부의 파일, 네트워크, 블투 장비등 외부의 요소들과 데이터를 주고 받기 위해 사용하는 객체
// 흔히 스트림을 수도꼭지에 비유하는 것 같은데 외부의 water가 울 집으로 들어오는 경로이므로 나름 괜춘한 비유일지도ㅎ
// 스트림 추출
val inputStream = resources.openRawResource(R.raw.data1) // resources 객체가 res 폴더의 파일들 관리
// data1 파일을 열고 그 파일과 연결되어 있는 스트림 반환
// 데이터의 종류나 양식에 따라 처리 달라질 수 있음
val isr = InputStreamReader(inputStream, "UTF-8") //파일로부터 읽어온 문자열을 utf-8 형식으로 디코딩해 원본 글자로 변환
val br = BufferedReader(isr) // 라인 단위로 읽어옴
var str:String? = null
val sb = StringBuffer()
do {
str = br.readLine()
if (str != null) {
sb.append("${str}\n")
}
}while (str != null)
br.close() //leaking 보안 문제였나....권한상승 문제 발생했던 것 같음...
//isr.close()
//br.close()
binding.textView.text = sb.toString()
}
사운드 파일 재생하기
- 제공하고 있는 MediaPlayer 클래스를 이용해 쉽게 재생
binding.button2.setOnClickListener {
if (mp == null) {
mp = MediaPlayer.create(this, R.raw.song) //파일 없으면 null일 수 있음
mp?.start()
}
}
binding.button3.setOnClickListener {
if (mp != null) {
mp?.stop()
mp = null
}
}
* 사운드가 들리지 않는다....오류는 나지 않고, 혹시 몰라서 mp3/mp4 확장자 모두 해봤는데 소리가 안 난다.... (애뮬레이터만의 문제일 수 있어서 나중에 실제 단말기 연결도 해봐야겠다. 가뜩이나 노잼인 스트림 파일입출력~ 안 되니까 해결하기 드럽게 실타...ㅎ)
동영상 파일 재생하기
- VideoView 라는 View를 사용해야 함
- VideoView는 재생할 영상이 있는 파일의 경로를 직접 설정해야 함 -> 서버의 경로를 넣으면 영상이 스트리밍 되는 것!
// 영상 재생하기
binding.button4.setOnClickListener {
if (binding.videoView.isPlaying == false) {
// 영상 파일의 경로
val uri = Uri.parse("android.resource://${packageName}/raw/video")
binding.videoView.setVideoURI(uri)
binding.videoView.start()
}
}
// 영상 정지하기
binding.button5.setOnClickListener {
if (binding.videoView.isPlaying == true) {
binding.videoView.stopPlayback()
}
}
* 파일 열기나 스트림 등에 대한 지식이 너무 부족한 것 같다....1학년때 자바 시간에 조금 들었었는데 기본도 없는 상태에서 그렇게 좋은 수업을 듣지도 못했던 슬푼 과거,,,,, 그래서 따로 좀 공부하고 정리해보도록 하자!!
반응형
'Android' 카테고리의 다른 글
[안드로이드/Oauth/Error] Google Oauth2.0 파이어베이스 없이 사용하기 & ApiException 10 에러 해결 (2) | 2023.05.13 |
---|---|
[안드로이드/데이터입출력] assets (0) | 2023.04.29 |
[안드로이드/데이터 관리] 파일 입출력 (4) | 2023.04.29 |
[안드로이드/데이터 관리] Application Class (0) | 2023.04.29 |
[안드로이드/데이터입출력] 코드를 이용해 View 객체 생성 (0) | 2023.04.29 |