diff options
author | nchalko <nchalko@google.com> | 2019-01-04 11:17:12 -0800 |
---|---|---|
committer | Nick Chalko <nchalko@google.com> | 2019-02-12 22:07:08 -0800 |
commit | ffe86338164df563234b2308f9bce1f0a30794f9 (patch) | |
tree | cbd4c2124879187c915b6976729ab85e236a57cd | |
parent | 2edaccd4827bb8eed4b3e52b44ae63c221cdf93e (diff) | |
download | TV-ffe86338164df563234b2308f9bce1f0a30794f9.tar.gz |
Move creating a tuner setup intent to the TunerInputController
PiperOrigin-RevId: 227884397
Change-Id: I9a437ce6438b45fdabc034aabc0e05c4aae55e85
10 files changed, 33 insertions, 90 deletions
diff --git a/common/src/com/android/tv/common/BaseApplication.java b/common/src/com/android/tv/common/BaseApplication.java index 871e4613..45c32567 100644 --- a/common/src/com/android/tv/common/BaseApplication.java +++ b/common/src/com/android/tv/common/BaseApplication.java @@ -18,7 +18,6 @@ package com.android.tv.common; import android.annotation.TargetApi; import android.content.Context; -import android.content.Intent; import android.os.Build; import android.os.StrictMode; import android.support.annotation.VisibleForTesting; @@ -105,7 +104,4 @@ public abstract class BaseApplication extends DaggerApplication implements BaseS } return mRecordingStorageStatusManager; } - - @Override - public abstract Intent getTunerSetupIntent(Context context); } diff --git a/common/src/com/android/tv/common/BaseSingletons.java b/common/src/com/android/tv/common/BaseSingletons.java index f5ab636c..10530617 100644 --- a/common/src/com/android/tv/common/BaseSingletons.java +++ b/common/src/com/android/tv/common/BaseSingletons.java @@ -16,8 +16,6 @@ package com.android.tv.common; -import android.content.Context; -import android.content.Intent; import com.android.tv.common.buildtype.HasBuildType; import com.android.tv.common.flags.has.HasCloudEpgFlags; import com.android.tv.common.flags.has.HasConcurrentDvrPlaybackFlags; @@ -31,6 +29,4 @@ public interface BaseSingletons Clock getClock(); RecordingStorageStatusManager getRecordingStorageStatusManager(); - - Intent getTunerSetupIntent(Context context); } diff --git a/src/com/android/tv/MainActivity.java b/src/com/android/tv/MainActivity.java index 12b16340..72487f41 100644 --- a/src/com/android/tv/MainActivity.java +++ b/src/com/android/tv/MainActivity.java @@ -438,12 +438,14 @@ public class MainActivity extends Activity public void onInputAdded(String inputId) { if (mOptionalBuiltInTunerManager.isPresent() && CommonPreferences.shouldShowSetupActivity(MainActivity.this)) { - String tunerInputId = - mOptionalBuiltInTunerManager.get().getEmbeddedTunerInputId(); + BuiltInTunerManager builtInTunerManager = + mOptionalBuiltInTunerManager.get(); + String tunerInputId = builtInTunerManager.getEmbeddedTunerInputId(); if (tunerInputId.equals(inputId)) { Intent intent = - TvSingletons.getSingletons(MainActivity.this) - .getTunerSetupIntent(MainActivity.this); + builtInTunerManager + .getTunerInputController() + .createSetupIntent(MainActivity.this); startActivity(intent); CommonPreferences.setShouldShowSetupActivity(MainActivity.this, false); mSetupUtils.markAsKnownInput(tunerInputId); diff --git a/src/com/android/tv/app/LiveTvApplication.java b/src/com/android/tv/app/LiveTvApplication.java index c65d45eb..3717db98 100644 --- a/src/com/android/tv/app/LiveTvApplication.java +++ b/src/com/android/tv/app/LiveTvApplication.java @@ -16,15 +16,11 @@ package com.android.tv.app; -import android.content.Context; -import android.content.Intent; -import com.android.tv.TvActivity; import com.android.tv.TvApplication; import com.android.tv.TvSingletons; import com.android.tv.analytics.Analytics; import com.android.tv.analytics.StubAnalytics; import com.android.tv.analytics.Tracker; -import com.android.tv.common.actions.InputSetupActionUtils; import com.android.tv.common.dagger.ApplicationModule; import com.android.tv.common.experiments.ExperimentLoader; import com.android.tv.common.flags.impl.DefaultBackendKnobsFlags; @@ -32,13 +28,11 @@ import com.android.tv.common.flags.impl.DefaultCloudEpgFlags; import com.android.tv.common.flags.impl.DefaultConcurrentDvrPlaybackFlags; import com.android.tv.common.flags.impl.DefaultUiFlags; import com.android.tv.common.singletons.HasSingletons; -import com.android.tv.common.util.CommonUtils; import com.android.tv.data.epg.EpgReader; import com.android.tv.data.epg.StubEpgReader; import com.android.tv.modules.TvSingletonsModule; import com.android.tv.perf.PerformanceMonitor; import com.android.tv.perf.PerformanceMonitorManagerFactory; -import com.android.tv.tuner.setup.LiveTvTunerSetupActivity; import com.android.tv.tunerinputcontroller.BuiltInTunerManager; import com.android.tv.util.account.AccountHelper; import com.android.tv.util.account.AccountHelperImpl; @@ -70,7 +64,6 @@ public class LiveTvApplication extends TvApplication implements HasSingletons<Tv private AccountHelper mAccountHelper; private Analytics mAnalytics; private Tracker mTracker; - private String mEmbeddedInputId; private ExperimentLoader mExperimentLoader; private PerformanceMonitor mPerformanceMonitor; @@ -140,19 +133,6 @@ public class LiveTvApplication extends TvApplication implements HasSingletons<Tv } @Override - public Intent getTunerSetupIntent(Context context) { - // Make an intent to launch the setup activity of TV tuner input. - Intent intent = - CommonUtils.createSetupIntent( - new Intent(context, LiveTvTunerSetupActivity.class), mEmbeddedInputId); - intent.putExtra(InputSetupActionUtils.EXTRA_INPUT_ID, mEmbeddedInputId); - Intent tvActivityIntent = new Intent(context, TvActivity.class); - - intent.putExtra(InputSetupActionUtils.EXTRA_ACTIVITY_AFTER_COMPLETION, tvActivityIntent); - return intent; - } - - @Override public DefaultCloudEpgFlags getCloudEpgFlags() { return mCloudEpgFlags; } diff --git a/src/com/android/tv/tunerinputcontroller/TunerInputController.java b/src/com/android/tv/tunerinputcontroller/TunerInputController.java index 6c3df1c3..f822dbe0 100644 --- a/src/com/android/tv/tunerinputcontroller/TunerInputController.java +++ b/src/com/android/tv/tunerinputcontroller/TunerInputController.java @@ -17,10 +17,13 @@ package com.android.tv.tunerinputcontroller; import android.content.Context; +import android.content.Intent; /** Controls the package visibility of built in tuner services. */ public interface TunerInputController { + Intent createSetupIntent(Context context); + void onCheckingUsbTunerStatus(Context context, String action); void executeNetworkTunerDiscoveryAsyncTask(Context context); diff --git a/tests/common/src/com/android/tv/testing/TestSingletonApp.java b/tests/common/src/com/android/tv/testing/TestSingletonApp.java index c918ba84..f1d139e2 100644 --- a/tests/common/src/com/android/tv/testing/TestSingletonApp.java +++ b/tests/common/src/com/android/tv/testing/TestSingletonApp.java @@ -17,8 +17,6 @@ package com.android.tv.testing; import android.app.Application; -import android.content.Context; -import android.content.Intent; import android.media.tv.TvInputManager; import android.os.AsyncTask; import com.android.tv.InputSessionManager; @@ -228,11 +226,6 @@ public class TestSingletonApp extends Application } @Override - public Intent getTunerSetupIntent(Context context) { - return null; - } - - @Override public boolean isRunningInMainProcess() { return false; } diff --git a/tests/unit/src/com/android/tv/util/MockTvSingletons.java b/tests/unit/src/com/android/tv/util/MockTvSingletons.java index 534be837..fd4b43cf 100644 --- a/tests/unit/src/com/android/tv/util/MockTvSingletons.java +++ b/tests/unit/src/com/android/tv/util/MockTvSingletons.java @@ -17,7 +17,6 @@ package com.android.tv.util; import android.content.Context; -import android.content.Intent; import com.android.tv.InputSessionManager; import com.android.tv.MainActivityWrapper; import com.android.tv.TvApplication; @@ -184,11 +183,6 @@ public class MockTvSingletons implements TvSingletons, HasSingletons<TvSingleton } @Override - public Intent getTunerSetupIntent(Context context) { - return mApp.getTunerSetupIntent(context); - } - - @Override public boolean isRunningInMainProcess() { return mApp.isRunningInMainProcess(); } diff --git a/tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTuner.java b/tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTuner.java index bbb67791..1463dd45 100644 --- a/tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTuner.java +++ b/tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTuner.java @@ -17,20 +17,15 @@ package com.android.tv.tuner.sample.dvb.app; import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; import android.media.tv.TvContract; import com.android.tv.common.BaseApplication; -import com.android.tv.common.actions.InputSetupActionUtils; import com.android.tv.common.flags.impl.DefaultCloudEpgFlags; import com.android.tv.common.flags.impl.DefaultConcurrentDvrPlaybackFlags; import com.android.tv.common.flags.impl.DefaultExoplayer2Flags; import com.android.tv.common.singletons.HasSingletons; -import com.android.tv.common.util.CommonUtils; import com.android.tv.tuner.modules.TunerSingletonsModule; import com.android.tv.tuner.sample.dvb.singletons.SampleDvbSingletons; import com.android.tv.tuner.sample.dvb.tvinput.SampleDvbTunerTvInputService; -import com.android.tv.tuner.setup.LiveTvTunerSetupActivity; import com.android.tv.tuner.tvinput.factory.TunerSessionFactory; import com.android.tv.tuner.tvinput.factory.TunerSessionFactoryImpl; import dagger.android.AndroidInjector; @@ -55,16 +50,6 @@ public class SampleDvbTuner extends BaseApplication } @Override - public Intent getTunerSetupIntent(Context context) { - // Make an intent to launch the setup activity of TV tuner input. - Intent intent = - CommonUtils.createSetupIntent( - new Intent(context, LiveTvTunerSetupActivity.class), mEmbeddedInputId); - intent.putExtra(InputSetupActionUtils.EXTRA_INPUT_ID, mEmbeddedInputId); - return intent; - } - - @Override public synchronized String getEmbeddedTunerInputId() { if (mEmbeddedInputId == null) { mEmbeddedInputId = diff --git a/tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTuner.java b/tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTuner.java index 5eb44e98..45015298 100644 --- a/tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTuner.java +++ b/tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTuner.java @@ -17,20 +17,15 @@ package com.android.tv.tuner.sample.network.app; import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; import android.media.tv.TvContract; import com.android.tv.common.BaseApplication; -import com.android.tv.common.actions.InputSetupActionUtils; import com.android.tv.common.flags.impl.DefaultCloudEpgFlags; import com.android.tv.common.flags.impl.DefaultConcurrentDvrPlaybackFlags; import com.android.tv.common.flags.impl.DefaultExoplayer2Flags; import com.android.tv.common.singletons.HasSingletons; -import com.android.tv.common.util.CommonUtils; import com.android.tv.tuner.modules.TunerSingletonsModule; import com.android.tv.tuner.sample.network.singletons.SampleNetworkSingletons; import com.android.tv.tuner.sample.network.tvinput.SampleNetworkTunerTvInputService; -import com.android.tv.tuner.setup.LiveTvTunerSetupActivity; import com.android.tv.tuner.tvinput.factory.TunerSessionFactory; import com.android.tv.tuner.tvinput.factory.TunerSessionFactoryImpl; import dagger.android.AndroidInjector; @@ -55,16 +50,6 @@ public class SampleNetworkTuner extends BaseApplication } @Override - public Intent getTunerSetupIntent(Context context) { - // Make an intent to launch the setup activity of TV tuner input. - Intent intent = - CommonUtils.createSetupIntent( - new Intent(context, LiveTvTunerSetupActivity.class), mEmbeddedInputId); - intent.putExtra(InputSetupActionUtils.EXTRA_INPUT_ID, mEmbeddedInputId); - return intent; - } - - @Override public synchronized String getEmbeddedTunerInputId() { if (mEmbeddedInputId == null) { mEmbeddedInputId = diff --git a/tuner/src/com/android/tv/tuner/setup/BaseTunerSetupActivity.java b/tuner/src/com/android/tv/tuner/setup/BaseTunerSetupActivity.java index 2b269740..f76e5736 100644 --- a/tuner/src/com/android/tv/tuner/setup/BaseTunerSetupActivity.java +++ b/tuner/src/com/android/tv/tuner/setup/BaseTunerSetupActivity.java @@ -22,6 +22,7 @@ import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; +import android.content.Intent; import android.content.pm.PackageManager; import android.content.res.Resources; import android.graphics.Bitmap; @@ -36,7 +37,6 @@ import android.support.v4.app.NotificationCompat; import android.text.TextUtils; import android.util.Log; import android.widget.Toast; -import com.android.tv.common.BaseApplication; import com.android.tv.common.SoftPreconditions; import com.android.tv.common.feature.CommonFeatures; import com.android.tv.common.ui.setup.SetupActivity; @@ -333,25 +333,28 @@ public abstract class BaseTunerSetupActivity extends SetupActivity { /** * A callback to be invoked when the TvInputService is enabled or disabled. * + * @param tunerSetupIntent * @param context a {@link Context} instance * @param enabled {@code true} for the {@link TunerTvInputService} to be enabled; otherwise * {@code false} */ - public static void onTvInputEnabled(Context context, boolean enabled, Integer tunerType) { + public static void onTvInputEnabled( + Context context, boolean enabled, Integer tunerType, Intent tunerSetupIntent) { // Send a notification for tuner setup if there's no channels and the tuner TV input // setup has been not done. boolean channelScanDoneOnPreference = TunerPreferences.isScanDone(context); int channelCountOnPreference = TunerPreferences.getScannedChannelCount(context); if (enabled && !channelScanDoneOnPreference && channelCountOnPreference == 0) { TunerPreferences.setShouldShowSetupActivity(context, true); - sendNotification(context, tunerType); + sendNotification(context, tunerType, tunerSetupIntent); } else { TunerPreferences.setShouldShowSetupActivity(context, false); cancelNotification(context); } } - private static void sendNotification(Context context, Integer tunerType) { + private static void sendNotification( + Context context, Integer tunerType, Intent tunerSetupIntent) { SoftPreconditions.checkState( tunerType != null, TAG, "tunerType is null when send notification"); if (tunerType == null) { @@ -374,16 +377,16 @@ public abstract class BaseTunerSetupActivity extends SetupActivity { } String contentText = resources.getString(contentTextId); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - sendNotificationInternal(context, contentTitle, contentText); + sendNotificationInternal(context, contentTitle, contentText, tunerSetupIntent); } else { Bitmap largeIcon = BitmapFactory.decodeResource(resources, R.drawable.recommendation_antenna); - sendRecommendationCard(context, contentTitle, contentText, largeIcon); + sendRecommendationCard(context, contentTitle, contentText, largeIcon, tunerSetupIntent); } } private static void sendNotificationInternal( - Context context, String contentTitle, String contentText) { + Context context, String contentTitle, String contentText, Intent tunerSetupIntent) { NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannel( @@ -400,7 +403,8 @@ public abstract class BaseTunerSetupActivity extends SetupActivity { context.getResources() .getIdentifier( TAG_ICON, TAG_DRAWABLE, context.getPackageName())) - .setContentIntent(createPendingIntentForSetupActivity(context)) + .setContentIntent( + createPendingIntentForSetupActivity(context, tunerSetupIntent)) .setVisibility(Notification.VISIBILITY_PUBLIC) .extend(new Notification.TvExtender()) .build(); @@ -410,10 +414,15 @@ public abstract class BaseTunerSetupActivity extends SetupActivity { /** * Sends the recommendation card to start the tuner TV input setup activity. * + * @param tunerSetupIntent * @param context a {@link Context} instance */ private static void sendRecommendationCard( - Context context, String contentTitle, String contentText, Bitmap largeIcon) { + Context context, + String contentTitle, + String contentText, + Bitmap largeIcon, + Intent tunerSetupIntent) { // Build and send the notification. Notification notification = new NotificationCompat.BigPictureStyle( @@ -431,7 +440,8 @@ public abstract class BaseTunerSetupActivity extends SetupActivity { TAG_DRAWABLE, context.getPackageName())) .setContentIntent( - createPendingIntentForSetupActivity(context))) + createPendingIntentForSetupActivity( + context, tunerSetupIntent))) .build(); NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); @@ -442,13 +452,12 @@ public abstract class BaseTunerSetupActivity extends SetupActivity { * Returns a {@link PendingIntent} to launch the tuner TV input service. * * @param context a {@link Context} instance + * @param tunerSetupIntent */ - private static PendingIntent createPendingIntentForSetupActivity(Context context) { + private static PendingIntent createPendingIntentForSetupActivity( + Context context, Intent tunerSetupIntent) { return PendingIntent.getActivity( - context, - 0, - BaseApplication.getSingletons(context).getTunerSetupIntent(context), - PendingIntent.FLAG_UPDATE_CURRENT); + context, 0, tunerSetupIntent, PendingIntent.FLAG_UPDATE_CURRENT); } /** Creates {@link Tuner} instances in a worker thread * */ |