blob: fb00952c562fcd4c0b4a42ac9b9baccc7ff160f4 [file] [log] [blame]
/*
* 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}.
*
* <p><b>NOTE</b> 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);
}