1053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project/* 259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. 3053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 4053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * you may not use this file except in compliance with the License. 6053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * You may obtain a copy of the License at 7053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 8053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 10053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * See the License for the specific language governing permissions and 14053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * limitations under the License. 15053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 16053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 17053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectpackage jp.co.omronsoft.openwnn; 18053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 19053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.content.SharedPreferences; 20053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 21053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project/** 22053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * The interface of the text converter accessed from OpenWnn. 23053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 24053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * The realization class of this interface should be an singleton class. 25053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 26053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @author Copyright (C) 2009, OMRON SOFTWARE CO., LTD. All Rights Reserved. 27053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 28053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectpublic interface WnnEngine { 29053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* 30053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * DEFINITION OF CONSTANTS 31053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 32d56eddfd5e0f193359f93e7ef665338cace9e2e9Daisuke Miyakawa /** The identifier of the learning dictionary */ 33053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public static final int DICTIONARY_TYPE_LEARN = 1; 34d56eddfd5e0f193359f93e7ef665338cace9e2e9Daisuke Miyakawa /** The identifier of the user dictionary */ 35053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public static final int DICTIONARY_TYPE_USER = 2; 36053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 37053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* 38053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * DEFINITION OF METHODS 39053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 40053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 41053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Initialize parameters. 42053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 43053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void init(); 44053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 45053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 46053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Close the converter. 47053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 48053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 49053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * OpenWnn calls this method when it is destroyed. 50053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 51053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void close(); 52053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 53053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 54053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Predict words/phrases. 55053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 56d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @param text The input string 57d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @param minLen The minimum length of a word to predict (0 : no limit) 58d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @param maxLen The maximum length of a word to predict (-1 : no limit) 59d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @return Plus value if there are candidates; 0 if there is no candidate; minus value if a error occurs. 60053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 61053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public int predict(ComposingText text, int minLen, int maxLen); 62053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 63053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 64053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Convert a string. 65053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 66053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * This method is used to consecutive/single clause convert in 67053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Japanese, Pinyin to Kanji convert in Chinese, Hangul to Hanja 68053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * convert in Korean, etc. 69053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 70f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa * The result of conversion is set into the layer 2 in the {@link ComposingText}. 71f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa * To get other candidates of each clause, call {@link #makeCandidateListOf(int)}. 72053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 73d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @param text The input string 74d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @return Plus value if there are candidates; 0 if there is no candidate; minus value if a error occurs. 75053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 76053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public int convert(ComposingText text); 77053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 78053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 79053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Search words from the dictionaries. 80053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 81d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @param key The search key (stroke) 82d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @return Plus value if there are candidates; 0 if there is no candidate; minus value if a error occurs. 83053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 84053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public int searchWords(String key); 85053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 86053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 87053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Search words from the dictionaries. 88053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 89d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @param word A word to search 90d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @return Plus value if there are candidates; 0 if there is no candidate; minus value if a error occurs. 91053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 92053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public int searchWords(WnnWord word); 93053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 94053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 95053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Get a candidate. 96053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 97f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa * After {@link #predict(ComposingText, int, int)} or {@link #makeCandidateListOf(int)} or 98f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa * {@code searchWords()}, call this method to get the 99053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * results. This method will return a candidate in decreasing 100f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa * frequency order for {@link #predict(ComposingText, int, int)} and 101f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa * {@link #makeCandidateListOf(int)}, in increasing character code order for 102f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa * {@code searchWords()}. 103053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 104d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @return The candidate; {@code null} if there is no more candidate. 105053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 106053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public WnnWord getNextCandidate(); 107053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 108053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 109053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Retrieve the list of registered words. 110053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 111d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @return {@code null} if no word is registered; the array of {@link WnnWord} if some words is registered. 112053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 113053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public WnnWord[] getUserDictionaryWords(); 114053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 115053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 116053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Learn a word. 117053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 118053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * This method is used to register the word selected from 119053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * candidates to the learning dictionary or update the frequency 120053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * of the word. 121053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 122d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @param word The selected word 123d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @return {@code true} if success; {@code false} if fail or not supported. 124053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 125053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public boolean learn(WnnWord word); 126053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 127053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 128053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Register a word to the user's dictionary. 129053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 130d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @param word A word to register 131d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @return Number of registered words in the user's dictionary after the operation; minus value if a error occurs. 132053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 133053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public int addWord(WnnWord word); 134053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 135053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 136053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Delete a word from the user's dictionary. 137053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 138d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @param word A word to delete 139d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @return {@code true} if success; {@code false} if fail or not supported. 140053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 141053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public boolean deleteWord(WnnWord word); 142053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 143053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 144053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Delete all words from the user's dictionary. 145053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 146d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @param dictionary {@code DICTIONARY_TYPE_LEARN} or {@code DICTIONARY_TYPE_USER} 147d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @return {@code true} if success; {@code false} if fail or not supported. 148053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 149053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public boolean initializeDictionary(int dictionary); 150053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 151053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 152f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa * Delete all words from the user's dictionary of the specified language. 153f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa * <br> 154d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @param dictionary {@code DICTIONARY_TYPE_LEARN} or {@code DICTIONARY_TYPE_USER} 155d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @param type Dictionary type (language, etc...) 156d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @return {@code true} if success; {@code false} if fail or not supported. 157f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa */ 158f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa public boolean initializeDictionary(int dictionary, int type); 159f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa 160f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa /** 161d56eddfd5e0f193359f93e7ef665338cace9e2e9Daisuke Miyakawa * Reflect the preferences in the converter. 162053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 163053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param pref The preferences 164053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 165053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void setPreferences(SharedPreferences pref); 166053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 167053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 168053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Break the sequence of words. 169053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 170053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * This method is used to notice breaking the sequence of input 171053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * words to the converter. The converter will stop learning 172053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * collocation between previous input words and words which will 173053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * input after this break. 174053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 175053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void breakSequence(); 176053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 177053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 178053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Makes the candidate list. 179053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * <br> 180053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * This method is used when to make a list of other candidates of 181053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * the clause which is in the result of consecutive clause 182f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa * conversion({@link #convert(ComposingText)}). 183f96267ad0d85ede52c300ae5456d7e4ecb50915cDaisuke Miyakawa * To get the elements of the list, call {@link #getNextCandidate()}. 184053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 185053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param clausePosition The position of a clause 186d2f2d7241a8f9e02da0930b31b7cb90e4d43423bDaisuke Miyakawa * @return Plus value if there are candidates; 0 if there is no candidate; minus value if a error occurs. 187053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 188053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public int makeCandidateListOf(int clausePosition); 189053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} 190