- 요약 -
1. MediaPlayer의 start(), pause(), stop() 메소드는 각각 음악을 시작, 일시 정지, 정지하는 기능을 한다.
2. 리소스 파일이 저장되는 주요 폴더의 위치는 다음과 같다.
리소스 | 폴더 | 저장 파일 |
그림 파일 | /res/drawble | *.png, *.jpg, *.xml |
메뉴 파일 | /res/menu | *.xml |
raw 파일(음악, 동영상, 텍스트 파일) | /res/raw | *.mp3, *.mp4, *.txt |
레이아웃 파일 | /res/layout | *.xml |
문자열(String) | /res/values | string.xml |
문자 배열(String Array) | /res/values | array.xml |
색상 값 | /res/values | color.xml |
스타일 | /res/values | style.xml |
테마 | /res/values | themes.xml |
3. 프로그레스바는 작업의 진행 상태를 확인할 떄, 시크바는 음악이나 동영상 재생의 위치를 지정할 때 많이 활용된다.
4. 스레드는 여러 작업을 동시에 수행하기 위해 사용하는 개념으로, 멀티스레드라고도 부른다.
5. UI 스레드는 화면의 위젯을 변경할 때 사용한다. 일반적인 스레드는 스레드 안에서 필요한 내용을 계산하는 것만 가능하며 화면의 다른 위젯을 변경할 수 없다.
6. 구글 지도(구글 맵)는 구글에서 오픈 API로 제공하는 전자 지도이다.
7. 구글 지도를 안드로이드 앱에 포함하려면 개발에 사용할 PC별로 구글에서 제공하는 API 키를 얻어야 한다.
8. 프래그먼트는 구글 지도 서비스에서 받은 지도를 화면에 출력하는 기능을 한다. 기본적으로 확대, 축소, 이동 기능도 제공한다.
9. 화면을 클릭하여 그림 등의 추가 내용을 지도에 표시하려면 그라운드 오버레이를 활용한다. 그라운드 오버레이는 지도(GoogleMap 클래스)위에 투명한 유리막을 얹어놓은 개념이라고 생각하면 된다.
- 연습문제 -
1. 멀티미디어 작동을 위한 클래스는 MediaPlayer이며, 오디오를 시작, 일시 정지, 정지하는 ( 1 ), ( 2 ), ( 3 ) 메소드를 사용한다.
답 : start(), pause(), stop()
2. 다음 리소스 파일이 저장되는 프로젝트 내의 폴더를 쓰시오.
리소스 | 폴더 | 저장 파일 |
그림 파일 | /res/drawble | *.xml, *.png, *.jpg |
메뉴 파일 | /res/menu | *.xml |
raw 파일(음악, 동영상, 텍스트 파일) | /res/raw | *.mp3, *.mp4, *.txt |
레이아웃 파일 | /res/layout | *.xml |
문자열(String) | /res/values | string.xml |
문자 배열(String Array) | /res/values | array.xml |
색상 값 | /res/values | color.xml |
스타일 | /res/values | style.xml |
테마 | /res/values | themes.xml |
3. 진행 상태를 나타내는 위젯으로는 프로그레스바, 시크바, 레이팅바가 있다. 이것들의 상속 관계는 어떠한가?
java.lang.Object
android.view.View
android.widget.ProgressBar
android.widget.AbsSeekBar
android.widget.RatingBar
android.widget.SeekBar
4. 다음 스레드를 작동하는 코드의 빈칸을 채우시오.
var myThread = object : Thread() {
( 1 ) {
// 이곳에 작업 코딩
}
}
( 2 )
답 :
( 1 ) -> override fun run()
( 2 ) -> myThread.start()
5. 구글 지도에서 다음 맵뷰 XML 코드의 빈칸을 채우시오.
< ( 1 )
android:layout_width="fill_parent"
android:layout_height="fill_parent"
( 2 )="이 부분이 생성된 Maps API Key" />
답 :
( 1 ) -> com.google.android.gms.maps.MapView
( 2 ) -> ??
6. [직접 풀어보기 13-1]을 프로그레스바와 진행 시간이 보이도록 수정하시오. 단, Handler 객체를 사용한다.
▶ 핸들러 객체 생성
var mp3Handler : Handler = object : Handler() {
var timeFormat = SimpleDateFormat("mm:ss")
// sendEmptyMessage() 메소드를 호출하면 아래 메소드가 자동 실행됨
// 여기서 파라미터 msg는 사용하지 않음
override fun handleMessage(msg: Message) {
// 변경할 내용을 이곳에 코딩
// 핸들러가 0.2초마다 진행하게 함
this.sendEmptyMessageDelayed(0, 200)
}
}
▶ 핸들러 호출
mp3Handler.sendEmptyMessage(0)
[activity_main.xml]
[MainActivity.kt]
(★ 핸들러 사용 시 1번과 2번의 코드 내용이 별 차이가 없습니다 :) 호출이나 객체 생성의 차이가 있을 뿐 스레드(2)에서 음악이 재생되는 상태를 체크하여 runOnUiThread()를 호출하여 프로그레스바와 진행 시간이 보이도록 수정했던 코드를 그대로 핸들러(1)에서 handleMessage()메소드에 작성하면 됩니다. :))
7. [실습 13-3]을 수정하여 그림과 같이 옵션 메뉴에 '바로전 CCTV 지우기'와 '모든 CCTV 지우기'를 추가한 프로젝트를 작성하시오. '바로전 CCTV 지우기'를 선택할 때마다 마지막 CCTV부터 추가된 순서의 반대로 제거되게 한다.
[MainActivity.kt]
(★ ArrayList<LatLng> 위도, 경도 타입을 저장할 어레이 리스트를 선언합니다)
(★ 지도를 클릭해서 마크를 생성 할 때마다 해당 위치의 좌표값을 어레이리스트에 저장합니다.)
(★ 1. '바로전 CCTV 지우기' 버튼 클릭 시 최근에 저장한 마크의 위치좌표값을 지우고 2. 모든 마크를 지운 후에
반복문을 통해 마크를 다시 그립니다. 3. '모든 CCTV 지우기' 버튼 클릭 시 마크를 모두 지우고 배열을 초기화해줍니다. :))
이상 마치겠습니다 :)
'책 요약하기 > 코틀린을 활용한 안드로이드 프로그래밍' 카테고리의 다른 글
#14. 서비스와 브로드캐스트 리시버 2021-02-06 (0) | 2021.02.26 |
---|---|
#12. 데이터 저장과 관리 2021-02-21 (2) | 2021.02.21 |
#11. 어댑터뷰 2021-02-18 (0) | 2021.02.18 |
#10. 액티비티와 인텐트 2021-02-17 (0) | 2021.02.17 |
#9. 그래픽과 이미지 2021-02-14 (0) | 2021.02.14 |