that's a good question. The problem is, that a java.io.RandomAccessFile
instance is needed in order to read the map data from a binary map file.
Just having an InputStream is not enough, as it doesn't have a seek()
method. Calling skip(n) is not the same. In worst case all n bytes will
be read, which is not an option for huge map files.
Unfortunately, Android does not offer seekable file access on resources.
That is due to the way all resource files are packaged and compressed
into one .apk file. A quick Google search reveals that many other people
are having the same problem. One work around may be to copy the file to
the SD card or internal phone filesystem when your application is
started for the first time. See:
http://groups.google.com/group/android-developers/browse_thread/thread/59b6bf70ca6d2081
But depending on the file size, this copying process may take a longer
time. Having map files bundled with your application will also increase
the size of your APK file a lot. Another disadvantage is that the map
file can no longer be updated separately or copied to other devices.
Best regards,
Thilo