TunerInputInfoUtils.java revision 65fda1eaa94968bb55d5ded10dcb0b3f37fb05f2
165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko/* 265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Copyright (C) 2016 The Android Open Source Project 365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * 465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License"); 565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * you may not use this file except in compliance with the License. 665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * You may obtain a copy of the License at 765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * 865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * http://www.apache.org/licenses/LICENSE-2.0 965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * 1065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Unless required by applicable law or agreed to in writing, software 1165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS, 1265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * See the License for the specific language governing permissions and 1465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * limitations under the License. 1565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko */ 1665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 1765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkopackage com.android.tv.tuner.util; 1865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 1965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.annotation.TargetApi; 2065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.content.ComponentName; 2165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.content.Context; 2265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.media.tv.TvInputInfo; 2365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.media.tv.TvInputManager; 2465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.os.Build; 2565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.support.annotation.Nullable; 2665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.support.v4.os.BuildCompat; 2765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.util.Log; 2865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 2965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport com.android.tv.common.feature.CommonFeatures; 3065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport com.android.tv.tuner.R; 3165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport com.android.tv.tuner.TunerHal; 3265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport com.android.tv.tuner.tvinput.TunerTvInputService; 3365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 3465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko/** 3565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Utility class for providing tuner input info. 3665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko */ 3765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkopublic class TunerInputInfoUtils { 3865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko private static final String TAG = "TunerInputInfoUtils"; 3965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko private static final boolean DEBUG = false; 4065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 4165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko /** 4265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Builds tuner input's info. 4365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko */ 4465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko @Nullable 4565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko @TargetApi(Build.VERSION_CODES.N) 4665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko public static TvInputInfo buildTunerInputInfo(Context context, boolean fromBuiltInTuner) { 4765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko int numOfDevices = TunerHal.getTunerCount(context); 4865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko if (numOfDevices == 0) { 4965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko return null; 5065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 5165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko TvInputInfo.Builder builder = new TvInputInfo.Builder(context, new ComponentName(context, 5265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko TunerTvInputService.class)); 5365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko if (fromBuiltInTuner) { 5465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko builder.setLabel(R.string.bt_app_name); 5565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } else { 5665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko builder.setLabel(R.string.ut_app_name); 5765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 5865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko try { 5965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko return builder.setCanRecord(CommonFeatures.DVR.isEnabled(context)) 6065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko .setTunerCount(numOfDevices) 6165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko .build(); 6265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } catch (NullPointerException e) { 6365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko // TunerTvInputService is not enabled. 6465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko return null; 6565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 6665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 6765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 6865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko /** 6965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Updates tuner input's info. 7065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * 7165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * @param context {@link Context} instance 7265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko */ 7365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko public static void updateTunerInputInfo(Context context) { 7465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko if (BuildCompat.isAtLeastN()) { 7565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko if (DEBUG) Log.d(TAG, "updateTunerInputInfo()"); 7665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko TvInputInfo info = buildTunerInputInfo(context, isBuiltInTuner(context)); 7765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko if (info != null) { 7865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko ((TvInputManager) context.getSystemService(Context.TV_INPUT_SERVICE)) 7965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko .updateTvInputInfo(info); 8065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko if (DEBUG) { 8165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko Log.d(TAG, "TvInputInfo [" + info.loadLabel(context) 8265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko + "] updated: " + info.toString()); 8365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 8465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } else { 8565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko if (DEBUG) { 8665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko Log.d(TAG, "Updating tuner input's info failed. Input is not ready yet."); 8765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 8865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 8965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 9065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 9165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 9265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko /** 9365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Returns if the current tuner service is for a built-in tuner. 9465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * 9565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * @param context {@link Context} instance 9665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko */ 9765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko public static boolean isBuiltInTuner(Context context) { 9865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko return TunerHal.getTunerType(context) == TunerHal.TUNER_TYPE_BUILT_IN; 9965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 10065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko} 101