使用 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;
}