diff options
author | Sungsoo Lim <sungsoo@google.com> | 2014-06-05 13:37:01 +0900 |
---|---|---|
committer | Sungsoo Lim <sungsoo@google.com> | 2014-06-06 10:14:33 +0900 |
commit | 566ceca13abf57ac85ac44993f19fcfa6959c986 (patch) | |
tree | 37ed1c7848072f7b297105ed0895fe5b66daba4d /src/com/android/tv/recommendation | |
parent | e78833548e244a5b4e191dadc5285a1afa0ad69a (diff) | |
download | TV-566ceca13abf57ac85ac44993f19fcfa6959c986.tar.gz |
Show top 2 results of the TV recommendation in LeanbackLauncher
Bug: 15415303
Change-Id: If90e1d13895fcf905bc1b4e2d2c33463c3883170
Diffstat (limited to 'src/com/android/tv/recommendation')
-rw-r--r-- | src/com/android/tv/recommendation/TvRecommendation.java | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/com/android/tv/recommendation/TvRecommendation.java b/src/com/android/tv/recommendation/TvRecommendation.java index fd6cd409..a8129007 100644 --- a/src/com/android/tv/recommendation/TvRecommendation.java +++ b/src/com/android/tv/recommendation/TvRecommendation.java @@ -41,17 +41,13 @@ public class TvRecommendation { private static final int MATCH_CHANNEL_ID = 1; private static final int MATCH_WATCHED_PROGRAM_ID = 2; - private static final List<TvRecommenderWrapper> sTvRecommenders = - new ArrayList<TvRecommenderWrapper>(); - static { sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH); sUriMatcher.addURI(TvContract.AUTHORITY, "channel/#", MATCH_CHANNEL_ID); sUriMatcher.addURI(TvContract.AUTHORITY, "watched_program/#", MATCH_WATCHED_PROGRAM_ID); - - sTvRecommenders.add(new TvRecommenderWrapper(new RecentChannelRecommender())); } + private final List<TvRecommenderWrapper> mTvRecommenders; private final Map<Long, ChannelRecord> mChannelRecordMap; // TODO: Consider to define each observer rather than the list or observers. private final List<ContentObserver> mContentObservers; @@ -75,6 +71,7 @@ public class TvRecommendation { mContentObservers = new ArrayList<ContentObserver>(); mHandler = handler; mIncludeRecommendedOnly = includeRecommendedOnly; + mTvRecommenders = new ArrayList<TvRecommenderWrapper>(); registerContentObservers(); buildChannelRecordMap(); } @@ -84,6 +81,15 @@ public class TvRecommendation { mChannelRecordMap.clear(); } + public void registerTvRecommender(TvRecommender recommender) { + registerTvRecommender(recommender, + TvRecommenderWrapper.DEFAULT_BASE_SCORE, TvRecommenderWrapper.DEFAULT_WEIGHT); + } + + public void registerTvRecommender(TvRecommender recommender, double baseScore, double weight) { + mTvRecommenders.add(new TvRecommenderWrapper(recommender, baseScore, weight)); + } + /** * Get the channel list of recommendation up to {@code n} or the number of channels. * @@ -96,7 +102,7 @@ public class TvRecommendation { ArrayList<ChannelRecord> results = new ArrayList<ChannelRecord>(); for (ChannelRecord cr : mChannelRecordMap.values()) { double maxScore = TvRecommender.NOT_RECOMMENDED; - for (TvRecommenderWrapper recommender : sTvRecommenders) { + for (TvRecommenderWrapper recommender : mTvRecommenders) { double score = recommender.calculateScaledScore(cr); if (score > maxScore) { maxScore = score;; @@ -132,7 +138,7 @@ public class TvRecommendation { if (cursor != null && cursor.moveToFirst()) { ChannelRecord channelRecord = updateChannelRecordFromWatchedProgramCursor(cursor); - for (TvRecommenderWrapper recommender : sTvRecommenders) { + for (TvRecommenderWrapper recommender : mTvRecommenders) { recommender.onNewWatchLog(channelRecord); } } @@ -252,12 +258,15 @@ public class TvRecommendation { public static class ChannelRecord implements Comparable<ChannelRecord> { private final Channel mChannel; + private final Uri mChannelUri; private long mLastWatchedTimeMs; private long mLastWatchDurationMs; private double mScore; public ChannelRecord(Channel channel) { mChannel = channel; + mChannelUri = ContentUris.withAppendedId(TvContract.Channels.CONTENT_URI, + channel.getId()); mLastWatchedTimeMs = 0l; mLastWatchDurationMs = 0; } @@ -266,6 +275,10 @@ public class TvRecommendation { return mChannel; } + public Uri getChannelUri() { + return mChannelUri; + } + public long getLastWatchedTimeMs() { return mLastWatchedTimeMs; } |