使用 Rating class 的赞/不赞评分实施
Thumbs up/ Thumbs down rating implementation using Rating class
在我的媒体播放器应用程序(基于Android)中,我想实现一个“赞”/“不赞”评级系统。现在,由于框架提供了默认的 android.media.Rating
class 来处理不同类型的评级,我想出了一种方法来使用 Rating
class 来实现基于 Thumbs 的评级。
我已经编写了以下方法来设置向上、向下或未评级评级。
MediaMetadataCompat metadata; // initial metadata
public void setLiked() {
RatingCompat likedRating = RatingCompat.newThumbRating(true);
metadata = new MediaMetadataCompat
.Builder(metadata)
.putRating(MediaMetadataCompat.METADATA_KEY_USER_RATING, likedRating)
.build();
}
public void setDisliked() {
RatingCompat dislikedRating = RatingCompat.newThumbRating(false);
metadata = new MediaMetadataCompat
.Builder(metadata)
.putRating(MediaMetadataCompat.METADATA_KEY_USER_RATING, dislikedRating)
.build();
}
public void setUnrated() {
RatingCompat unratedRating = RatingCompat.newUnratedRating(RatingCompat.RATING_NONE);
metadata = new MediaMetadataCompat
.Builder(metadata)
.putRating(MediaMetadataCompat.METADATA_KEY_USER_RATING, unratedRating)
.build();
}
虽然我还没有测试这些方法,因为应用程序和模块都还没有完成。这是对歌曲应用评级的正确方法吗?我也找不到检索收视率的方法。
我已经翻阅了文档无数遍,但还是一无所知;在线提供的任何示例仅基于星级评分。如果有人有使用评级 class 在 Android 中实施基于 Thumbs 的评级的经验,请在此处帮助我。谢谢。
TLDR
为了让这个问题不太具体,我提供了一个更笼统的解释,以便这个问题将来对其他人更有帮助。
基本上,我想要一个 explanation/example 的评级 class 在基于 Thumbs 评级的上下文中。
我觉得你的实现是正确的,你可以用这个方法检索评分:
metadata = new MediaMetadataCompat
.Builder(metadata).build();
RatingCompat rating = metadata.getRating(MediaMetadataCompat.METADATA_KEY_USER_RATING);
//you can use rating.isRated() for getting is set or not
//you can use rating.isThumbUp() for getting boolean value
如果我要在上面编写您的代码,我会这样做:
MediaMetadataCompat metadata; // initial metadata
public void setLiked(boolean liked) {
buildMetaFor(RatingCompat.newThumbRating(liked));
}
public void setUnrated() {
buildMetaFor(RatingCompat.newUnratedRating(RatingCompat.RATING_NONE));
}
public RatingCompat getRating() {
return metadata.getRating(MediaMetadataCompat.METADATA_KEY_USER_RATING);
}
public MediaMetadataCompat buildMetaFor(RatingCompat rating) {
metadata = new MediaMetadataCompat
.Builder(metadata)
.putRating(MediaMetadataCompat.METADATA_KEY_USER_RATING, rating)
.build();
return metadata;
}
在我的媒体播放器应用程序(基于Android)中,我想实现一个“赞”/“不赞”评级系统。现在,由于框架提供了默认的 android.media.Rating
class 来处理不同类型的评级,我想出了一种方法来使用 Rating
class 来实现基于 Thumbs 的评级。
我已经编写了以下方法来设置向上、向下或未评级评级。
MediaMetadataCompat metadata; // initial metadata
public void setLiked() {
RatingCompat likedRating = RatingCompat.newThumbRating(true);
metadata = new MediaMetadataCompat
.Builder(metadata)
.putRating(MediaMetadataCompat.METADATA_KEY_USER_RATING, likedRating)
.build();
}
public void setDisliked() {
RatingCompat dislikedRating = RatingCompat.newThumbRating(false);
metadata = new MediaMetadataCompat
.Builder(metadata)
.putRating(MediaMetadataCompat.METADATA_KEY_USER_RATING, dislikedRating)
.build();
}
public void setUnrated() {
RatingCompat unratedRating = RatingCompat.newUnratedRating(RatingCompat.RATING_NONE);
metadata = new MediaMetadataCompat
.Builder(metadata)
.putRating(MediaMetadataCompat.METADATA_KEY_USER_RATING, unratedRating)
.build();
}
虽然我还没有测试这些方法,因为应用程序和模块都还没有完成。这是对歌曲应用评级的正确方法吗?我也找不到检索收视率的方法。
我已经翻阅了文档无数遍,但还是一无所知;在线提供的任何示例仅基于星级评分。如果有人有使用评级 class 在 Android 中实施基于 Thumbs 的评级的经验,请在此处帮助我。谢谢。
TLDR
为了让这个问题不太具体,我提供了一个更笼统的解释,以便这个问题将来对其他人更有帮助。
基本上,我想要一个 explanation/example 的评级 class 在基于 Thumbs 评级的上下文中。
我觉得你的实现是正确的,你可以用这个方法检索评分:
metadata = new MediaMetadataCompat
.Builder(metadata).build();
RatingCompat rating = metadata.getRating(MediaMetadataCompat.METADATA_KEY_USER_RATING);
//you can use rating.isRated() for getting is set or not
//you can use rating.isThumbUp() for getting boolean value
如果我要在上面编写您的代码,我会这样做:
MediaMetadataCompat metadata; // initial metadata
public void setLiked(boolean liked) {
buildMetaFor(RatingCompat.newThumbRating(liked));
}
public void setUnrated() {
buildMetaFor(RatingCompat.newUnratedRating(RatingCompat.RATING_NONE));
}
public RatingCompat getRating() {
return metadata.getRating(MediaMetadataCompat.METADATA_KEY_USER_RATING);
}
public MediaMetadataCompat buildMetaFor(RatingCompat rating) {
metadata = new MediaMetadataCompat
.Builder(metadata)
.putRating(MediaMetadataCompat.METADATA_KEY_USER_RATING, rating)
.build();
return metadata;
}