質問編集履歴

1 初心者アイコンをつけるのを忘れていました...すみません。

zuo

zuo score 12

2015/07/14 18:31  投稿

フリック入力方式のキーボードアプリの作成の仕方について
プログラミング初心者です。
Android OS用のフリック方式のキーボードアプリをつくっています。
現在ボタンをタップすると文字が入力されるところまでは作成できたのですが、
フリックして文字を入力するコードの書き方が全くわかりません。
様々なwebサイトで調べて試したりはしたのですが、どれもうまくいきませんでした。
どのようにコードを書いたらフリックして文字が入力できるようになるのでしょうか。
どうかお力添えいただけないでしょうか?
開発環境はMac OS ver10.3、Android Studio ver1.2.2です。
また以下に現状のソースコードを貼り付けておくので、ご確認よろしくお願いします。
```lang-JAVA
package com.example.flickkeysboard2;
import android.inputmethodservice.InputMethodService;
import android.inputmethodservice.Keyboard;
import android.inputmethodservice.KeyboardView;
import android.media.AudioManager;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.InputConnection;
public class flickKeys extends InputMethodService implements KeyboardView.OnKeyboardActionListener {
private KeyboardView kv;
private Keyboard keyboard;
private boolean caps = false;
@Override
public View onCreateInputView() {
kv = (KeyboardView) getLayoutInflater().inflate(R.layout.keyboard, null);
keyboard = new Keyboard(this, R.xml.fifty_keys);
kv.setKeyboard(keyboard);
kv.setOnKeyboardActionListener(this);
AudioManager am = (AudioManager) getSystemService(AUDIO_SERVICE);
return kv;
}
@Override
public void onPress(int primaryCode) {
}
@Override
public void onRelease(int primaryCode) {
}
@Override
public void onKey(int primaryCode, int[] keyCodes) {
InputConnection ic = getCurrentInputConnection();
if(primaryCode ==Keyboard.KEYCODE_DELETE) {
keyDownUp(KeyEvent.KEYCODE_DEL);
}else if(primaryCode == HRCode.A){
getCurrentInputConnection().commitText("あ", 1);
}else if(primaryCode == HRCode.B) {
getCurrentInputConnection().commitText("か", 1);
}else if(primaryCode == HRCode.C) {
getCurrentInputConnection().commitText("さ", 1);
}else if(primaryCode == HRCode.D) {
getCurrentInputConnection().commitText("た", 1);
}else if(primaryCode == HRCode.E) {
getCurrentInputConnection().commitText("な", 1);
}else if(primaryCode == HRCode.F) {
getCurrentInputConnection().commitText("は", 1);
}else if(primaryCode == HRCode.G) {
getCurrentInputConnection().commitText("ま", 1);
}else if(primaryCode == HRCode.H) {
getCurrentInputConnection().commitText("や", 1);
}else if(primaryCode == HRCode.I){
getCurrentInputConnection().commitText("ら", 1);
}else if(primaryCode == HRCode.J){
getCurrentInputConnection().commitText("わ", 1);
}else if(primaryCode == HRCode.K){
getCurrentInputConnection().commitText("゛", 1);
}else if(primaryCode == HRCode.L){
getCurrentInputConnection().commitText("。", 1);
}else
{
//文字の割り当てのあるKEYCODEの場合(アルファベットなど)
getCurrentInputConnection().commitText(
String.valueOf((char) primaryCode), 1);
}
}
private void keyDownUp(int keyEventCode){
getCurrentInputConnection().sendKeyEvent(
new KeyEvent(KeyEvent.ACTION_DOWN,keyEventCode));
getCurrentInputConnection().sendKeyEvent(
new KeyEvent(KeyEvent.ACTION_UP,keyEventCode));
}
@Override
public void onText(CharSequence text) {
}
@Override
public void swipeLeft(){
}
@Override
public void swipeRight() {
}
@Override
public void swipeDown() {
}
@Override
public void swipeUp() {
}
}
```
  • Java

    23817 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    10090 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • teratail

    560 questions

    teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る