Android 脱机映射包含在.apk文件中

Android 脱机映射包含在.apk文件中,android,map,offline,osmdroid,openstreetmap,Android,Map,Offline,Osmdroid,Openstreetmap,如果我在.png.tile中有tile。是否可以将其包含在.apk中。 我的目的是在我从市场下载应用程序后,当我打开应用程序时,它应该显示至少一个国家(可能不是大国家)的每个磁贴和每个缩放级别。 另外,我使用OSM。 PS.2对不起我的英语语法 编辑:一个国家可能太大了。 也许只有一个省或一个州和一些国家 EDIT2:这是我使用的函数,我可以对inputstream做些什么非常感谢 AssetManager assetManager = getAssets(); try {

如果我在.png.tile中有tile。是否可以将其包含在.apk中。 我的目的是在我从市场下载应用程序后,当我打开应用程序时,它应该显示至少一个国家(可能不是大国家)的每个磁贴和每个缩放级别。 另外,我使用OSM。 PS.2对不起我的英语语法

编辑:一个国家可能太大了。 也许只有一个省或一个州和一些国家

EDIT2:这是我使用的函数,我可以对inputstream做些什么非常感谢

    AssetManager assetManager = getAssets();

    try {
        files = assetManager.list("Map");
    } catch (IOException e) {
        Log.e("tag", e.getMessage());
    }
    try {
        firstField = (EditText) findViewById(R.id.firstId);
        firstField.setText(Integer.toString(files.length)
                + " file. File name is " + files[0]);

    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        inputStream = assetManager.open("Map/mapnik.zip");
        // String s = null;
        // s = readTextFile(inputStream);
        // secondField = (EditText) findViewById(R.id.secondId);
        // secondField.setText(s);
    } catch (IOException e) {
        Toast.makeText(this, "Error" + e.toString(), Toast.LENGTH_SHORT)
                .show();
    }

是的,您可以通过将其放置在“资产”文件夹中来将其包括在内。有关访问资产的信息,请参阅。

是的,您可以通过将其放置在“资产”文件夹中来将其包括在内。有关访问资产的信息,请参阅。

感谢您的快速回复。我所要做的就是使用assetManager将平铺映射打包,当我在onCreate中打开应用程序时,我必须读取getAsset()并再次写入SD卡?我理解对了吗?差不多。您不需要使用资产管理器在apk中获取资产,您只需在构建apk之前将文件放在资产文件夹中即可;它将由构建过程自动打包。此外,您不一定需要将资产复制到SD卡才能使用它,您可以直接就地使用它;它可以打开到InputStream。对不起,我有几天离线了。我现在完全理解你的评论。但是如果我有一个Mapnik.zip文件,并且这个文件需要在/sdcard/osmdroid中解压,那么我可以从assets中获取这个zip文件并将其解压到我前面提到的目录中吗?我在谷歌上搜索了一下,发现inputStream只能读取txt文件。非常感谢。你的要求是可能的,但不是必要的——事实上,甚至是浪费。与其将压缩文件放在资产中并复制/解压缩,不如将其解压缩并将解压缩内容保留在资产中。记住,你的APK是压缩的,所以这些文件是压缩的,但是Android给了你InputStream,所以你可以像访问普通文件一样访问它们。如果出于某种原因您必须在SD卡上使用它们,您可以使用InputStream读取文件内容并将其写入需要的位置。非常感谢。但是inputstream可以将文件从资产写入SD卡。如果可以,请解释一下如何操作。我将更新我使用的函数的问题,但它只使用file.list,我甚至不知道如何让inputstream编写它。谢谢您的快速回复。我所要做的就是使用assetManager将平铺映射打包,当我在onCreate中打开应用程序时,我必须读取getAsset()并再次写入SD卡?我理解对了吗?差不多。您不需要使用资产管理器在apk中获取资产,您只需在构建apk之前将文件放在资产文件夹中即可;它将由构建过程自动打包。此外,您不一定需要将资产复制到SD卡才能使用它,您可以直接就地使用它;它可以打开到InputStream。对不起,我有几天离线了。我现在完全理解你的评论。但是如果我有一个Mapnik.zip文件,并且这个文件需要在/sdcard/osmdroid中解压,那么我可以从assets中获取这个zip文件并将其解压到我前面提到的目录中吗?我在谷歌上搜索了一下,发现inputStream只能读取txt文件。非常感谢。你的要求是可能的,但不是必要的——事实上,甚至是浪费。与其将压缩文件放在资产中并复制/解压缩,不如将其解压缩并将解压缩内容保留在资产中。记住,你的APK是压缩的,所以这些文件是压缩的,但是Android给了你InputStream,所以你可以像访问普通文件一样访问它们。如果出于某种原因您必须在SD卡上使用它们,您可以使用InputStream读取文件内容并将其写入需要的位置。非常感谢。但是inputstream可以将文件从资产写入SD卡。如果可以,请解释一下如何操作。我将更新我使用的函数的问题,但它只使用file.list,我甚至不知道如何让inputstream编写它。