1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193
|
/*
* Copyright (C) 2015 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.bluetooth;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;
import java.util.HashMap;
import java.util.Map;
/**
* Class used to identify settings associated with the player on AG.
*
* {@hide}
*/
public final class BluetoothAvrcpPlayerSettings implements Parcelable {
public static final String TAG = "BluetoothAvrcpPlayerSettings";
/**
* Equalizer setting.
*/
public static final int SETTING_EQUALIZER = 0x01;
/**
* Repeat setting.
*/
public static final int SETTING_REPEAT = 0x02;
/**
* Shuffle setting.
*/
public static final int SETTING_SHUFFLE = 0x04;
/**
* Scan mode setting.
*/
public static final int SETTING_SCAN = 0x08;
/**
* Invalid state.
*
* Used for returning error codes.
*/
public static final int STATE_INVALID = -1;
/**
* OFF state.
*
* Denotes a general OFF state. Applies to all settings.
*/
public static final int STATE_OFF = 0x00;
/**
* ON state.
*
* Applies to {@link SETTING_EQUALIZER}.
*/
public static final int STATE_ON = 0x01;
/**
* Single track repeat.
*
* Applies only to {@link SETTING_REPEAT}.
*/
public static final int STATE_SINGLE_TRACK = 0x02;
/**
* All track repeat/shuffle.
*
* Applies to {@link #SETTING_REPEAT}, {@link #SETTING_SHUFFLE} and {@link #SETTING_SCAN}.
*/
public static final int STATE_ALL_TRACK = 0x03;
/**
* Group repeat/shuffle.
*
* Applies to {@link #SETTING_REPEAT}, {@link #SETTING_SHUFFLE} and {@link #SETTING_SCAN}.
*/
public static final int STATE_GROUP = 0x04;
/**
* List of supported settings ORed.
*/
private int mSettings;
/**
* Hash map of current capability values.
*/
private Map<Integer, Integer> mSettingsValue = new HashMap<Integer, Integer>();
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mSettings);
out.writeInt(mSettingsValue.size());
for (int k : mSettingsValue.keySet()) {
out.writeInt(k);
out.writeInt(mSettingsValue.get(k));
}
}
public static final @android.annotation.NonNull Parcelable.Creator<BluetoothAvrcpPlayerSettings> CREATOR =
new Parcelable.Creator<BluetoothAvrcpPlayerSettings>() {
public BluetoothAvrcpPlayerSettings createFromParcel(Parcel in) {
return new BluetoothAvrcpPlayerSettings(in);
}
public BluetoothAvrcpPlayerSettings[] newArray(int size) {
return new BluetoothAvrcpPlayerSettings[size];
}
};
private BluetoothAvrcpPlayerSettings(Parcel in) {
mSettings = in.readInt();
int numSettings = in.readInt();
for (int i = 0; i < numSettings; i++) {
mSettingsValue.put(in.readInt(), in.readInt());
}
}
/**
* Create a new player settings object.
*
* @param settings a ORed value of SETTINGS_* defined above.
*/
public BluetoothAvrcpPlayerSettings(int settings) {
mSettings = settings;
}
/**
* Get the supported settings.
*
* @return int ORed value of supported settings.
*/
public int getSettings() {
return mSettings;
}
/**
* Add a setting value.
*
* The setting must be part of possible settings in {@link getSettings()}.
*
* @param setting setting config.
* @param value value for the setting.
* @throws IllegalStateException if the setting is not supported.
*/
public void addSettingValue(int setting, int value) {
if ((setting & mSettings) == 0) {
Log.e(TAG, "Setting not supported: " + setting + " " + mSettings);
throw new IllegalStateException("Setting not supported: " + setting);
}
mSettingsValue.put(setting, value);
}
/**
* Get a setting value.
*
* The setting must be part of possible settings in {@link getSettings()}.
*
* @param setting setting config.
* @return value value for the setting.
* @throws IllegalStateException if the setting is not supported.
*/
public int getSettingValue(int setting) {
if ((setting & mSettings) == 0) {
Log.e(TAG, "Setting not supported: " + setting + " " + mSettings);
throw new IllegalStateException("Setting not supported: " + setting);
}
Integer i = mSettingsValue.get(setting);
if (i == null) return -1;
return i;
}
}
|