/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package android.view.textservice;

import android.os.Parcel;
import android.os.Parcelable;
import android.text.ParcelableSpan;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.style.SpellCheckSpan;

This class contains a metadata of the input of TextService
/** * This class contains a metadata of the input of TextService */
public final class TextInfo implements Parcelable { private final CharSequence mCharSequence; private final int mCookie; private final int mSequenceNumber; private static final int DEFAULT_COOKIE = 0; private static final int DEFAULT_SEQUENCE_NUMBER = 0;
Constructor.
Params:
  • text – the text which will be input to TextService
/** * Constructor. * @param text the text which will be input to TextService */
public TextInfo(String text) { this(text, 0, getStringLengthOrZero(text), DEFAULT_COOKIE, DEFAULT_SEQUENCE_NUMBER); }
Constructor.
Params:
  • text – the text which will be input to TextService
  • cookie – the cookie for this TextInfo
  • sequenceNumber – the sequence number for this TextInfo
/** * Constructor. * @param text the text which will be input to TextService * @param cookie the cookie for this TextInfo * @param sequenceNumber the sequence number for this TextInfo */
public TextInfo(String text, int cookie, int sequenceNumber) { this(text, 0, getStringLengthOrZero(text), cookie, sequenceNumber); } private static int getStringLengthOrZero(final String text) { return TextUtils.isEmpty(text) ? 0 : text.length(); }
Constructor.
Params:
  • charSequence – the text which will be input to TextService. Attached spans that implement ParcelableSpan will also be marshaled alongside with the text.
  • start – the beginning of the range of text (inclusive).
  • end – the end of the range of text (exclusive).
  • cookie – the cookie for this TextInfo
  • sequenceNumber – the sequence number for this TextInfo
/** * Constructor. * @param charSequence the text which will be input to TextService. Attached spans that * implement {@link ParcelableSpan} will also be marshaled alongside with the text. * @param start the beginning of the range of text (inclusive). * @param end the end of the range of text (exclusive). * @param cookie the cookie for this TextInfo * @param sequenceNumber the sequence number for this TextInfo */
public TextInfo(CharSequence charSequence, int start, int end, int cookie, int sequenceNumber) { if (TextUtils.isEmpty(charSequence)) { throw new IllegalArgumentException("charSequence is empty"); } // Create a snapshot of the text including spans in case they are updated outside later. final SpannableStringBuilder spannableString = new SpannableStringBuilder(charSequence, start, end); // SpellCheckSpan is for internal use. We do not want to marshal this for TextService. final SpellCheckSpan[] spans = spannableString.getSpans(0, spannableString.length(), SpellCheckSpan.class); for (int i = 0; i < spans.length; ++i) { spannableString.removeSpan(spans[i]); } mCharSequence = spannableString; mCookie = cookie; mSequenceNumber = sequenceNumber; } public TextInfo(Parcel source) { mCharSequence = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); mCookie = source.readInt(); mSequenceNumber = source.readInt(); }
Used to package this object into a Parcel.
Params:
  • dest – The Parcel to be written.
  • flags – The flags used for parceling.
/** * Used to package this object into a {@link Parcel}. * * @param dest The {@link Parcel} to be written. * @param flags The flags used for parceling. */
@Override public void writeToParcel(Parcel dest, int flags) { TextUtils.writeToParcel(mCharSequence, dest, flags); dest.writeInt(mCookie); dest.writeInt(mSequenceNumber); }
Returns:the text which is an input of a text service
/** * @return the text which is an input of a text service */
public String getText() { if (mCharSequence == null) { return null; } return mCharSequence.toString(); }
Returns:the charSequence which is an input of a text service. This may have some parcelable spans.
/** * @return the charSequence which is an input of a text service. This may have some parcelable * spans. */
public CharSequence getCharSequence() { return mCharSequence; }
Returns:the cookie of TextInfo
/** * @return the cookie of TextInfo */
public int getCookie() { return mCookie; }
Returns:the sequence of TextInfo
/** * @return the sequence of TextInfo */
public int getSequence() { return mSequenceNumber; }
Used to make this class parcelable.
/** * Used to make this class parcelable. */
public static final Parcelable.Creator<TextInfo> CREATOR = new Parcelable.Creator<TextInfo>() { @Override public TextInfo createFromParcel(Parcel source) { return new TextInfo(source); } @Override public TextInfo[] newArray(int size) { return new TextInfo[size]; } };
Used to make this class parcelable.
/** * Used to make this class parcelable. */
@Override public int describeContents() { return 0; } }