/*
 * Copyright (C) 2012 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.hardware.input;

import android.annotation.NonNull;
import android.os.LocaleList;
import android.os.Parcel;
import android.os.Parcelable;

import java.util.Locale;

Describes a keyboard layout.
@hide
/** * Describes a keyboard layout. * * @hide */
public final class KeyboardLayout implements Parcelable, Comparable<KeyboardLayout> { private final String mDescriptor; private final String mLabel; private final String mCollection; private final int mPriority; @NonNull private final LocaleList mLocales; private final int mVendorId; private final int mProductId; public static final Parcelable.Creator<KeyboardLayout> CREATOR = new Parcelable.Creator<KeyboardLayout>() { public KeyboardLayout createFromParcel(Parcel source) { return new KeyboardLayout(source); } public KeyboardLayout[] newArray(int size) { return new KeyboardLayout[size]; } }; public KeyboardLayout(String descriptor, String label, String collection, int priority, LocaleList locales, int vid, int pid) { mDescriptor = descriptor; mLabel = label; mCollection = collection; mPriority = priority; mLocales = locales; mVendorId = vid; mProductId = pid; } private KeyboardLayout(Parcel source) { mDescriptor = source.readString(); mLabel = source.readString(); mCollection = source.readString(); mPriority = source.readInt(); mLocales = LocaleList.CREATOR.createFromParcel(source); mVendorId = source.readInt(); mProductId = source.readInt(); }
Gets the keyboard layout descriptor, which can be used to retrieve the keyboard layout again later using InputManager.getKeyboardLayout(String).
Returns:The keyboard layout descriptor.
/** * Gets the keyboard layout descriptor, which can be used to retrieve * the keyboard layout again later using * {@link InputManager#getKeyboardLayout(String)}. * * @return The keyboard layout descriptor. */
public String getDescriptor() { return mDescriptor; }
Gets the keyboard layout descriptive label to show in the user interface.
Returns:The keyboard layout descriptive label.
/** * Gets the keyboard layout descriptive label to show in the user interface. * @return The keyboard layout descriptive label. */
public String getLabel() { return mLabel; }
Gets the name of the collection to which the keyboard layout belongs. This is the label of the broadcast receiver or application that provided the keyboard layout.
Returns:The keyboard layout collection name.
/** * Gets the name of the collection to which the keyboard layout belongs. This is * the label of the broadcast receiver or application that provided the keyboard layout. * @return The keyboard layout collection name. */
public String getCollection() { return mCollection; }
Gets the locales that this keyboard layout is intended for. This may be empty if a locale has not been assigned to this keyboard layout.
Returns:The keyboard layout's intended locale.
/** * Gets the locales that this keyboard layout is intended for. * This may be empty if a locale has not been assigned to this keyboard layout. * @return The keyboard layout's intended locale. */
public LocaleList getLocales() { return mLocales; }
Gets the vendor ID of the hardware device this keyboard layout is intended for. Returns -1 if this is not specific to any piece of hardware.
Returns:The hardware vendor ID of the keyboard layout's intended device.
/** * Gets the vendor ID of the hardware device this keyboard layout is intended for. * Returns -1 if this is not specific to any piece of hardware. * @return The hardware vendor ID of the keyboard layout's intended device. */
public int getVendorId() { return mVendorId; }
Gets the product ID of the hardware device this keyboard layout is intended for. Returns -1 if this is not specific to any piece of hardware.
Returns:The hardware product ID of the keyboard layout's intended device.
/** * Gets the product ID of the hardware device this keyboard layout is intended for. * Returns -1 if this is not specific to any piece of hardware. * @return The hardware product ID of the keyboard layout's intended device. */
public int getProductId() { return mProductId; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mDescriptor); dest.writeString(mLabel); dest.writeString(mCollection); dest.writeInt(mPriority); mLocales.writeToParcel(dest, 0); dest.writeInt(mVendorId); dest.writeInt(mProductId); } @Override public int compareTo(KeyboardLayout another) { // Note that these arguments are intentionally flipped since you want higher priority // keyboards to be listed before lower priority keyboards. int result = Integer.compare(another.mPriority, mPriority); if (result == 0) { result = mLabel.compareToIgnoreCase(another.mLabel); } if (result == 0) { result = mCollection.compareToIgnoreCase(another.mCollection); } return result; } @Override public String toString() { if (mCollection.isEmpty()) { return mLabel; } return mLabel + " - " + mCollection; } }