Sample Soft Keyboard source analysis
Feb 08, 2016
Sample Soft Keyboard source analysis
안드로이드 서비스 분류
Android service
System service
Java system service
Core platform service
Hardware ser-vice
Native system service
Application ser-vice
Local service
Remote service
프레임워크의 시스템 서비스
Core flatform service & hard-
ware service
부팅시 안드로이드 시스템 서비스 생성 과정
init zygote System server
Java sys-tem ser-
vice
Linux ker-nel Java layer
액티비티 및 서비스의 생성 및 스케줄링을
담당
스레드간에 메시지를 전달
DVM 을 초기화하고 구동
애플리케이션 서비스 객체에 구현된 on-Create() 를 호출
언어 및 입력
Manifest
안드로이드 홈페이지에 나온 내용 .퍼미션을 주어서 시스템에 키보드 등록 .
1. 첫 번째 세팅 화면ImePreferences 객체에서 이 화면을 구성 .
1. 첫 번째 세팅 화면12 3
4 5
1 또는 메니페스트의 lable 에서 변경
5String.xml 의 내용 .locale label 받아옴
3
2 PreferenceActivity 의 onCraete 에서 리스트뷰 생성
Value = Select input languages
2. 두 번째 세팅 화면InputMethodSettingsImpl 의 init() 함수의 setOnPreferenceClickListener() 에서화면을 구성 .
2. 두 번째 세팅 화면
2. 두 번째 세팅 화면
2. 두 번째 세팅 화면
이 화면을 띄우는 함수
3. 기본 키보드 세팅
3. 기본 키보드 세팅 (SoftKeyboard.java)
getSystemService() 로 inputmethod service
호출
InputMethodService에서 onInitializeInter-
face() 호출하여 UI 초기화
3. 기본 키보드 세팅 (LatinKeyboard.java)
onInitializeinterface()-> latinkeyboard 생성 -> 부모클래스인 keyboard클래스에서 createkeyfromxml 호출
키보드의 배열과 리소스 메소드
3. 기본 키보드 세팅 (LatinKeyboard.java)
Createkeyfromxml 에서 호출함키보드의 배열과 리소스 설정
3. 기본 키보드 세팅 (LatinKeyboard.java)
키보드 레이아웃의 환경 설정
4. 키보드 생성
4. 키보드 생성
4. 키보드 생성
5. 키 입력 (char)키 입력이 일어났을 때 , 공통으로 실행 되는 부분으로 , 점이 입력한 키의 안에 있을 경우 감지하는 함수로 , 키 값에 따라 호출 빈도가 다르다 .
키 입력이 있을 때 , res/values/string.xml 의 ‘ word_separator’ 참조 하는 과정으로 무슨 키를 입력하던 공통 적으로 일어 남 .
onKey() : 입력 값의 종류를 구분 지어주는 메소드 (cancel_key, shift_key, character_key 등등 )
5. 키 입력 (char)‘q’ 일반 character 키 입력의 경우
5. 키 입력 (cancel)
5. 키 입력
5. 키 입력
5. 키 입력
extends
Call to parent method
Class Key
Class LatinKey
5. 키 입력