android keyboard 5

[Android] 키보드 앱 만들기 후기

안녕하세요 godsangin입니다. 약 3주에 거쳐 키보드 앱 개발하는 과정을 포스팅하게 되었는데요. 블로그 글은 처음 써본 관계로 여러가지 시행착오가 많았던 것 같습니다. 처음 InputMethodService에서 InputConnection을 가져오는 과정에서부터 직접 만든 한글, 영어, 특수문자 등의 키보드에 직접 적용시키는 것 까지. 여러분들은 본인만의 키보드를 잘 만들 수 있었나요 ?? 만약 힘드셨다면 저에게 피드백을 남겨주세요..ㅠㅠ 저 또한 키보드에 대해 공부하면서 개발하였기 때문에 아직까지도 코드가 깔끔하지 않고, 천지인 키보드 같은 경우에는 낯선 문자가 발견되거나, 널문자가 포함되어 카톡을 보내거나 인터넷 검색을 할 경우에 이상한 유니코드가 발견되는 등 많은 수정해야할 사항이 존재합니다...

[Android] 커스텀 키보드 만들기(3/4) 외전 - HangulMaker

한글 키보드를 제작하면서 만들게 된 Hangul AutoMata입니다. 한글이라는 언어의 위대함을 느끼게 되었던 개발이었습니다..! 우선 첫번째 상태는 아무것도 입력되지 않은 상태로 모음 또는 자음을 기대할 수 있습니다. 여기서 자음이 입력된다면 B의 상태로, 모음이 입력된다면 E의 상태로 이동합니다. B의 상태에서는 다시 한번 자음을 입력하거나, 모음을 입력할 수 있습니다. 만약 자음을 입력한다면 이전 문자를 commit하고 다음 문자로 텍스트를 구성할 수 있습니다(상태는 고정). 그리고 모음이 들어온다면 3번예시와 같은 자음+모음의 C상태로 이동합니다. 마지막으로 C상태에서 자음이 들어온다면 자음+모음+자음 조합의 한 글자가 완성될 수 있고(상태 D), 모음이 들어온다면 이전에 완성된 문자를 comm..

[Android] 커스텀 키보드 만들기(3/4) - 쿼티 키보드 만들기

지난 시간에 이어 오늘은 한글 오토마타를 생성하여 한글 키보드를 만들어 보도록 하겠습니다. 한글 키보드는 대부분의 키보드가 쿼티 키보드를 기반으로 하기 때문에 쿼티 키보드 제작을 기반으로 하였습니다. 영어 키보드와 마찬가지로 작성한 코드에 commit할 때 HangulMaker라는 커스텀 클래스를 만들어 사용하는 방법입니다. val numpadText = listOf("1","2","3","4","5","6","7","8","9","0") val firstLineText = listOf("ㅂ","ㅈ","ㄷ","ㄱ","ㅅ","ㅛ","ㅕ","ㅑ","ㅐ","ㅔ") val secondLineText = listOf("ㅁ","ㄴ","ㅇ","ㄹ","ㅎ","ㅗ","ㅓ","ㅏ","ㅣ") val thirdLineText..

[Android] 커스텀 키보드 만들기(2/4) - 영문 키보드 만들기

앞서 말씀드렸듯이 KeyboardView와 Keyboard를 사용하지 않기 위하여 새로운 레이아웃을 정의하고 바인드하는 작업이 필요합니다. 첫번째로 Layout을 작성해야합니다. 키 패드는 재활용 가능성이 다분하기 때문에 키패드 레이아웃을 따로 작성하였습니다. 키 패드는 실제로 키 버튼이 들어갈 Button과 Button 오른쪽 위로 롱 클릭 시 작성될 특수문자, DELETE 버튼에 사용될 ImageView로 구성되어있습니다.(레이아웃 이름은 keyboard_item입니다) 그리고 이 키 패드를 include하는 실제 keyboardView를 작성합니다.(레이아웃 이름은 keyboard_action입니다) 위와 같이 4개의 큰 LinearLayout으로 정의되어 있습니다. 다음으로 코드를 작성해 보겠습니..

[Android]커스텀 키보드 만들기(1/4) - InputMethodService

preview에 이어서 안드로이드 커스텀 키보드 만들기 1부를 시작하겠습니다. 3부작으로 작성하려고 노력하였지만 글이 너무 길어져서 4부작으로 늘린 점 죄송합니다 ㅠㅠ 1부에서 주로 다룰 내용은 서비스를 통하여 다른 애플리케이션에서 EditText로 인한 키보드 호출 시 커스텀 키보드를 출력하고 커스텀 키보드의 이벤트를 inputMethodService를 이용하여 다시 EditText를 작성할 수 있도록 만드는 것이 목표입니다. 앞서 말씀드렸듯이 Keyboard객체와 KeyboardView객체를 사용하지 않는 것이 큰 특징이고, 그로 인해 각각의 버튼을 모두 따로 바인드 해야 한다는 번거로움이 존재합니다.(다른 방법이 있다면 알려주세요...ㅠㅠ) 우선 첫번째로 키보드로 정의하기 위한 서비스를 작성합니다...