CHAP 13. 서비스와 방송 수신자.

Slides:



Advertisements
Similar presentations
Android Application. 최신버전 안드로이드 SDK 설치 1. SDK 설치 접속.
Advertisements

All Rights Reserved, Copyright© UBIVELOX co.,Ltd LG U+ 과금 API 소개 Version1.0 Authorubivelox Date21-Feb
Application Create Android Side. Application 설계 시 꼭 지켜야 할 5 가지 UI 쓰레드는 UI 만 처리하게 하자 사용자를 방해하지 말라. 다양한 화면 해상도를 지원하라 –Absolutelayout 을 사용하지 말아라 ( 고정값 )
For Android 이재원.  페이스북 SDK 설치  2 가지 예제 & 소스  API 사용 예제 프로젝트 만들기  Graph API  참고사항 & 사이트.
삼성소프트웨어멤버십 20 th 박희근 ( A n d r o i d.
안드로이드 (Android) 발표자 : 이강민. 1. 안드로이드란 ? 구글에서 제작한 모바일 디바이스를 위한 플랫폼 ▫ 모바일 디바이스 플랫폼이란 ?  모바일 디바이스를 위한 소프트웨어 집합 ( 미들웨어, 키 어플리케이션, 운영체제 등 ) 2. 모바일 플랫폼 시장 점유율.
Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. 
Unlocking Android 안드로이드 패키지 (1/2) 2 Unlocking Android 안드로이드 패키지 (2/2) 3.
Data : 조원 : 손정일 김태양 Unlocking android chapter.4 Intent&Service.
Unlocking Android 인텐트 (Intent) 2 Unlocking Android 인텐트 클래스 활용 3.
6 메 뉴.
어서와 Java는 처음이지! 제3장선택과 반복.
CHAP 18. 멀티미디어.
CHAP 10. 액티비티와 인텐트.
CHAP 10. 액티비티와 인텐트.
액션바와 네비게이션
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
몰랑이의 햄버거 만들기大 작전 click!.
Android Application 애플리케이션 위젯.
CHAP 19. 구글맵.
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
CHAP 7. 메뉴와 대화상자.
Contents 학습목표 Canvas와 Paint 객체를 통해 화면에 원하는 도형을 그리고 속성을 변경하는 기본적인 방법에 대해 소개한다. 토스트로 메시지를 출력하는 방법과 스피커를 통해 소리를 출력하는 방법에 대해서도 알아본다. 학습내용 캔버스 그리기 객체 쉐이더 그외.
Chap05 상속 5.1 상속의 개요 5.2 멤버 변수의 상속 5.3 메소드의 상속과 오버라이딩(Overriding)
Java Seminar 6.
Programming for the java Virtual machine
Ch.07-5 xml-rpc 사용하기 김상엽.
CHAP 4. 이벤트 처리.
CHAP 6. 이벤트 처리.
Application Framework 어플리케이션 프레임워크 발표자 : 김 준 섭
실전 프로젝트 2 : 숫자야구 숫자 야구를 구현해보자.
명품 JAVA Programming.
[INA470] Java Programming Youn-Hee Han
안드로이드 개요 2005년 휴대폰 소프트웨어 개발사인 Android를 구글이 인수 2007년 11월 오픈소스로 공개
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
Intent.
자바 5.0 프로그래밍.
CHAP 11. 액티비티와 인텐트.
CHAP 7. 메뉴와 대화상자.
AOP 개념 및 Spring의 AOP 기능.
명품 Java Programming.
최용술 장 Thread 최용술
CHAP 8. 그래픽.
This, static, final 지정 예약어 자바 4대 중첩 클래스
주소록 프로그램.
CHAP 6. 이벤트 처리.
CHAP 14. 데이터베이스와 환경 설정.
CHAP 13. 네트워크.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
Chap10 다중 스레드 Section 1 : 스레드 개요 Section 2 : Thread 클래스와 스레드 생명주기
' Strategic Alliance Partner with '
CHAP 3. 첫번째 애플리케이션.
Web programming Chap 04 상속 김 정 석
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
SpringFramework 중간고사 요약 REST by SpringFramework.
Chap. 14 성능향상시키기 PS Lab. 이지연.
컴퓨터공학실습(I) 3주 인공지능연구실.
JA A V W. 04.
Spring DI 이해 및 활용.
안드로이드 서비스.
자바 5.0 프로그래밍.
JA V A W. 07 Sb.L.
제 4 장 클래스 작성 Lab 4- 2.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
C# 10장. 참조형.
6장 클래스(상속).
안드로이드 앱 분석 팀 기반의 설계 프로젝트 박민재
Java 5장. 객체지향 개념 public class SumTest {
Presentation transcript:

CHAP 13. 서비스와 방송 수신자

서비스 사용자 인터페이스 없이 백그라운드에서 실행되는 컴포넌트 배경 음악을 재생 웹 사이트에서 주기적으로 데이터를 읽는다. 사용자 인터페이스 없이 백그라운드에서 실행되는 컴포넌트 배경 음악을 재생 웹 사이트에서 주기적으로 데이터를 읽는다. 주기적으로 폰의 사용량을 계산 애플리케이션의 업데이트를 주기적으로 검사

실제 실행중인 서비스

서비스의 종류 시작 타입의 서비스(started service) 연결 타입의 서비스(bound service) 액티비티가 startService()를 호출하여서 서비스를 시작 연결 타입의 서비스(bound service) 액티비티가 bindService()를 호출하여서 서비스를 시작

음악을 연주하는 서비스 public class MusicService extends Service { private static final String TAG = "MusicService"; MediaPlayer player; public IBinder onBind(Intent intent) { return null; } public void onCreate() { Log.d(TAG, "onCreate()"); player = MediaPlayer.create(this, R.raw.old_pop); player.setLooping(false); // Set looping

리소스 준비 mp3 형식의 음악 파일을 하나 다운로드받아서 /res/raw 디렉토리에 old_pop.mp3와 같은 이름으 로 저장한다.

음악을 연주하는 서비스 public void onDestroy() { Toast.makeText(this, "Music Service가 중지되었습니다.", Toast.LENGTH_LONG).show(); Log.d(TAG, "onDestroy()"); player.stop(); } public int onStartCommand(Intent intent, int flags, int startId) { Toast.makeText(this, "Music Service가 시작되었습니다.", Toast.LENGTH_LONG).show(); Log.d(TAG, "onStart()"); player.start(); return super.onStartCommand(intent, flags, startId);

매니페스트 파일 <manifest ... <application <activity ... </activity> <service android:enabled="true" android:name=".MusicService“ /> </application> </manifest>

서비스 사용 예제 앞의 서비스를 사용하는 예제를 작성 먼저 다음과 같은 인터페이스를 XML로 작성

서비스 실행

MusicserviceTest.java ... public class MusicServiceTest extends Activity implements OnClickListener { private static final String TAG = "MusicServiceTest"; Button start, stop; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); start = (Button) findViewById(R.id.start); stop = (Button) findViewById(R.id.stop); start.setOnClickListener(this); stop.setOnClickListener(this); }

MusicserviceTest.java public void onClick(View src) { switch (src.getId()) { case R.id.start: Log.d(TAG, "onClick() start "); startService(new Intent(this, MusicService.class)); break; case R.id.stop: Log.d(TAG, "onClick() stop"); stopService(new Intent(this, MusicService.class)); }

실행 결과

연결 타입의 서비스

서비스 인터페이스를 정의하는 3가지의 방법 Binder 클래스 확장하기 Messenger 클래스 사용하기 Using AIDL

Binder 클래스 확장하기 예제 난수를 발생시키서 다른 컴포넌트에게 서비스하는 연결된 타입의 서비스를 작성하여 보자.

연결 타입의 서비스를 테스트하는 애플리케이션

연결 타입의 서비스를 테스트하는 애플리케이션

실행 결과

방송 수신자 안드로이드 장치에서는 많은 이벤트들이 발생한다. 이벤트를 받는 컴포넌트가 방송 수신자이다.

방송 수신자의 구조

방송 수신자의 인텐트 필터

문자 메시지를 받는 방송 수신자

실행 결과

애플리케이션이 방송하기 sendBroadcast(Intent intent) sendBroadcast(Intent intent, String receiverPermission) sendOrderedBroadcast(Intent intent, String receiverPermission) 매개 변수 intent는 방송할 액션이다. 매개 변수 receiverPermission은 지정된 권한을 가진 수신자에게만 방송을 보내고 싶을 때 사용한다.

예제 간단하게 두 개의 애플리케이션을 작성하여서 한쪽 에서는 방송을 보내고 다른 쪽에서는 방송을 수신하 여 보자.

방송 수신자 ... public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Contextcontext, Intent intent) { Uri uri = Uri.parse("http://www.google.com"); Intent intent1 = new Intent(Intent.ACTION_VIEW,uri); intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent1); }

매니페스트 파일 <?xml version="1.0" encoding="utf-8"?> <manifest ... <application <receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="kr.co.company.START_WEB" /> </intent-filter> </receiver> </application> <uses-sdk android:minSdkVersion="9" /> </manifest>

테스트 애플리케이션 ... public class MyBroadcastSender extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button click = (Button) findViewById(R.id.click); click.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(); intent.setAction("kr.co.company.START_WEB"); sendBroadcast(intent); } });

방송 수신자 예제 실행 결과