본문 바로가기

책 요약하기/코틀린을 활용한 안드로이드 프로그래밍

#14. 서비스와 브로드캐스트 리시버 2021-02-06

- 요약 -

1. 서비스 생명주기의 동작 순서는 onCreate() - onStartCommand() - onDestroy()입니다.

2. 서비스를 시작하기 위한 메소드는 startService()이고, 중지하기 위한 메소드는 stopService()입니다.

3. 서비스는 AndroidManifest.xml에 등록해야 사용할 수 있다. 등록 형식은 다음과 같습니다.

<services android:name="MusicService">
	<intent-filter>
    	<action android:name="com.hellow.MusicService"/>
	</intent-filter>
</service>

4. 브로드캐스트 리시버는 활용하면 안드로이드에서 발생하는 많은 이벤트(문자 메시지, 배터리 방전, 날짜 변경 등)를 감지하고 이를 처리하는 앱을 작성할 수 있습니다.

5. 브로드캐스트 리시버의 배터리 상태 관련 주요 액션은 다음과 같습니다.

액션 설명
ACTION_BATTERY_CHANGED 배터리 상태가 변경될 때
ACTION_BATTERY_LOW 배터리가 거의 방전되었을 떄
ACTION_BATTERY_OKAY 배터리가 방전 상태에서 정상 수준으로 돌아왔을 떄

6. 인텐트의 엑스트라는 BatteryManager 클래스에 상수로 정의되어 있다. 대표적으로 잔량을 표시하는 EXTRA_LEVEL, 배터리 존재 여부를 표시하는 EXTRA_PRESENT, 외부 전원 연결 상태를 표시하는 EXTRA_PLUGGED, 배터리 상태를 표시하는 EXTRA_STATUS 등이 있습니다.

7. 텔넷의 배터리 관련 명령은 다음과 같습니다.

명령 설명
power display 배터리 상태 출력
power ac [on/off] 전원 연결 및 해제 설정
power status [charging/discharging/full 등] 배터리 상태 변경 설정
power present [true/false] 배터리 장착 및 탈착 설정
power health [good/overheat/dead 등] 배터리 성능 상태 설정

 

- 연습문제 -

1. 안드로이드의 주요 4대 컴포넌트는 무엇인가?

답 : 액티비티(Activity), 서비스(Service), 브로드캐스트 리시버(Broadcast Receiver), 콘텐트 프로바이더(Content Provider)

 

2. 서비스 생명주기와 관련된 메소드를 차례대로 나열하시오.

답 : onCreate() -> onStartCommand() -> onDestroy()

 

3. 배터리와 관련된 다섯 가지 액션에 대해 설명하시오.

액션 내용
ACTION_BATTERY_CHANGED 배터리 상태가 변경될 때
ACTION_BATTERY_LOW 배터리가 거의 방전될 때
ACTION_BATTERY_OKAY 배터리가 방전 상태에서 정상 수준으로 돌아왔을 때
ACTION_POWER_CONNECTED 외부 전원이 장치와 연결되었을 때
ACTION_POWER_DISCONNECTED 외부 전원이 장치와 연길이 끊겼을 때

 

4. [실습 14-1]을 수정하여 <음악서비스 시작>을 클릭하면 /sdcard/의 MP3 파일이 모두 재생되게 하시오. 또한 MP3가 모두 재생되면 처음부터 다시 반복되게 하시오.

 

[MainActivity.kt]

(★ onCreate()메소드 안에 해당 퍼미션만 추가해 주세요~)

 

[MusicServices.kt]

(★ Device File Explorer /sdcard에 음악파일을 넣습니다. 1. 음악파일 목록 arrayList와 현재 재생중인 변수, 순차적으로 재생 할 인덱스(플레이 넘버 변수) 변수 파일 경로 변수를 선언 및 정의합니다. 2. mp3List를 생성하고 listFiles()메소드로 sdCard의 파일목록을 저장합니다. 반복문을 통해 확장자가 .mp3인 변수들만 필터하여 mp3List에 추가합니다.)

(★ setOnCompletionListener()메소드의 onCompletion()메소드는 해당 재생중인 미디어가 끝날때마다 호출합니다. 그에따라 mp3List.size(여기선 3개의 재생 파일)로 현재 재생중인 파일 넘버를 검사하여 재생 및 중지합니다.)

 

[AndroidManifest.xml]

(★ Manifest.xml파일 안에도 해당 퍼미션만 추가해 주세요~)

 

이상 마치겠습니다 :)