Sample Soft Keyboard source analysis
-
Upload
wednesday-lawson -
Category
Documents
-
view
52 -
download
0
description
Transcript of Sample Soft Keyboard source analysis
![Page 1: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/1.jpg)
Sample Soft Keyboard source analysis
![Page 2: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/2.jpg)
안드로이드 서비스 분류
Android service
System service
Java system ser-vice
Core platform service
Hardware ser-vice
Native system service
Application ser-vice
Local service
Remote service
![Page 3: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/3.jpg)
프레임워크의 시스템 서비스
Core flatform service & hard-
ware service
![Page 4: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/4.jpg)
부팅시 안드로이드 시스템 서비스 생성 과정
init zygote System server
Java sys-tem service
Linux ker-nel Java layer
![Page 5: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/5.jpg)
액티비티 및 서비스의 생성 및 스케줄링을
담당
스레드간에 메시지를 전달
DVM 을 초기화하고 구동
애플리케이션 서비스 객체에 구현된 on-Create() 를 호출
![Page 6: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/6.jpg)
언어 및 입력
![Page 7: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/7.jpg)
Manifest
안드로이드 홈페이지에 나온 내용 .퍼미션을 주어서 시스템에 키보드 등록 .
![Page 8: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/8.jpg)
1. 첫 번째 세팅 화면ImePreferences 객체에서 이 화면을 구성 .
![Page 9: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/9.jpg)
1. 첫 번째 세팅 화면1
2 3
45
1 또는 메니페스트의 lable 에서 변경
5String.xml 의 내용 .locale label 받아옴
3
2 PreferenceActivity 의 onCraete 에서 리스트뷰 생성
Value = Select input languages
![Page 10: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/10.jpg)
2. 두 번째 세팅 화면InputMethodSettingsImpl 의 init() 함수의 setOnPreferenceClickListener() 에서화면을 구성 .
![Page 11: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/11.jpg)
2. 두 번째 세팅 화면
![Page 12: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/12.jpg)
2. 두 번째 세팅 화면
![Page 13: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/13.jpg)
2. 두 번째 세팅 화면
이 화면을 띄우는 함수
![Page 14: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/14.jpg)
3. 기본 키보드 세팅
![Page 15: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/15.jpg)
3. 기본 키보드 세팅
getSystemService() 로 서비스 실행
InputMethodService에서 onInitializeInter-
face() 호출하여 UI 초기화
![Page 16: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/16.jpg)
3. 기본 키보드 세팅
onInitializeinterface()-> latinkeyboard 생성 ->keyboard 클래스에서 createkeyfromxml 호출
키보드의 리소스와 배열 설정
![Page 17: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/17.jpg)
3. 기본 키보드 세팅
Createkeyfromxml 에서 호출함
![Page 18: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/18.jpg)
3. 기본 키보드 세팅
onInitializeinterface()-> latinkeyboard 생성하여 호출
![Page 19: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/19.jpg)
4. 키보드 생성
![Page 20: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/20.jpg)
4. 키보드 생성
![Page 21: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/21.jpg)
4. 키보드 생성
![Page 22: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/22.jpg)
5. 키 입력
입력 방식에는 숫자와 날짜 입력이 주가되는 symbol 키보드 / 텍스트 입력이 주가되는 qwerty 키보드 로 나뉘고 , 텍스트 입력 방식에서는 비밀번호 , URI, E-Mail 입력 등이 있음 .
~~
~
중략
![Page 23: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/23.jpg)
5. 키 입력 (char)
~~
~
중략
일반 키 입력 시
입력 받은 키의 유니코드화 한 값
primaryCode 를 가진 모든 가능한 대체 키 코드 .
기본값은 null
![Page 24: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/24.jpg)
5. 키 입력 (char)
키 입력이 일어났을 때 , 공통으로 실행 되는 부분으로 , 점이 입력한 키의 안에 있을 경우 감지하는 함수로 , 키 값에 따라 호출 빈도가 다르다 .
키 입력이 있을 때 , res/values/string.xml 의 ‘ word_separator’ 참조 하는 과정으로 무슨 키를 입력하던 공통 적으로 일어 남 . 입력 키 값에 참조한 문자들이 있는지 여부를 boolean형으로 반환 .
onKey() : 입력된 키 값의 종류를 구분 지어주는 메소드 (cancel_key, shift_key, delete_key, character_key 등등 )
![Page 25: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/25.jpg)
5. 키 입력 (char)
일반 character 키 입력의 경우 호출 되며 , Shift 키 눌림 여부를 판단하여 키 코드 값을 소문자에서 대문자로 바꿔준다 . 만약 텍스트 입력 Activity 라면 후보키 갱신 함수를 호출 .
입력 키가 알파벳인지 , 숫자 및 특수문자 인지 구분
현재 Activity 의 입력 방식이 일반적인 텍스트 입력 방식일 때 , 호출 되는 함수들로써 현재 후보키 창을 지속적으로 갱신해주는 기능 (= 입력 키가 숫자나 특수문자일 때 , 후보키 창을 호출하지 않음 .)
![Page 26: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/26.jpg)
5. 키 입력 (cancel)
~~
~
중략
취소 키 입력 시
![Page 27: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/27.jpg)
5. 키 입력 (cancel)
모든 키 입력 시 발생하는 공통 부분
![Page 28: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/28.jpg)
5. 키 입력
스크린 터치 시 그곳의 좌표를 가져오고 , 모션 이벤트를 변환하는 과정 .
call반환된 int array 의 길이만큼 isInside() 를 호출
![Page 29: Sample Soft Keyboard source analysis](https://reader030.fdocuments.net/reader030/viewer/2022033100/56813521550346895d9c8333/html5/thumbnails/29.jpg)
5. 키 입력
액티비티 및 서비스의 생성 및 스케줄링을 담당
DVM 을 초기화하고 구동