【问题标题】:Saved Games on Android: how to check if a snapshot with the same name already exists?Android 上保存的游戏:如何检查同名快照是否已存在?
【发布时间】:2015-11-12 12:12:08
【问题描述】:

目前我正在将 Google 的 Saved Games 集成到 Android 应用中。

我正在尝试在用户请求新保存后创建新快照。我实现了onActivityResult,因为我发现here

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    // requestCode and resultCode checks happen here, of course...

    if (intent != null) {
        if (intent.hasExtra(Snapshots.EXTRA_SNAPSHOT_METADATA)) {
            // Load a snapshot.
            SnapshotMetadata snapshotMetadata = intent.getParcelableExtra(Snapshots.EXTRA_SNAPSHOT_METADATA);
            currentSaveName = snapshotMetadata.getUniqueName();
            loadFromSnapshot(snapshotMetadata);
        } else if (intent.hasExtra(Snapshots.EXTRA_SNAPSHOT_NEW)) {
            // Create a new snapshot named with a unique string
            // TODO: check for existing snapshot, for now, add garbage text.
            String unique = new BigInteger(281, new Random()).toString(13);
            currentSaveName = "snapshotTemp-" + unique;
            saveSnapshot(null);
        }
    }
}

显然,检查具有生成名称的快照是否已存在是个好主意。我应该怎么做呢?

【问题讨论】:

    标签: java android google-play-games


    【解决方案1】:

    可以通过调用 [Snapshots.load()](https://developers.google.com/android/reference/com/google/android/gms/games/snapshot/Snapshots#load(com.google.android.gms.common.api.GoogleApiClient, boolean)) 来检索现有已保存游戏的列表。这是一个异步调用,因此使用它的一种方法是在保存之前调用它并将名称保存在一个列表中,然后您可以将其与新名称进行比较。

    示例 CollectAllTheStars (https://github.com/playgameservices/android-basic-samples) 演示了如何使用此 API 显示自定义视图以选择已保存的游戏。

    Games.Snapshots.load(mGoogleApiClient, false).setResultCallback(
          new ResultCallback<Snapshots.LoadSnapshotsResult>() {
              @Override
              public void onResult(Snapshots.LoadSnapshotsResult loadSnapshotsResult) {
                         mSavedGamesNames = new ArrayList<String>();
                         for (SnapshotMetadata m :loadSnapshotsResult.getSnapshots()) {
                             mSavedGamesNames.add(m.getUniqueName());
                         }
             }
    });
    

    【讨论】:

    • 嗯,我在想有一个更简单的方法......但无论如何感谢您的回答。还有一件事:每次用户开始保存游戏时都可以调用它吗?
    猜你喜欢
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2019-03-08
    • 1970-01-01
    • 2020-06-17
    • 2015-07-10
    • 1970-01-01
    相关资源
    最近更新 更多