안드로이드 서비스.

Slides:



Advertisements
Similar presentations
All Rights Reserved, Copyright© UBIVELOX co.,Ltd LG U+ 과금 API 소개 Version1.0 Authorubivelox Date21-Feb
Advertisements

IT CookBook, Android Studio 를 활용한 안드로이드 프로그래밍 Copyright© 2015 Hanbit Academy, Inc. All rights reserved. 14. 서비스와 브로드캐스트 리시버.
Information Security 경기대학교 김희열. Cloud Computing Security 보안 관련 뉴스.
Application Create Android Side. Application 설계 시 꼭 지켜야 할 5 가지 UI 쓰레드는 UI 만 처리하게 하자 사용자를 방해하지 말라. 다양한 화면 해상도를 지원하라 –Absolutelayout 을 사용하지 말아라 ( 고정값 )
10장. 시기별 학급경영 11조 염지수 이 슬 권용민 신해식.
일본 근세사. (1) 에도막부의 개창 ( ㄱ ) 세키가하라의 전투 (1600) - 히데요시의 사후 다섯 명의 다이로 ( 大老 ) 가운데 최대 영지 (250 만석 ) 를 보유하고 있던 도쿠가와 이에야스가 급부상. 이에 이에야스와 반목해 온 이시다 미쓰나리 ( 石田三成 ),
모바일 화면설계서 Planning By livad l Ver 1.0 Update VersionDateContentsWrite Version History 1.
아니마 / 아니무스 송문주 조아라. 아니마 아니마란 ? 남성의 마음속에 있는 여성적 심리 경향이 인격화 한 것. 막연한 느낌이나 기분, 예견적인 육감, 비합리적인 것에 대 한 감수성, 개인적인 사랑의 능력, 자연에 대한 감정, 그리.
대구가톨릭대학교 체육교육과 06 학번 영안중학교 체육교사 신웅섭 반갑습니다. 반야월초등학교 축구부 대륜중학교 축구부 대륜고등학교 대구가톨릭대학교 차석 입학 대구가톨릭대학교 수석 졸업 2014 년 경북중등임용 체육 차석 합격 영안중학교 체육교사 근무 소개.
일장 - 1 일 24 시간 중의 명기 ( 낮 ) 의 길이 ( 밤은 암기, 낮은 명기 ) 광주기성 - 하루 중 낮의 길이의 장단에 따라 식물의 꽃눈 형성이 달라지는 현상 일장이 식물의 개화현상을 조절하는 중요한 요인 단일식물 - 단일조건에서 개화가 촉진되는 식물 장일식물.
2 학년 6 반 1 조 고은수 구성현 권오제 김강서.  해당 언어에 본디부터 있던 말이나 그것에 기초하여 새로 만들어진 말  어떤 고장 고유의 독특한 말  Ex) 아버지, 어머니, 하늘, 땅.
Data : 조원 : 손정일 김태양 Unlocking android chapter.4 Intent&Service.
Unlocking Android 인텐트 (Intent) 2 Unlocking Android 인텐트 클래스 활용 3.
2014년도 교원 및 기간제교사 성과상여금 전달교육 개 회 국기에 대한 경례 - 인사말
SQLite 소개 및 안드로이드에서의 사용법
1.IOT ? 2.IOT 관련이미지 3. 현재진행중(ex:) 4.iot에대한 개인소견?
선진 고양교육 “유아교육 행정 업무 연수” 유치원 회계실무 및 유아학비 연수 경기도고양교육청.
묵자 겸애, 비명, 비공, 상현, 상동, 천지, 명귀, 삼표 법.
CHAP 10. 액티비티와 인텐트.
ThingPlug_SDK_Android
[별첨2] 참고자료 에너지관리공단 홍보교육실.
내 아이를 위한 구강관리.
CHAP 7. 메뉴와 대화상자.
제16장 원무통계 • 분석 ☞ 통계란 특정의 사실을 일정한 기준에 의하여 숫자로 표시한 것을 말한다.통계로서 활용할 수 있는 조건으로는 ① 동질성을 지녀야 하고 ② 기준이 명확하고 ③ 계속성이 지속되어야 하며 ④ 숫자로 표시하여야 한다 경영실적의.
공부하는 학생선수를 위한 사이버 학습 "다높이" 활용 방법
제4강 노티피케이션,메뉴,고급위젯 안드로이드 앱 개발 강좌.
다이얼로그 박스와 컨트롤 컴퓨터 계측 및 실습.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
서울지방세무사회 부가세 교육 사진클릭-자료 다운 세무사 김재우.
사외내방객 사이트매뉴얼.
(수) 실시 제7회 전국동시지방선거 정당 및 예비후보자를 위한 선거사무안내.
PUzzleAlarm 컴퓨터 응용과학부 최범모.
Application Framework 어플리케이션 프레임워크 발표자 : 김 준 섭
치매의 예방 김 은민 윤금 노인요양원 치매의.
발표 날짜 팀명 I조 (회사 : 코나아이) 팀원 이름 김택현, 김효중, 김휘연
솔루션 절감율 산출 방법.
ATmega 128 MCU를 이용한 MP3 보드 제작 김태호 김소정.
어댑터뷰 리스트 뷰, 그리드 뷰, 스피너, 갤러리 등을 묶어 어댑터 뷰라 부름
Intent.
ActiveX 개발 KnowHow (C++ Builder 6.0)
CHAP 7. 메뉴와 대화상자.
14. 서비스와 브로드캐스트 리시버 제목. 14. 서비스와 브로드캐스트 리시버 제목.
운영체제 허상복 컴퓨터시스템 연구실
새로운 물질, 나만의 스마트폰 디자인하기.
마산에 대하여 만든이 : 2204 김신우, 2202 권성헌.
강아지풍선 채색체험,야광 판매 제안서 본사:인천 부평구 원적로269번길10 Tel:(032)
제주닷컴 매뉴얼 (실시간 예약시스템) 2013년 10월.
전기, 안전하고 효율적으로 사용하기(2) 학습 주제 < 생각열기 >
2D 게임 프로그래밍 박건우.
모음(母音) 10개 양성(陽性)모음 음성(陰性)모음 중성모음 ㅏ(ㅑ) ㅓ(ㅕ) ㅗ (ㅛ) ㅜ (ㅠ) ㅣ ㅡ
Notification, Service, Alarm
11. 위치 기반 서비스 API 작성자 이 승 태 발표일
CHAP 13. 서비스와 방송 수신자.
주문완료메일 보험료 간편 조회 go > 여행 전 꼭 챙기세요! All about Travel | 여행자보험도 하나샵
이행점검/현장점검관리.
삼안 인트라넷 메뉴얼.
[ 강남구 청담동 “이동수에프엔지” ].
하나투어샵 메인 부분 리뉴얼 - 디자인 하나샵 단독 물량 확보! 필리핀 직송 골드 망고 최저가 보장! 37,900원!
6장 마케팅 조사 박소현, 김중호, 박기찬.
한밭대학교 창업경영대학원 회계정보학과 장 광 식
폴리에틸렌 다목적바지제안서 ( 주 ) 씨 앰 디.
A TYPE. 조사표 작성 요령 및 코드표 1. 조사표 작성 지침 2 2.에너지원 코드표 11 3.에너지원별 기준단가 13.
What WhY Where 과 2D 서 결 When 2차 고 보 김현수.
음양오행과 물리학 조 원 : 김용훈, 양범길, 박수진, 윤진희, 이경남, 박미옥, 박지선 (11조)
6-2. 전해질과 비전해질 구별해 보기 학습 주제 < 생각열기 >
안드로이드 앱 분석 팀 기반의 설계 프로젝트 박민재
이야기 치료에 대하여 <8조 학문적 글쓰기 발표> 주희록 최은지
운영체제보안 3번 과제 설명 팀 기반의 설계 프로젝트 박민재
중국문학개론 한부와 겅건안문학 중어중국학과 ㅇ이진원 한부와 건안문학.
11월 고등부 공과설교 업드림? 업드림! 갈라디아서 6:9-10.
Presentation transcript:

안드로이드 서비스

목차 Notification Service Alarm 실습

Notification

알림(Notification) 사용자에게 어플리케이션에서 발생한 이벤트를 알리기 위한 방법 Toast Notification 화면에 메시지가 잠깐 표시되고 자동으로 사라지는 알림 백그라운드 서비스의 알림에 적절 사용자의 인터렉션이 요구되는 알림에는 부적절 Status Bar Notification 시스템의 Status Bar에 표시되는 알림 Dialog Notification 현재 Activity에서 알림창을 생성하는 알림. Progress Bar나 사용자의 인터렉션을 요구하는 알림에 적합

Status Notification 상태 표시줄 펼쳐진 상태 표시줄 윈도우 알림 표시줄

알림 생성하기 – Notification 클래스 새로운 알림을 생성해주는 클래스 생성자 Notification(int icon, CharSequence tickerText, long when) 인수 설명 icon 상태 표시줄에 표시할 아이콘 tickerText 상태 표시줄에 아이콘이 처음 나타날 때 잠시 출력되는 문자열 when 알림의 생성 시간

알림 생성하기 - setLatestEventInfo 알림 표시줄에 나타낼 내용을 설정하는 Notification 클래스의 메소드 함수 원형 void setLatestEventInfo(Context context, CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent) 인수 설명 context 컨텍스트를 의미함. 보통 알림을 호출하는 액티비티 contentTitle 알림 표시줄의 제목 contentText 알림 표시줄에 표시할 문자열 contentIntent 알림 표시줄이 클릭될 경우 호출될 액티비티를 실행하기 위한 인텐트

알림 발생시키기 – NotificationManager 시스템이 제공하는 서비스이므로 객체를 직접 생성할 필요 없음 객체 얻기 메서드 함수 원형 설명 notify(int id, Notification notification) 알림을 발생시킨다. id는 알림을 구분하는 식별자 존재하는 알림의 id를 사용하면 알림이 update됨 cancle(int id) 주어지는 id에 해당하는 알림을 취소한다. cancleAll() 현재 발생된 모든 알림을 취소한다.

알림 예제(1/2) 코드

알림 예제(2/2)

하드웨어 알림(벨소리, 진동, LED)(1/3) 사용자가 설정해둔 기본값을 사용하는 방법 Notification.defaults Notification.DEFAULT_LIGHTS Notification.DEFAULT_SOUND Notification.DEFAULT_VIBRATE Notification.DEFAULT_ALL

하드웨어 알림(벨소리, 진동, LED)(2/3) 벨소리 지정하기 진동 설정하기 진동 기능을 사용하려면 권한이 필요 Uri Notification.sound 진동 설정하기 진동 기능을 사용하려면 권한이 필요 AndroidManifest.xml 에 다음 코드를 추가해야 함 <uses-permission android:name=“android.permission.VIBRATE”/> long[] Notification.vibrate

하드웨어 알림(벨소리, 진동, LED)(3/3) LED 설정하기 Int Notification.ledARGB LED의 색상을 지정 Int Notification.ledOnMS, Int Notification.ledOffMS LED를 켤 시간과 끌 시간을 1/1000단위로 지정 ledOnMS를 1로, ledOffMS를 0으로 설정하면 LED가 계속 켜져있게 되며, 둘 다 0으로 설 정하면 LED가 꺼짐. LED를 사용하려면 Notification.flags 속성에 다음과 같은 플래그를 설정 해야 한다. Notification.flags |= Notification.FLAG_SHOW_LIGHTS;

고급 테크닉 Notification.number 속성을 사용하면 상태 표시줄 아이콘이 나타내는 이 벤트의 개수를 표시할 수 있다. 1보다 큰 값을 설정하면 그 값이 아이콘 위에 겹쳐 표시됨 0 또는 -1을 설정하면 숫자가 없어짐 Notification.flags 속성을 통해 알림의 동작 방식을 지정할 수 있다. 플래그 설명 FLAG_AUTO_CANCLE 사용자가 아이콘을 탭하면 자동으로 알림을 취소함 FLAG_INSISTENT 취소하거나 상태표시줄을 확장하기 전까지 설정된 동작(벨소리, 진동, LED)를 계속 발생시킴 FLAG_NO_CLEAR 사용자가 지우기(clear all)를 선택할 때만 취소함 FLAG_ONGOING_EVENT 알림을 진행 중 알림으로 만듬 FLAG_SHOW_LIGHTS LED 불빛을 출력함

Service

서비스(Service) 백그라운드에서 실행되는 프로세스 화면에 보이지 않으며 UI가 없음 사용자의 입력과는 무관하게 지속적인 처리나 규칙적인 처리, 또는 이벤트 처리를 수행하는 작업의 경우에 서비스를 이용하면 좋다. Ex) MP3 Player, 파일 다운로드 사용자와 통신할 수 있는 방법이 필요 Notification

서비스 만들기(1/3) 서비스를 정의하려면 Service를 확장하는 새로운 클래스를 만들고 4개의 메서드를 재정의해야 한다. void onCreate() 서비스가 처음 생성될 때 수행되는 메서드 void onDestroy() stopService()가 호출되거나 stopSelf()가 호출되었을 때 수행되는 메서드. 보통 사용했던 자원들을 해제하는 작업을 한다. IBinder onBind(Intent intent) bindService()가 호출되었을 때 수행되는 메서드. 이 메서드에서 서비스와 액티비티 간에 연결을 설정하여 액티비티에서 서비스 안의 메서드를 호출할 수 있게 해준다. 서비스 사용을 위해서는 AndroidMenifest에 서비스를 등록하여야 한다 예 : <service android:name=".MyService" > </service>

서비스 만들기(2/3) Int onStartCommand(Intent intent, int flags, int startId) startService()가 호출되었을 때 수행되는 메서드. 여기서 실제로 처리를 수행할 백그라운드 스레드를 띄우는 작업을 한다. 리턴값을 통해 서비스의 재시작 방식을 제어할 수 있다. 정의된 상수 설명 START_STICKY 표준 방식. 서비스가 런타임에 의해 종료되면 항상 재시작되며, 재시작될 때마다 onStartCommand가 호출된다. 이때 전달되는 intent는 null이다. 지속적인 백그라운드 작업이 필요한 경우나 음악 재생 서비스 등에 적합한 방식 START_NOT_STICKY 서비스가 런타임에 의해 종료되어도 startService를 다시 호출하지 않으면 해당 서비스는 중지된다. 업데이트나 네트워크 폴링과 같이 규칙적인 처리를 다루는 서비스에 적합(중지되어도 다음 예약 시점에 다시 호출됨) START_REDELIVER_INTENT 서비스가 런타임에 의해 종료되면 startService를 다시 호출하거나, 프로세스가 stopSelf를 호출하기 전에 종료된 경우에만 재시작된다. 후자의 경우에는 onStartCommand가 호출되며, 처리가 덜된 초기 Intent가 전달됨. 서비스가 요청받은 명령을 반드시 처리완료 해야 하는 경우에 적합한 방식

서비스 만들기(3/3) Int onStartCommand(Intent intent, int flags, int startId) flags 인자를 통해 서비스가 어떻게 시작됐는지 알아낼 수 있다. 새로운 서비스를 만들고 난 뒤에는 이를 ApplicationManifest.xml 파일에 등록해야 한다. <service android:name=“.MyService” android:enabled=“true”/> flag 설명 START_FLAG_RETRY 재시작 방식이 START_STICKY이면서 서비스가 비정상적인 종료를 당한 후에 재시작되었음을 나타냄 START_FLAG_REDELIVER 재시작 방식이 START_REDELIVER_INTENT이면서 서비스가 stopSelf를 호출하기 전에 비정상적인 종료를 당한 후에 재시작되었음을 나타냄

서비스 시작, 중지하기 서비스 시작하기 서비스 중지하기 서비스 스스로 종료하기 ComponentName startService(Intent intent) 서비스 중지하기 boolean stopService(Intent intent) 서비스 스스로 종료하기 void stopSelf(int startId)

서비스의 Life Cycle onCreate() onStartCommand() onBind() onDestroy() startService() bindService() onUnBind() onReBind() Service 수행

서비스 예제(1/4) ServiceExample.java

서비스 예제(2/4) MyService.java (1/2)

서비스 예제(3/4) MyService.java (2/2)

서비스 예제(4/4)

Alarm

알람(Alarm) 미리 정해둔 시간과 간격에 따라 인텐트를 발생시키는 기능 어플리케이션과 독립적으로 동작함 어플리케이션이 종료되어도 설정된 알람은 정상적으로 수행될 뿐만 아니라 종료된 어플리케 이션의 액티비티를 열수도 있음 애플리케이션의 리소스 요구사항을 줄이는데 매우 효과적 장치가 절전상태에 있어도 활성화되어 있으며, 옵션으로 장치를 깨울 수도 있다. 장치가 재부팅되면 모든 알람은 취소된다

알람 관리하기 – AlarmManager 알람을 생성하고 취소하는 등 알람을 관리하는 알람 관리 클래스 객체 얻기 시스템이 제공하는 서비스이므로 객체를 직접 생성할 필요 없음 객체 얻기 일회성 알람을 발생시키는 메서드 set(int type, long triggerAtTime, PendingIntent operation) Alarm type의 종류 값 설명 RTC 지정된 시간에 펜딩인텐트를 발생시키지만 장치를 깨우지는 않는다 RTC_WAKEUP RTC와 같지만 장치가 절전상태인 경우 장치를 깨운다 ELAPSED_REALTIME 장치가 마지막으로 부팅된 이후로 경과된 시간을 기준으로 시간을 지정한다. 장치를 깨우지는 않는다 ELAPSED_REALTIME_WAKEUP ELAPSED_REALTIME과 같지만 장치가 절전상태인 경우 장치를 깨운다

알람 관리하기 – AlarmManager 반복 알람을 발생시키는 메서드 알람을 취소하는 메서드 setRepeating (int type, long triggerAtTime, long interval, PendingIntent operation) 정확하게 지정된 시간간격으로 알람을 발생시키지만 배터리 소모가 상당히 클 수 있다. setInexactRepeating (int type, long triggerAtTime, long interval, PendingIntent operation) 정확한 간격 대신 AlarmManager에 정의된 상수들 중 하나를 사용하여 알람을 반복한다. (배터리 효율이 좋음) INTERVAL_FIFTEEN_MINUTES, INTERVAL_HALF_HOUR, INTERVAL_HOUR, INTERVAL_HALF_DAY, INTERVAL_DAY 알람을 취소하는 메서드 cancel (PendingIntent operation)

참고 – PendingIntent 만들기 일반적인 방법(알람 1개만 발생시킬 때) 알람을 여러 개 발생시킬 때 알람을 여러 개 발생시킬 때는 알람끼리 구분할 구분자가 필요한데 그 구분자가 getBroadcast()함수의 두번째 인자이다. 인텐트에 값을 넣고 그 값이 변경될 일이 많을 때 getBraodcast()함수의 마지막 인자에 PendingIntent.FLAG_UPDATE_CURRENT 를 넣으면 변경된 intent의 extra값의 변경값 적용을 보장해준다.

알람 이벤트 리시버 등록 알람은 지정된 시간이 되면 설정된 PendingIntent를 Broadcast하 는데 이것을 수신하여 처리하기 위해 리시버를 구현해야 한다. AndroidManifest.xml에 등록 BroadcastReceiver를 확장한 리시버 클래스 구현 onReceive() 안에서 원하는 작업을 할 수 있으나 5초라는 시간제한이 존재하므 로 시간이 오래 걸리는 작업의 경우 서비스나 쓰레드(thread)를 이용 리시버는 목적에 따라 여러 개 만들 수도 있다.

참고 – 시간 설정 현재 시간 기준으로 설정하기 절대 시간으로 설정하기

알람 예제 AlarmTest.java

알람 예제 AlarmReceiver.java

알람 예제