1632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn/* 2632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * Copyright (C) 2012 The Android Open Source Project 3632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * 4632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 5632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * you may not use this file except in compliance with the License. 6632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * You may obtain a copy of the License at 7632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * 8632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 9632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * 10632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * Unless required by applicable law or agreed to in writing, software 11632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 12632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * See the License for the specific language governing permissions and 14632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * limitations under the License. 15632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn */ 16632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn 17632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackbornpackage android.media; 18632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn 19632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackbornimport android.os.Parcel; 20632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackbornimport android.os.Parcelable; 21632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackbornimport android.text.TextUtils; 22632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn 23632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn/** 24632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * Information available from AudioService about the current routes. 25632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn * @hide 26632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn */ 27632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackbornpublic class AudioRoutesInfo implements Parcelable { 286156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock public static final int MAIN_SPEAKER = 0; 296156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock public static final int MAIN_HEADSET = 1<<0; 306156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock public static final int MAIN_HEADPHONES = 1<<1; 316156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock public static final int MAIN_DOCK_SPEAKERS = 1<<2; 326156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock public static final int MAIN_HDMI = 1<<3; 336156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock public static final int MAIN_USB = 1<<4; 34632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn 356156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock public CharSequence bluetoothName; 366156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock public int mainType = MAIN_SPEAKER; 37632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn 38632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn public AudioRoutesInfo() { 39632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn } 40632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn 41632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn public AudioRoutesInfo(AudioRoutesInfo o) { 426156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock bluetoothName = o.bluetoothName; 436156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock mainType = o.mainType; 44632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn } 45632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn 46632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn AudioRoutesInfo(Parcel src) { 476156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock bluetoothName = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(src); 486156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock mainType = src.readInt(); 49632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn } 50632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn 51632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn @Override 52632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn public int describeContents() { 53632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn return 0; 54632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn } 55632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn 56632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn @Override 5718687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo public String toString() { 5818687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo return getClass().getSimpleName() + "{ type=" + typeToString(mainType) 5918687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo + (TextUtils.isEmpty(bluetoothName) ? "" : ", bluetoothName=" + bluetoothName) 6018687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo + " }"; 6118687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo } 6218687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo 6318687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo private static String typeToString(int type) { 6418687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo if (type == MAIN_SPEAKER) return "SPEAKER"; 6518687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo if ((type & MAIN_HEADSET) != 0) return "HEADSET"; 6618687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo if ((type & MAIN_HEADPHONES) != 0) return "HEADPHONES"; 6718687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo if ((type & MAIN_DOCK_SPEAKERS) != 0) return "DOCK_SPEAKERS"; 6818687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo if ((type & MAIN_HDMI) != 0) return "HDMI"; 6918687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo if ((type & MAIN_USB) != 0) return "USB"; 7018687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo return Integer.toHexString(type); 7118687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo } 7218687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo 7318687b7a275b3782e63d52cdbe8ee9df191046e7Jae Seo @Override 74632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn public void writeToParcel(Parcel dest, int flags) { 756156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock TextUtils.writeToParcel(bluetoothName, dest, flags); 766156017c2217d0fbbbb03434986250ec6bbd69d8John Spurlock dest.writeInt(mainType); 77632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn } 78632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn 79632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn public static final Parcelable.Creator<AudioRoutesInfo> CREATOR 80632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn = new Parcelable.Creator<AudioRoutesInfo>() { 81632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn public AudioRoutesInfo createFromParcel(Parcel in) { 82632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn return new AudioRoutesInfo(in); 83632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn } 84632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn 85632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn public AudioRoutesInfo[] newArray(int size) { 86632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn return new AudioRoutesInfo[size]; 87632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn } 88632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn }; 89632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn} 90