12263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood/* 22263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * Copyright (C) 2009 The Android Open Source Project 32263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * 42263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 52263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * you may not use this file except in compliance with the License. 62263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * You may obtain a copy of the License at 72263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * 82263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 92263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * 102263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * Unless required by applicable law or agreed to in writing, software 112263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 122263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * See the License for the specific language governing permissions and 142263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * limitations under the License. 152263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood */ 162263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 172263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwoodpackage android.bluetooth; 182263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 192263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwoodimport android.os.Parcel; 202263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwoodimport android.os.Parcelable; 212263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 222263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood/** 232263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * Represents the audio configuration for a Bluetooth A2DP source device. 242263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * 252263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * {@see BluetoothA2dpSink} 262263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * 272263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * {@hide} 282263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood */ 292263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwoodpublic final class BluetoothAudioConfig implements Parcelable { 302263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 312263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood private final int mSampleRate; 322263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood private final int mChannelConfig; 332263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood private final int mAudioFormat; 342263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 352263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood public BluetoothAudioConfig(int sampleRate, int channelConfig, int audioFormat) { 362263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood mSampleRate = sampleRate; 372263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood mChannelConfig = channelConfig; 382263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood mAudioFormat = audioFormat; 392263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood } 402263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 412263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood @Override 422263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood public boolean equals(Object o) { 432263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood if (o instanceof BluetoothAudioConfig) { 442263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood BluetoothAudioConfig bac = (BluetoothAudioConfig)o; 452263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood return (bac.mSampleRate == mSampleRate && 462263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood bac.mChannelConfig == mChannelConfig && 472263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood bac.mAudioFormat == mAudioFormat); 482263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood } 492263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood return false; 502263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood } 512263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 522263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood @Override 532263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood public int hashCode() { 542263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood return mSampleRate | (mChannelConfig << 24) | (mAudioFormat << 28); 552263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood } 562263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 572263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood @Override 582263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood public String toString() { 592263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood return "{mSampleRate:" + mSampleRate + ",mChannelConfig:" + mChannelConfig 602263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood + ",mAudioFormat:" + mAudioFormat + "}"; 612263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood } 622263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 632263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood public int describeContents() { 642263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood return 0; 652263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood } 662263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 672263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood public static final Parcelable.Creator<BluetoothAudioConfig> CREATOR = 682263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood new Parcelable.Creator<BluetoothAudioConfig>() { 692263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood public BluetoothAudioConfig createFromParcel(Parcel in) { 702263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood int sampleRate = in.readInt(); 712263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood int channelConfig = in.readInt(); 722263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood int audioFormat = in.readInt(); 732263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood return new BluetoothAudioConfig(sampleRate, channelConfig, audioFormat); 742263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood } 752263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood public BluetoothAudioConfig[] newArray(int size) { 762263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood return new BluetoothAudioConfig[size]; 772263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood } 782263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood }; 792263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 802263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood public void writeToParcel(Parcel out, int flags) { 812263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood out.writeInt(mSampleRate); 822263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood out.writeInt(mChannelConfig); 832263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood out.writeInt(mAudioFormat); 842263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood } 852263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 862263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood /** 872263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * Returns the sample rate in samples per second 882263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * @return sample rate 892263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood */ 902263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood public int getSampleRate() { 912263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood return mSampleRate; 922263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood } 932263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 942263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood /** 952263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * Returns the channel configuration (either {@link android.media.AudioFormat#CHANNEL_IN_MONO} 962263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * or {@link android.media.AudioFormat#CHANNEL_IN_STEREO}) 972263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * @return channel configuration 982263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood */ 992263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood public int getChannelConfig() { 1002263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood return mChannelConfig; 1012263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood } 1022263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood 1032263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood /** 1042263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * Returns the channel audio format (either {@link android.media.AudioFormat#ENCODING_PCM_16BIT} 1052263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * or {@link android.media.AudioFormat#ENCODING_PCM_8BIT} 1062263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * @return audio format 1072263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood */ 1082263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood public int getAudioFormat() { 1092263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood return mAudioFormat; 1102263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood } 1112263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood} 112