diff options
Diffstat (limited to 'usbtuner/src/com/android/usbtuner/tvinput/BaseTunerTvInputService.java')
-rw-r--r-- | usbtuner/src/com/android/usbtuner/tvinput/BaseTunerTvInputService.java | 60 |
1 files changed, 24 insertions, 36 deletions
diff --git a/usbtuner/src/com/android/usbtuner/tvinput/BaseTunerTvInputService.java b/usbtuner/src/com/android/usbtuner/tvinput/BaseTunerTvInputService.java index cb25cfec..a24b6146 100644 --- a/usbtuner/src/com/android/usbtuner/tvinput/BaseTunerTvInputService.java +++ b/usbtuner/src/com/android/usbtuner/tvinput/BaseTunerTvInputService.java @@ -16,44 +16,40 @@ package com.android.usbtuner.tvinput; -import android.os.Handler; +import android.media.tv.TvInputService; import android.util.Log; import com.google.android.exoplayer.audio.AudioCapabilities; import com.google.android.exoplayer.audio.AudioCapabilitiesReceiver; -import com.android.tv.common.recording.RecordingTvInputService; -import com.android.tv.common.recording.TvRecording; -import com.android.usbtuner.exoplayer.CacheManager; +import com.android.usbtuner.exoplayer.cache.CacheManager; import java.util.Collections; import java.util.Set; import java.util.WeakHashMap; /** - * {@link BaseTunerTvInputService} serves TV channels coming from a usb tuner device. + * {@link BaseTunerTvInputService} serves TV channels coming from a tuner device. */ -public abstract class BaseTunerTvInputService extends RecordingTvInputService +public abstract class BaseTunerTvInputService extends TvInputService implements AudioCapabilitiesReceiver.Listener { private static final String TAG = "BaseTunerTvInputService"; private static final boolean DEBUG = false; // WeakContainer for {@link TvInputSessionImpl} - private final Set<TvInputSessionImpl> mTvInputSessions = Collections.newSetFromMap( - new WeakHashMap<TvInputSessionImpl, Boolean>()); + private final Set<TunerSession> mTunerSessions = Collections.newSetFromMap( + new WeakHashMap<TunerSession, Boolean>()); private ChannelDataManager mChannelDataManager; private AudioCapabilitiesReceiver mAudioCapabilitiesReceiver; private AudioCapabilities mAudioCapabilities; - protected CacheManager mCacheManager; + private CacheManager mCacheManager; @Override public void onCreate() { super.onCreate(); - if (DEBUG) { - Log.d(TAG, "onCreate"); - } + if (DEBUG) Log.d(TAG, "onCreate"); mChannelDataManager = new ChannelDataManager(getApplicationContext()); mAudioCapabilitiesReceiver = new AudioCapabilitiesReceiver(getApplicationContext(), this); mAudioCapabilitiesReceiver.register(); - maybeInitCacheManager(); + mCacheManager = createCacheManager(); if (mCacheManager == null) { Log.i(TAG, "Trickplay is disabled"); } else { @@ -61,13 +57,14 @@ public abstract class BaseTunerTvInputService extends RecordingTvInputService } } - protected abstract void maybeInitCacheManager(); + /** + * Creates {@CacheManager}. It returns null, if storage in not enough. + */ + protected abstract CacheManager createCacheManager(); @Override public void onDestroy() { - if (DEBUG) { - Log.d(TAG, "onDestroy"); - } + if (DEBUG) Log.d(TAG, "onDestroy"); super.onDestroy(); mChannelDataManager.release(); mAudioCapabilitiesReceiver.unregister(); @@ -77,36 +74,27 @@ public abstract class BaseTunerTvInputService extends RecordingTvInputService } @Override - public TvRecording.RecordingSession onCreateDvrSession(String inputId) { - return new RecordingSessionImpl(this, inputId, mChannelDataManager); + public RecordingSession onCreateRecordingSession(String inputId) { + return new TunerRecordingSession(this, inputId, mChannelDataManager); } @Override - public RecordingTvInputService.PlaybackSession onCreatePlaybackSession(String inputId) { - if (DEBUG) { - Log.d(TAG, "onCreateSession"); - } - final TvInputSessionImpl session = new TvInputSessionImpl( + public Session onCreateSession(String inputId) { + if (DEBUG) Log.d(TAG, "onCreateSession"); + final TunerSession session = new TunerSession( this, mChannelDataManager, mCacheManager); - mTvInputSessions.add(session); - session.notifyAudioCapabilitiesChanged(mAudioCapabilities); - new Handler().post(new Runnable() { - @Override - public void run() { - // STOPSHIP(DVR): Session methods cannot be called inside onCreatePlaybackSession. - // If DvrSession is added in API. we can call them inside onCreatePlaybackSession. - session.setOverlayViewEnabled(true); - } - }); + mTunerSessions.add(session); + session.setAudioCapabilities(mAudioCapabilities); + session.setOverlayViewEnabled(true); return session; } @Override public void onAudioCapabilitiesChanged(AudioCapabilities audioCapabilities) { mAudioCapabilities = audioCapabilities; - for (TvInputSessionImpl session : mTvInputSessions) { + for (TunerSession session : mTunerSessions) { if (!session.isReleased()) { - session.notifyAudioCapabilitiesChanged(audioCapabilities); + session.setAudioCapabilities(audioCapabilities); } } } |