Google Play Games Services: Writing saved games












3















Due to the recent changes in the Google Play Games Service API I'm forced to replace all the deprecated code in my Android app. I'm following the Google guide in https://developers.google.com/games/services/android/savedgames and it's not clear for me how to pass the snapshot to this function that writes the data to be saved.




private Task writeSnapshot(Snapshot snapshot, byte data, Bitmap coverImage, String desc) {
// Set the data payload for the snapshot
snapshot.getSnapshotContents().writeBytes(data);
// Create the change operation
SnapshotMetadataChange metadataChange = new SnapshotMetadataChange.Builder()
.setCoverImage(coverImage)
.setDescription(desc)
.build();
SnapshotsClient snapshotsClient =
Games.getSnapshotsClient(this, GoogleSignIn.getLastSignedInAccount(this));
// Commit the operation
return snapshotsClient.commitAndClose(snapshot, metadataChange);
}


Can you help me? I think an example of use of this function should be added to the documentation to make everything clearer and to help developers who need to learn this from scratch.










share|improve this question



























    3















    Due to the recent changes in the Google Play Games Service API I'm forced to replace all the deprecated code in my Android app. I'm following the Google guide in https://developers.google.com/games/services/android/savedgames and it's not clear for me how to pass the snapshot to this function that writes the data to be saved.




    private Task writeSnapshot(Snapshot snapshot, byte data, Bitmap coverImage, String desc) {
    // Set the data payload for the snapshot
    snapshot.getSnapshotContents().writeBytes(data);
    // Create the change operation
    SnapshotMetadataChange metadataChange = new SnapshotMetadataChange.Builder()
    .setCoverImage(coverImage)
    .setDescription(desc)
    .build();
    SnapshotsClient snapshotsClient =
    Games.getSnapshotsClient(this, GoogleSignIn.getLastSignedInAccount(this));
    // Commit the operation
    return snapshotsClient.commitAndClose(snapshot, metadataChange);
    }


    Can you help me? I think an example of use of this function should be added to the documentation to make everything clearer and to help developers who need to learn this from scratch.










    share|improve this question

























      3












      3








      3








      Due to the recent changes in the Google Play Games Service API I'm forced to replace all the deprecated code in my Android app. I'm following the Google guide in https://developers.google.com/games/services/android/savedgames and it's not clear for me how to pass the snapshot to this function that writes the data to be saved.




      private Task writeSnapshot(Snapshot snapshot, byte data, Bitmap coverImage, String desc) {
      // Set the data payload for the snapshot
      snapshot.getSnapshotContents().writeBytes(data);
      // Create the change operation
      SnapshotMetadataChange metadataChange = new SnapshotMetadataChange.Builder()
      .setCoverImage(coverImage)
      .setDescription(desc)
      .build();
      SnapshotsClient snapshotsClient =
      Games.getSnapshotsClient(this, GoogleSignIn.getLastSignedInAccount(this));
      // Commit the operation
      return snapshotsClient.commitAndClose(snapshot, metadataChange);
      }


      Can you help me? I think an example of use of this function should be added to the documentation to make everything clearer and to help developers who need to learn this from scratch.










      share|improve this question














      Due to the recent changes in the Google Play Games Service API I'm forced to replace all the deprecated code in my Android app. I'm following the Google guide in https://developers.google.com/games/services/android/savedgames and it's not clear for me how to pass the snapshot to this function that writes the data to be saved.




      private Task writeSnapshot(Snapshot snapshot, byte data, Bitmap coverImage, String desc) {
      // Set the data payload for the snapshot
      snapshot.getSnapshotContents().writeBytes(data);
      // Create the change operation
      SnapshotMetadataChange metadataChange = new SnapshotMetadataChange.Builder()
      .setCoverImage(coverImage)
      .setDescription(desc)
      .build();
      SnapshotsClient snapshotsClient =
      Games.getSnapshotsClient(this, GoogleSignIn.getLastSignedInAccount(this));
      // Commit the operation
      return snapshotsClient.commitAndClose(snapshot, metadataChange);
      }


      Can you help me? I think an example of use of this function should be added to the documentation to make everything clearer and to help developers who need to learn this from scratch.







      java android google-play-services google-play-games






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 23 '18 at 10:00









      sgpozasgpoza

      162




      162
























          1 Answer
          1






          active

          oldest

          votes


















          0














          Ok, I realized how to do it. Basically, when you open the snapshot client, you must use continueWith and obtain the snapshot from the task.



          Considering you have a proper cover image and description and a Google account where you signed in



          mAccount = GoogleSignIn.getLastSignedInAccount(activity);


          this is the code:



          SnapshotsClient snapshotsClient = Games.getSnapshotsClient(activity, mAccount);
          int conflictResolutionPolicy = SnapshotsClient.RESOLUTION_POLICY_MOST_RECENTLY_MODIFIED;
          snapshotsClient.open(getSaveFileName(), true, conflictResolutionPolicy)
          .addOnFailureListener(new OnFailureListener() {
          @Override
          public void onFailure(@NonNull Exception e) {
          Log.e(TAG, "Error", e);
          }
          }).continueWith(new Continuation<SnapshotsClient.DataOrConflict<Snapshot>, byte>() {
          @Override
          public byte then(@NonNull Task<SnapshotsClient.DataOrConflict<Snapshot>> task)
          throws Exception {
          Snapshot snapshot = task.getResult().getData();
          snapshot.getSnapshotContents().writeBytes(getSaveGameData());
          SnapshotMetadataChange metadataChange = new SnapshotMetadataChange.Builder()
          .setCoverImage(coverImage)
          .setDescription(desc)
          .build();
          SnapshotsClient snapshotsClient = Games.getSnapshotsClient(activity, mAccount);
          snapshotsClient.commitAndClose(snapshot, metadataChange);
          return null;
          }
          });





          share|improve this answer
























          • what is getSaveFileName.

            – Abhay Koradiya
            Dec 5 '18 at 12:14












          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53444422%2fgoogle-play-games-services-writing-saved-games%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          Ok, I realized how to do it. Basically, when you open the snapshot client, you must use continueWith and obtain the snapshot from the task.



          Considering you have a proper cover image and description and a Google account where you signed in



          mAccount = GoogleSignIn.getLastSignedInAccount(activity);


          this is the code:



          SnapshotsClient snapshotsClient = Games.getSnapshotsClient(activity, mAccount);
          int conflictResolutionPolicy = SnapshotsClient.RESOLUTION_POLICY_MOST_RECENTLY_MODIFIED;
          snapshotsClient.open(getSaveFileName(), true, conflictResolutionPolicy)
          .addOnFailureListener(new OnFailureListener() {
          @Override
          public void onFailure(@NonNull Exception e) {
          Log.e(TAG, "Error", e);
          }
          }).continueWith(new Continuation<SnapshotsClient.DataOrConflict<Snapshot>, byte>() {
          @Override
          public byte then(@NonNull Task<SnapshotsClient.DataOrConflict<Snapshot>> task)
          throws Exception {
          Snapshot snapshot = task.getResult().getData();
          snapshot.getSnapshotContents().writeBytes(getSaveGameData());
          SnapshotMetadataChange metadataChange = new SnapshotMetadataChange.Builder()
          .setCoverImage(coverImage)
          .setDescription(desc)
          .build();
          SnapshotsClient snapshotsClient = Games.getSnapshotsClient(activity, mAccount);
          snapshotsClient.commitAndClose(snapshot, metadataChange);
          return null;
          }
          });





          share|improve this answer
























          • what is getSaveFileName.

            – Abhay Koradiya
            Dec 5 '18 at 12:14
















          0














          Ok, I realized how to do it. Basically, when you open the snapshot client, you must use continueWith and obtain the snapshot from the task.



          Considering you have a proper cover image and description and a Google account where you signed in



          mAccount = GoogleSignIn.getLastSignedInAccount(activity);


          this is the code:



          SnapshotsClient snapshotsClient = Games.getSnapshotsClient(activity, mAccount);
          int conflictResolutionPolicy = SnapshotsClient.RESOLUTION_POLICY_MOST_RECENTLY_MODIFIED;
          snapshotsClient.open(getSaveFileName(), true, conflictResolutionPolicy)
          .addOnFailureListener(new OnFailureListener() {
          @Override
          public void onFailure(@NonNull Exception e) {
          Log.e(TAG, "Error", e);
          }
          }).continueWith(new Continuation<SnapshotsClient.DataOrConflict<Snapshot>, byte>() {
          @Override
          public byte then(@NonNull Task<SnapshotsClient.DataOrConflict<Snapshot>> task)
          throws Exception {
          Snapshot snapshot = task.getResult().getData();
          snapshot.getSnapshotContents().writeBytes(getSaveGameData());
          SnapshotMetadataChange metadataChange = new SnapshotMetadataChange.Builder()
          .setCoverImage(coverImage)
          .setDescription(desc)
          .build();
          SnapshotsClient snapshotsClient = Games.getSnapshotsClient(activity, mAccount);
          snapshotsClient.commitAndClose(snapshot, metadataChange);
          return null;
          }
          });





          share|improve this answer
























          • what is getSaveFileName.

            – Abhay Koradiya
            Dec 5 '18 at 12:14














          0












          0








          0







          Ok, I realized how to do it. Basically, when you open the snapshot client, you must use continueWith and obtain the snapshot from the task.



          Considering you have a proper cover image and description and a Google account where you signed in



          mAccount = GoogleSignIn.getLastSignedInAccount(activity);


          this is the code:



          SnapshotsClient snapshotsClient = Games.getSnapshotsClient(activity, mAccount);
          int conflictResolutionPolicy = SnapshotsClient.RESOLUTION_POLICY_MOST_RECENTLY_MODIFIED;
          snapshotsClient.open(getSaveFileName(), true, conflictResolutionPolicy)
          .addOnFailureListener(new OnFailureListener() {
          @Override
          public void onFailure(@NonNull Exception e) {
          Log.e(TAG, "Error", e);
          }
          }).continueWith(new Continuation<SnapshotsClient.DataOrConflict<Snapshot>, byte>() {
          @Override
          public byte then(@NonNull Task<SnapshotsClient.DataOrConflict<Snapshot>> task)
          throws Exception {
          Snapshot snapshot = task.getResult().getData();
          snapshot.getSnapshotContents().writeBytes(getSaveGameData());
          SnapshotMetadataChange metadataChange = new SnapshotMetadataChange.Builder()
          .setCoverImage(coverImage)
          .setDescription(desc)
          .build();
          SnapshotsClient snapshotsClient = Games.getSnapshotsClient(activity, mAccount);
          snapshotsClient.commitAndClose(snapshot, metadataChange);
          return null;
          }
          });





          share|improve this answer













          Ok, I realized how to do it. Basically, when you open the snapshot client, you must use continueWith and obtain the snapshot from the task.



          Considering you have a proper cover image and description and a Google account where you signed in



          mAccount = GoogleSignIn.getLastSignedInAccount(activity);


          this is the code:



          SnapshotsClient snapshotsClient = Games.getSnapshotsClient(activity, mAccount);
          int conflictResolutionPolicy = SnapshotsClient.RESOLUTION_POLICY_MOST_RECENTLY_MODIFIED;
          snapshotsClient.open(getSaveFileName(), true, conflictResolutionPolicy)
          .addOnFailureListener(new OnFailureListener() {
          @Override
          public void onFailure(@NonNull Exception e) {
          Log.e(TAG, "Error", e);
          }
          }).continueWith(new Continuation<SnapshotsClient.DataOrConflict<Snapshot>, byte>() {
          @Override
          public byte then(@NonNull Task<SnapshotsClient.DataOrConflict<Snapshot>> task)
          throws Exception {
          Snapshot snapshot = task.getResult().getData();
          snapshot.getSnapshotContents().writeBytes(getSaveGameData());
          SnapshotMetadataChange metadataChange = new SnapshotMetadataChange.Builder()
          .setCoverImage(coverImage)
          .setDescription(desc)
          .build();
          SnapshotsClient snapshotsClient = Games.getSnapshotsClient(activity, mAccount);
          snapshotsClient.commitAndClose(snapshot, metadataChange);
          return null;
          }
          });






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 28 '18 at 10:37









          sgpozasgpoza

          162




          162













          • what is getSaveFileName.

            – Abhay Koradiya
            Dec 5 '18 at 12:14



















          • what is getSaveFileName.

            – Abhay Koradiya
            Dec 5 '18 at 12:14

















          what is getSaveFileName.

          – Abhay Koradiya
          Dec 5 '18 at 12:14





          what is getSaveFileName.

          – Abhay Koradiya
          Dec 5 '18 at 12:14




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53444422%2fgoogle-play-games-services-writing-saved-games%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          "Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

          Alcedinidae

          RAC Tourist Trophy