/* * Copyright (C) 2015 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.dvr; import android.support.annotation.MainThread; import android.support.annotation.Nullable; import android.util.Range; import com.android.tv.common.recording.RecordedProgram; import java.util.List; /** * Read only data manager. */ @MainThread public interface DvrDataManager { long NEXT_START_TIME_NOT_FOUND = -1; boolean isInitialized(); /** * Returns past recordings. */ List getRecordedPrograms(); /** * Returns all {@link ScheduledRecording} regardless of state. */ List getAllScheduledRecordings(); /** * Returns started recordings that expired. */ List getStartedRecordings(); /** * Returns scheduled but not started recordings that have not expired. */ List getNonStartedScheduledRecordings(); /** * Returns season recordings. */ List getSeasonRecordings(); /** * Returns the next start time after {@code time} or {@link #NEXT_START_TIME_NOT_FOUND} * if none is found. * * @param time time milliseconds */ long getNextScheduledStartTimeAfter(long time); /** * Returns a list of all Recordings with a overlap with the given time period inclusive. * *

A recording overlaps with a period when * {@code recording.getStartTime() <= period.getUpper() && * recording.getEndTime() >= period.getLower()}. * * @param period a time period in milliseconds. */ List getRecordingsThatOverlapWith(Range period); /** * Add a {@link ScheduledRecordingListener}. */ void addScheduledRecordingListener(ScheduledRecordingListener scheduledRecordingListener); /** * Remove a {@link ScheduledRecordingListener}. */ void removeScheduledRecordingListener(ScheduledRecordingListener scheduledRecordingListener); /** * Add a {@link RecordedProgramListener}. */ void addRecordedProgramListener(RecordedProgramListener listener); /** * Remove a {@link RecordedProgramListener}. */ void removeRecordedProgramListener(RecordedProgramListener listener); /** * Returns the scheduled recording program with the given recordingId or null if is not found. */ @Nullable ScheduledRecording getScheduledRecording(long recordingId); /** * Returns the scheduled recording program with the given programId or null if is not found. */ @Nullable ScheduledRecording getScheduledRecordingForProgramId(long programId); /** * Returns the recorded program with the given recordingId or null if is not found. */ @Nullable RecordedProgram getRecordedProgram(long recordingId); interface ScheduledRecordingListener { void onScheduledRecordingAdded(ScheduledRecording scheduledRecording); void onScheduledRecordingRemoved(ScheduledRecording scheduledRecording); void onScheduledRecordingStatusChanged(ScheduledRecording scheduledRecording); } interface RecordedProgramListener { void onRecordedProgramAdded(RecordedProgram recordedProgram); void onRecordedProgramChanged(RecordedProgram recordedProgram); void onRecordedProgramRemoved(RecordedProgram recordedProgram); } }