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