从SqliteDatabase创建一个字节数组,用谷歌保存的游戏保存它



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

因此,我确实使用Google Play Games登录来取得成就,我认为我也可以简单地实现Google Saved Games,非常简单。

正如我所看到的,它使用一个简单的byte[]数组来保存&从云中加载游戏进度(实际上是谷歌硬盘。(

我的问题是,如何创建一个byte[]数组,该数组包含玩家保存的游戏实例的FULL数据库

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

等等,没有什么特别的。

提前感谢

如果你使用C,序列化整个数据库会很容易,但在Android中,我认为你必须找到数据库文件,使用ByteArrayOutputStream类将其转换为字节数组,将其存储在Google Saved Games中,然后在必要时将字节数组转换回文件。有关将文件转换为字节数组(反之亦然(的示例,请参阅此链接。

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

因此,我建议将您的进度转换为org.json.JSONObject。使用JSON,可以很容易地转换为具有json.toString().getBytes("utf-8")的字节数组

在获取数据时,您可以将其转换回json,并编写一个方法,用json 的数据加载sqlite数据库

最新更新