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