/* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.tv.data.api; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.support.annotation.Nullable; import com.android.tv.util.images.ImageLoader.ImageLoaderCallback; /** * Interface for {@link com.android.tv.data.ChannelImpl}. * *

NOTE Normally you should not use an interface for a data object like {@code * ChannelImpl}, however there are many circular dependencies. An interface is the easiest way to * break the cycles. */ public interface Channel { long INVALID_ID = -1; int LOAD_IMAGE_TYPE_CHANNEL_LOGO = 1; int LOAD_IMAGE_TYPE_APP_LINK_ICON = 2; int LOAD_IMAGE_TYPE_APP_LINK_POSTER_ART = 3; /** * When a TIS doesn't provide any information about app link, and it doesn't have a leanback * launch intent, there will be no app link card for the TIS. */ int APP_LINK_TYPE_NONE = -1; /** * When a TIS provide a specific app link information, the app link card will be {@code * APP_LINK_TYPE_CHANNEL} which contains all the provided information. */ int APP_LINK_TYPE_CHANNEL = 1; /** * When a TIS doesn't provide a specific app link information, but the app has a leanback launch * intent, the app link card will be {@code APP_LINK_TYPE_APP} which launches the application. */ int APP_LINK_TYPE_APP = 2; /** Channel number delimiter between major and minor parts. */ char CHANNEL_NUMBER_DELIMITER = '-'; long getId(); Uri getUri(); String getPackageName(); String getInputId(); String getType(); String getDisplayNumber(); @Nullable String getDisplayName(); String getDescription(); String getVideoFormat(); boolean isPassthrough(); String getDisplayText(); String getAppLinkText(); int getAppLinkColor(); String getAppLinkIconUri(); String getAppLinkPosterArtUri(); String getAppLinkIntentUri(); String getNetworkAffiliation(); String getLogoUri(); boolean isRecordingProhibited(); boolean isPhysicalTunerChannel(); boolean isBrowsable(); boolean isSearchable(); boolean isLocked(); boolean hasSameReadOnlyInfo(Channel mCurrentChannel); void setChannelLogoExist(boolean result); void setBrowsable(boolean browsable); void setLocked(boolean locked); void copyFrom(Channel channel); void setLogoUri(String logoUri); void setNetworkAffiliation(String networkAffiliation); boolean channelLogoExists(); void loadBitmap( Context context, int loadImageTypeChannelLogo, int mChannelLogoImageViewWidth, int mChannelLogoImageViewHeight, ImageLoaderCallback channelLogoCallback); int getAppLinkType(Context context); Intent getAppLinkIntent(Context context); void prefetchImage( Context mContext, int loadImageTypeChannelLogo, int mPosterArtWidth, int mPosterArtHeight); }