Kandroid Archive (Old article backup) 
안드로이드 서비스에 기능 추가 하기
작성자
작성일 2012-02-24 (금) 15:16
ㆍ추천: 0  ㆍ조회: 5807      
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 이상 읽기가 가능한 게시판입니다.