am b7ad8253: Merge "Add documents for the spell checker framework and the input method subtype" into ics-mr0
* commit 'b7ad82533596b73ecd40f22bfe48b1b785b05068': Add documents for the spell checker framework and the input method subtype
This commit is contained in:
@@ -35,6 +35,28 @@ import java.lang.ref.WeakReference;
|
|||||||
* SpellCheckerService provides an abstract base class for a spell checker.
|
* SpellCheckerService provides an abstract base class for a spell checker.
|
||||||
* This class combines a service to the system with the spell checker service interface that
|
* This class combines a service to the system with the spell checker service interface that
|
||||||
* spell checker must implement.
|
* spell checker must implement.
|
||||||
|
*
|
||||||
|
* <p>In addition to the normal Service lifecycle methods, this class
|
||||||
|
* introduces a new specific callback that subclasses should override
|
||||||
|
* {@link #createSession()} to provide a spell checker session that is corresponding
|
||||||
|
* to requested language and so on. The spell checker session returned by this method
|
||||||
|
* should extend {@link SpellCheckerService.Session}.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* <h3>Returning spell check results</h3>
|
||||||
|
*
|
||||||
|
* <p>{@link SpellCheckerService.Session#onGetSuggestions(TextInfo, int)}
|
||||||
|
* should return spell check results.
|
||||||
|
* It receives {@link android.view.textservice.TextInfo} and returns
|
||||||
|
* {@link android.view.textservice.SuggestionsInfo} for the input.
|
||||||
|
* You may want to override
|
||||||
|
* {@link SpellCheckerService.Session#onGetSuggestionsMultiple(TextInfo[], int, boolean)} for
|
||||||
|
* better performance and quality.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* <p>Please note that {@link SpellCheckerService.Session#getLocale()} does not return a valid
|
||||||
|
* locale before {@link SpellCheckerService.Session#onCreate()} </p>
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public abstract class SpellCheckerService extends Service {
|
public abstract class SpellCheckerService extends Service {
|
||||||
private static final String TAG = SpellCheckerService.class.getSimpleName();
|
private static final String TAG = SpellCheckerService.class.getSimpleName();
|
||||||
@@ -89,7 +111,7 @@ public abstract class SpellCheckerService extends Service {
|
|||||||
* but will be called in series on another thread.
|
* but will be called in series on another thread.
|
||||||
* @param textInfo the text metadata
|
* @param textInfo the text metadata
|
||||||
* @param suggestionsLimit the number of limit of suggestions returned
|
* @param suggestionsLimit the number of limit of suggestions returned
|
||||||
* @return SuggestionInfo which contains suggestions for textInfo
|
* @return SuggestionsInfo which contains suggestions for textInfo
|
||||||
*/
|
*/
|
||||||
public abstract SuggestionsInfo onGetSuggestions(TextInfo textInfo, int suggestionsLimit);
|
public abstract SuggestionsInfo onGetSuggestions(TextInfo textInfo, int suggestionsLimit);
|
||||||
|
|
||||||
@@ -101,7 +123,7 @@ public abstract class SpellCheckerService extends Service {
|
|||||||
* @param textInfos an array of the text metadata
|
* @param textInfos an array of the text metadata
|
||||||
* @param suggestionsLimit the number of limit of suggestions returned
|
* @param suggestionsLimit the number of limit of suggestions returned
|
||||||
* @param sequentialWords true if textInfos can be treated as sequential words.
|
* @param sequentialWords true if textInfos can be treated as sequential words.
|
||||||
* @return an array of SuggestionInfo of onGetSuggestions
|
* @return an array of SuggestionsInfo of onGetSuggestions
|
||||||
*/
|
*/
|
||||||
public SuggestionsInfo[] onGetSuggestionsMultiple(TextInfo[] textInfos,
|
public SuggestionsInfo[] onGetSuggestionsMultiple(TextInfo[] textInfos,
|
||||||
int suggestionsLimit, boolean sequentialWords) {
|
int suggestionsLimit, boolean sequentialWords) {
|
||||||
|
|||||||
@@ -35,6 +35,13 @@ import java.util.Locale;
|
|||||||
* Subtype can describe locale (e.g. en_US, fr_FR...) and mode (e.g. voice, keyboard...), and is
|
* Subtype can describe locale (e.g. en_US, fr_FR...) and mode (e.g. voice, keyboard...), and is
|
||||||
* used for IME switch and settings. The input method subtype allows the system to bring up the
|
* used for IME switch and settings. The input method subtype allows the system to bring up the
|
||||||
* specified subtype of the designated input method directly.
|
* specified subtype of the designated input method directly.
|
||||||
|
*
|
||||||
|
* <p>It should be defined in an XML resource file of the input method
|
||||||
|
* with the <code><subtype></code> element.
|
||||||
|
* For more information, see the guide to
|
||||||
|
* <a href="{@docRoot}resources/articles/creating-input-method.html">
|
||||||
|
* Creating an Input Method</a>.</p>
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public final class InputMethodSubtype implements Parcelable {
|
public final class InputMethodSubtype implements Parcelable {
|
||||||
private static final String TAG = InputMethodSubtype.class.getSimpleName();
|
private static final String TAG = InputMethodSubtype.class.getSimpleName();
|
||||||
|
|||||||
@@ -34,6 +34,51 @@ import java.util.Queue;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* The SpellCheckerSession interface provides the per client functionality of SpellCheckerService.
|
* The SpellCheckerSession interface provides the per client functionality of SpellCheckerService.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <a name="Applications"></a>
|
||||||
|
* <h3>Applications</h3>
|
||||||
|
*
|
||||||
|
* <p>In most cases, applications that are using the standard
|
||||||
|
* {@link android.widget.TextView} or its subclasses will have little they need
|
||||||
|
* to do to work well with spell checker services. The main things you need to
|
||||||
|
* be aware of are:</p>
|
||||||
|
*
|
||||||
|
* <ul>
|
||||||
|
* <li> Properly set the {@link android.R.attr#inputType} in your editable
|
||||||
|
* text views, so that the spell checker will have enough context to help the
|
||||||
|
* user in editing text in them.
|
||||||
|
* </ul>
|
||||||
|
*
|
||||||
|
* <p>For the rare people amongst us writing client applications that use the spell checker service
|
||||||
|
* directly, you will need to use {@link #getSuggestions(TextInfo, int)} or
|
||||||
|
* {@link #getSuggestions(TextInfo[], int, boolean)} for obtaining results from the spell checker
|
||||||
|
* service by yourself.</p>
|
||||||
|
*
|
||||||
|
* <h3>Security</h3>
|
||||||
|
*
|
||||||
|
* <p>There are a lot of security issues associated with spell checkers,
|
||||||
|
* since they could monitor all the text being sent to them
|
||||||
|
* through, for instance, {@link android.widget.TextView}.
|
||||||
|
* The Android spell checker framework also allows
|
||||||
|
* arbitrary third party spell checkers, so care must be taken to restrict their
|
||||||
|
* selection and interactions.</p>
|
||||||
|
*
|
||||||
|
* <p>Here are some key points about the security architecture behind the
|
||||||
|
* spell checker framework:</p>
|
||||||
|
*
|
||||||
|
* <ul>
|
||||||
|
* <li>Only the system is allowed to directly access a spell checker framework's
|
||||||
|
* {@link android.service.textservice.SpellCheckerService} interface, via the
|
||||||
|
* {@link android.Manifest.permission#BIND_TEXT_SERVICE} permission. This is
|
||||||
|
* enforced in the system by not binding to a spell checker service that does
|
||||||
|
* not require this permission.
|
||||||
|
*
|
||||||
|
* <li>The user must explicitly enable a new spell checker in settings before
|
||||||
|
* they can be enabled, to confirm with the system that they know about it
|
||||||
|
* and want to make it available for use.
|
||||||
|
* </ul>
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public class SpellCheckerSession {
|
public class SpellCheckerSession {
|
||||||
private static final String TAG = SpellCheckerSession.class.getSimpleName();
|
private static final String TAG = SpellCheckerSession.class.getSimpleName();
|
||||||
|
|||||||
@@ -35,6 +35,31 @@ import java.util.Locale;
|
|||||||
*
|
*
|
||||||
* The user can change the current text services in Settings. And also applications can specify
|
* The user can change the current text services in Settings. And also applications can specify
|
||||||
* the target text services.
|
* the target text services.
|
||||||
|
*
|
||||||
|
* <h3>Architecture Overview</h3>
|
||||||
|
*
|
||||||
|
* <p>There are three primary parties involved in the text services
|
||||||
|
* framework (TSF) architecture:</p>
|
||||||
|
*
|
||||||
|
* <ul>
|
||||||
|
* <li> The <strong>text services manager</strong> as expressed by this class
|
||||||
|
* is the central point of the system that manages interaction between all
|
||||||
|
* other parts. It is expressed as the client-side API here which exists
|
||||||
|
* in each application context and communicates with a global system service
|
||||||
|
* that manages the interaction across all processes.
|
||||||
|
* <li> A <strong>text service</strong> implements a particular
|
||||||
|
* interaction model allowing the client application to retrieve information of text.
|
||||||
|
* The system binds to the current text service that is in use, causing it to be created and run.
|
||||||
|
* <li> Multiple <strong>client applications</strong> arbitrate with the text service
|
||||||
|
* manager for connections to text services.
|
||||||
|
* </ul>
|
||||||
|
*
|
||||||
|
* <h3>Text services sessions</h3>
|
||||||
|
* <ul>
|
||||||
|
* <li>The <strong>spell checker session</strong> is one of the text services.
|
||||||
|
* {@link android.view.textservice.SpellCheckerSession}</li>
|
||||||
|
* </ul>
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public final class TextServicesManager {
|
public final class TextServicesManager {
|
||||||
private static final String TAG = TextServicesManager.class.getSimpleName();
|
private static final String TAG = TextServicesManager.class.getSimpleName();
|
||||||
|
|||||||
Reference in New Issue
Block a user