Android 上的已保存游戏:如何检查是否已存在同名快照?
Saved Games on Android: how to check if a snapshot with the same name already exists?
目前我正在研究 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);
}
}
}
显然,检查具有生成名称的快照是否已经存在是个好主意。我应该怎么做?
可以通过调用 [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 显示 select 已保存游戏的自定义视图。
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());
}
}
});
目前我正在研究 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);
}
}
}
显然,检查具有生成名称的快照是否已经存在是个好主意。我应该怎么做?
可以通过调用 [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 显示 select 已保存游戏的自定义视图。
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());
}
}
});