aboutsummaryrefslogtreecommitdiff
path: root/src/com/android/tv/recommendation
diff options
context:
space:
mode:
authorSungsoo Lim <sungsoo@google.com>2014-06-05 13:37:01 +0900
committerSungsoo Lim <sungsoo@google.com>2014-06-06 10:14:33 +0900
commit566ceca13abf57ac85ac44993f19fcfa6959c986 (patch)
tree37ed1c7848072f7b297105ed0895fe5b66daba4d /src/com/android/tv/recommendation
parente78833548e244a5b4e191dadc5285a1afa0ad69a (diff)
downloadTV-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.java27
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;
}