1 /*
2  * Copyright 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.settingslib.media;
17 
18 import static android.media.MediaRoute2Info.TYPE_GROUP;
19 import static android.media.MediaRoute2Info.TYPE_REMOTE_CAR;
20 import static android.media.MediaRoute2Info.TYPE_REMOTE_COMPUTER;
21 import static android.media.MediaRoute2Info.TYPE_REMOTE_GAME_CONSOLE;
22 import static android.media.MediaRoute2Info.TYPE_REMOTE_SMARTPHONE;
23 import static android.media.MediaRoute2Info.TYPE_REMOTE_SMARTWATCH;
24 import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER;
25 import static android.media.MediaRoute2Info.TYPE_REMOTE_TABLET;
26 import static android.media.MediaRoute2Info.TYPE_REMOTE_TABLET_DOCKED;
27 import static android.media.MediaRoute2Info.TYPE_REMOTE_TV;
28 
29 import android.content.Context;
30 import android.graphics.drawable.Drawable;
31 import android.media.MediaRoute2Info;
32 import android.media.MediaRouter2Manager;
33 import android.media.RouteListingPreference;
34 
35 import androidx.annotation.VisibleForTesting;
36 
37 import com.android.settingslib.R;
38 
39 /**
40  * InfoMediaDevice extends MediaDevice to represents wifi device.
41  */
42 public class InfoMediaDevice extends MediaDevice {
43 
44     private static final String TAG = "InfoMediaDevice";
45 
InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName, RouteListingPreference.Item item)46     InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info,
47             String packageName, RouteListingPreference.Item item) {
48         super(context, routerManager, info, packageName, item);
49         initDeviceRecord();
50     }
51 
InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName)52     InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info,
53             String packageName) {
54         this(context, routerManager, info, packageName, null);
55     }
56 
57     @Override
getName()58     public String getName() {
59         return mRouteInfo.getName().toString();
60     }
61 
62     @Override
getSummary()63     public String getSummary() {
64         return mRouteInfo.getClientPackageName() != null
65                 ? mContext.getString(R.string.bluetooth_active_no_battery_level) : null;
66     }
67 
68     @Override
getIcon()69     public Drawable getIcon() {
70         return getIconWithoutBackground();
71     }
72 
73     @Override
getIconWithoutBackground()74     public Drawable getIconWithoutBackground() {
75         return mContext.getDrawable(getDrawableResIdByType());
76     }
77 
78     @VisibleForTesting
79     @SuppressWarnings("NewApi")
getDrawableResIdByType()80     int getDrawableResIdByType() {
81         int resId;
82         switch (mRouteInfo.getType()) {
83             case TYPE_GROUP:
84                 resId = R.drawable.ic_media_group_device;
85                 break;
86             case TYPE_REMOTE_TV:
87                 resId = R.drawable.ic_media_display_device;
88                 break;
89             case TYPE_REMOTE_TABLET:
90                 resId = R.drawable.ic_media_tablet;
91                 break;
92             case TYPE_REMOTE_TABLET_DOCKED:
93                 resId = R.drawable.ic_dock_device;
94                 break;
95             case TYPE_REMOTE_COMPUTER:
96                 resId = R.drawable.ic_media_computer;
97                 break;
98             case TYPE_REMOTE_GAME_CONSOLE:
99                 resId = R.drawable.ic_media_game_console;
100                 break;
101             case TYPE_REMOTE_CAR:
102                 resId = R.drawable.ic_media_car;
103                 break;
104             case TYPE_REMOTE_SMARTWATCH:
105                 resId = R.drawable.ic_media_smartwatch;
106                 break;
107             case TYPE_REMOTE_SMARTPHONE:
108                 resId = R.drawable.ic_smartphone;
109                 break;
110             case TYPE_REMOTE_SPEAKER:
111             default:
112                 resId = R.drawable.ic_media_speaker_device;
113                 break;
114         }
115         return resId;
116     }
117 
118     @Override
getId()119     public String getId() {
120         return MediaDeviceUtils.getId(mRouteInfo);
121     }
122 
isConnected()123     public boolean isConnected() {
124         return true;
125     }
126 }
127