Upload
wednesday-lawson
View
52
Download
0
Embed Size (px)
DESCRIPTION
Sample Soft Keyboard source analysis. 안드로이드 서비스 분류. 프레임워크의 시스템 서비스. Core flatform service & hardware service. 부팅시 안드로이드 시스템 서비스 생성 과정. Linux kernel. Java layer. 애플리케이션 서비스 객체에 구현된 onCreate () 를 호출. 스레드간에 메시지를 전달. 액티비티 및 서비스의 생성 및 스케줄링을 담당. DVM 을 초기화하고 구동. 언어 및 입력. Manifest. - PowerPoint PPT Presentation
Citation preview
Sample Soft Keyboard source analysis
안드로이드 서비스 분류
Android service
System service
Java system ser-vice
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 service
Linux ker-nel Java layer
액티비티 및 서비스의 생성 및 스케줄링을
담당
스레드간에 메시지를 전달
DVM 을 초기화하고 구동
애플리케이션 서비스 객체에 구현된 on-Create() 를 호출
언어 및 입력
Manifest
안드로이드 홈페이지에 나온 내용 .퍼미션을 주어서 시스템에 키보드 등록 .
1. 첫 번째 세팅 화면ImePreferences 객체에서 이 화면을 구성 .
1. 첫 번째 세팅 화면1
2 3
45
1 또는 메니페스트의 lable 에서 변경
5String.xml 의 내용 .locale label 받아옴
3
2 PreferenceActivity 의 onCraete 에서 리스트뷰 생성
Value = Select input languages
2. 두 번째 세팅 화면InputMethodSettingsImpl 의 init() 함수의 setOnPreferenceClickListener() 에서화면을 구성 .
2. 두 번째 세팅 화면
2. 두 번째 세팅 화면
2. 두 번째 세팅 화면
이 화면을 띄우는 함수
3. 기본 키보드 세팅
3. 기본 키보드 세팅
getSystemService() 로 서비스 실행
InputMethodService에서 onInitializeInter-
face() 호출하여 UI 초기화
3. 기본 키보드 세팅
onInitializeinterface()-> latinkeyboard 생성 ->keyboard 클래스에서 createkeyfromxml 호출
키보드의 리소스와 배열 설정
3. 기본 키보드 세팅
Createkeyfromxml 에서 호출함
3. 기본 키보드 세팅
onInitializeinterface()-> latinkeyboard 생성하여 호출
4. 키보드 생성
4. 키보드 생성
4. 키보드 생성
5. 키 입력
입력 방식에는 숫자와 날짜 입력이 주가되는 symbol 키보드 / 텍스트 입력이 주가되는 qwerty 키보드 로 나뉘고 , 텍스트 입력 방식에서는 비밀번호 , URI, E-Mail 입력 등이 있음 .
~~
~
중략
5. 키 입력 (char)
~~
~
중략
일반 키 입력 시
입력 받은 키의 유니코드화 한 값
primaryCode 를 가진 모든 가능한 대체 키 코드 .
기본값은 null
5. 키 입력 (char)
키 입력이 일어났을 때 , 공통으로 실행 되는 부분으로 , 점이 입력한 키의 안에 있을 경우 감지하는 함수로 , 키 값에 따라 호출 빈도가 다르다 .
키 입력이 있을 때 , res/values/string.xml 의 ‘ word_separator’ 참조 하는 과정으로 무슨 키를 입력하던 공통 적으로 일어 남 . 입력 키 값에 참조한 문자들이 있는지 여부를 boolean형으로 반환 .
onKey() : 입력된 키 값의 종류를 구분 지어주는 메소드 (cancel_key, shift_key, delete_key, character_key 등등 )
5. 키 입력 (char)
일반 character 키 입력의 경우 호출 되며 , Shift 키 눌림 여부를 판단하여 키 코드 값을 소문자에서 대문자로 바꿔준다 . 만약 텍스트 입력 Activity 라면 후보키 갱신 함수를 호출 .
입력 키가 알파벳인지 , 숫자 및 특수문자 인지 구분
현재 Activity 의 입력 방식이 일반적인 텍스트 입력 방식일 때 , 호출 되는 함수들로써 현재 후보키 창을 지속적으로 갱신해주는 기능 (= 입력 키가 숫자나 특수문자일 때 , 후보키 창을 호출하지 않음 .)
5. 키 입력 (cancel)
~~
~
중략
취소 키 입력 시
5. 키 입력 (cancel)
모든 키 입력 시 발생하는 공통 부분
5. 키 입력
스크린 터치 시 그곳의 좌표를 가져오고 , 모션 이벤트를 변환하는 과정 .
call반환된 int array 의 길이만큼 isInside() 를 호출
5. 키 입력
액티비티 및 서비스의 생성 및 스케줄링을 담당
DVM 을 초기화하고 구동