Kandroid Archive (Old article backup) 
안드로이드 서비스에 기능 추가 하기
작성자 레이지보이
작성일 2012-02-24 (금) 15:16
ㆍ추천: 0  ㆍ조회: 5665      
IP: 58.xxx.147
작업하던게 있어서 간단하게 남겨봅니다.
서비스에 기능 추가 예제 입니다.

< 개요 >
기존에 있는 서비스에 기능 추가 하는 예제 입니다.
타겟은 LocationService로 하였습니다. 
- 현재 작업중이었던 서비스라 여기다가 합니다.

< 개발환경 >
Ubuntu / Gingerbread

< 내용 요약 >
1. 서비스에서 지원하고자 하는 인터페이스 추가
- Ixxx.aidl 형태의 파일에 메서드 추가
- 인터페이스, 서비스 스텁과 서비스 프록시의 작업이 줄어듬

2. 추가 기능 구현
- XXXService.java 파일에 구현 내용 추가

3. 매니저에서 추가한 기능을 호출 할 수 있도록 추가
- XXXManager.java 파일에 호출 기능 추가

4. 소스 빌드

5. 동작 확인


< 실습 >

1. ILocationManager.aidl 에 인터페이스 추가
- ~/frameworks/base/location/java/android/location/ILocationManager.aidl
- 마지막 라인에 메서드 추가
|---------------------------------------------------------|
|                                                                                     |
|  void helloWorld();  -> 샘플은 언제나 hello world!!              |
|                                                                                     |
|---------------------------------------------------------|

2. LocationManagerService.java 추가 구현
- ~/frameworks/base/services/java/com/android/server/LocationManagerService.java
- LocationManagerService Class 마지막에 추가
|-----------------------------------------------------------------------|
|                                                                                                          |
|  public void helloWorld() throws RemoteException {                                |
|    Slog.i(TAG, "LocationService helloWorld");  -> 문자열 로고 출력             |
|  }                                                                                                       |
|                                                                                                          |
|-----------------------------------------------------------------------|

3. LocationManager 추가 기능 구현
- ~/frameworks/base/location/java/android/location/LocationManager.java
- LocationManager Class 마지막에 추가
|-----------------------------------------------------------------------|
|                                                                                                          |
|  public void helloWorld()                                                                       |
|  {                                                                                                       |
|    try {                                                                                                |
|      mService.helloWorld();                                                                   |
|    } catch (RemoteException e) {                                                          |
|      Log.e(TAG, "RemoteException in helloWorld() : ", e);                         |
|    }                                                                                                    |
|  }                                                                                                      |
|                                                                                                          |
|-----------------------------------------------------------------------|

3. Android build
- source.android.com 참고

4. 수정된 SDK 참조 경로 경로
- ~/out/target/common/obj/JAVA_LIBRARES/android_stubs_current_intermediates/javalib.jar

5. 동작 확인
- 이클립스에서 기존에 location 서비스를 사용하던 예제 활용
- log에서 출력 확인 (TAG : LocationManagerService)
|-------------------------------------------------------------------------|
|                                                                                                             |
|  LocationManager lm;                                                                             |
|  ...                                                                                                        |
|  lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);  |
|  ...                                                                                                        |
|  lm.helloWorld();                                                                                     |
|  ...                                                                                                        |
|                                                                                                             |
|-------------------------------------------------------------------------|


박스가 이쁘게 안그려지네요 ㅜㅜ




이름아이콘 들풀
2012-02-25 04:34
게시물을 관련 게시판으로 이동해 놓았습니다. 참고바랍니다.
   
이름아이콘 레이지보이
2012-02-25 17:03
오랜만에 와서 어디에 글을쓸까 고민했었습니다 ^^;;
잘 지내시나요 ㅎㅎ
   
 
덧글 쓰기 0
3500
※ 회원등급 레벨 0 이상 읽기가 가능한 게시판입니다.
    N     분류     제목    글쓴이 작성일 조회
150 스탠포드대학의 Systrace와 Power 정보 결합 내용 [1] Jaynux 2016-03-29 4830
149 누리펫, 페이스북 연동 + 애견 자동 급식기 프로젝트, 소스 및.. 아이시클 2014-11-20 3206
148 11월 등록 프로모션 진행! [W3C 온라인 트레이닝 한국어 서비.. 미래웹기술연구소 2013-11-01 2877
147 무료통화 mVoIP API - 예제 소스 포함 뭉치v 2013-04-29 5316
146 이파일에 대한소스좀 gongdol11 2012-09-03 4435
145 쇼핑몰 앱 소스 공개합니다.(Android, iOS) 씨트린매니저 2012-06-12 7380
144 Multicore向 Unified KToolChain ver2.6 (20130105) [14]+22 인베인 2012-05-16 10837
143 [오픈소스] 애주가 소스 공개 아아베재더라아 2012-05-09 5768
142 OpenMP를 이용한 멀티코어 프로그래밍 [4] 다이나믹링크 2012-05-04 6593
141 안드로이드 서비스에 기능 추가 하기 [2] 레이지보이 2012-02-24 5665
140 HTML as App #4 - 기본 링크 스타일과 선택 동작 없애기.. [1]+1 비즈페이 2011-12-30 8201
139 HTML as App #3 - HTML 시작 비즈페이 2011-12-30 5226
138 HTML as App #2 - 주의해야 할 것! 비즈페이 2011-12-27 4072
137 HTML as App #1 - 들어가기 전에 [1]+1 비즈페이 2011-12-22 5080
136 NPTL Optimization for Lightweight Embedded Devices [3]+2 들풀 2011-06-25 5398
135 안드로이드 APK소스의 법적 공개 의무 [5]+7 인베인 2011-03-27 8047
12345678910