从 SqliteDatabase 创建字节数组以使用 Google Saved Games 保存它?

Creating a byte array from an SqliteDatabase to save it with Google Saved Games?

我有一个游戏,我使用几个表来存储玩家的进度。这是一个相当长的游戏,所以我不时收到合法的用户反馈,为什么我没有云保存选项?

所以我使用Google Play Games登录来获得成就,我想我也可以简单地实现Google Saved Games,直接。

如我所见,它使用一个简单的 byte[] 数组从云端保存和加载游戏进程 (实际上是 Google 驱动器。)

我的问题是,如何创建一个 byte[] 数组 来保存玩家保存的游戏实例的完整数据库?

我正在使用 Sqlite 数据库,例如:

private static DatabaseHelper mInstance = null;


private DatabaseHelper(Context context) {
    super(context, "duels_rpg_db", null, 123);
  

    this.ctx = context;

 
    getWritableDatabase();
}


public static DatabaseHelper getInstance(Context ctx) {

   
    if (mInstance == null) {
        mInstance = new DatabaseHelper(ctx.getApplicationContext());
    }
    return mInstance;
}

等等,没什么特别的。

提前致谢,

如果你是using C it would be easy to serialize the entire database, but in Android I think you would have to locate the database file, convert it to a byte array using the ByteArrayOutputStream class, store it in Google Saved Games and later on convert the byte array back to a file if necessary. For an example of converting a file to a byte array and vice-versa see this link

最好序列化您的用户数据而不是 db 文件。这样,如果您更新您的应用程序,您将不会担心在尚未更新的应用程序版本中使用更新版本的数据库。

所以我建议将您的进度与 org.json.JSONObject 相互转换。 使用 JSON,可以很容易地转换为 json.toString().getBytes("utf-8")

的 byteArray

获取数据时,您可以将其转换回 json 并使用一种方法将 json

的数据加载到您的 sqlite 数据库