I want to serve local language content in my app. I am reading a .txt file in res/raw folder using FileReader (Buffered one). I have read that Android can automatically translate text for values/strings.xml file.
Is the same possible for raw text files. I am looking for minimal code changes.
Android does not automatically translate any files.
You as a developer can translate them and put the resources in appropriately qualified folders, like values-en, values-fr and so on.
These qualifiers work on all folders under res, including the raw folder.
No code changes are required, as Android will automatically pick the correct file upon runtime. However, you should always keep a copy in the default folder with no qualifications in case the app is run on a device for which you do not have content available.
Related
I have .srt files on my android device.
But I don't have any program that allows me to be able to open it to be able to see what the contents of them are.
So I would like to create a simple program that allows me to be able to open the file as if it were a .txt in order to be able to read it.
The problem is how do I specify that that type of .srt extension can be opened by that program.
There is something in the android manifest that allows me to do this.
What I want to do is this:
I have my .srt files in my archive
When I click on one of these files, it must open the program to be able to read it with the file open
I've got an xml file I need to access(read only) from core. I tried putting it in the Android assets folder since that's shared, but ironically only the desktop version of my app can access it, the Android one doesn't see it at all. "Gdx.files.getLocalStoragePath" points to a different location on the Android version. Is there a spot I can store an xml file so I can access it via core?
create FileHandle object using your file.
FileHandle handle = Gdx.files.internal("data/myfile.xml");
parse that using XmlReader, that is in libgdx bundle.
I'm making two Java applications one to collect data, another to use it. The one collecting will be importing a file from the other which will include data and images and will be decrypted.
I'm unsure what filetype to use. So far all of the data is in XML and works great but I need the images and was hoping not to have to rely on giving all the images in a folder with a path reference.
Ideas?
well, I think that the best way is to create your own format (.myformat or .data). This file will be in fact a Zip file that contains your XML file and images.
There is no perfect example writen in java as far as I know. However, here are some examples :
Not in java
The best example is, as #Bolo said, the odt format. Indeed, OpenOffice writes the doc in an xml file, and the images too. All that is wrapped in an odt file.
The .exe file is an other example. The C files and the resources are put in a single file. try to open it with 7-zip, you'll see.
The Skyrim plugins are .esp file that contain the dds, the scripts, the niffs (textures)...
In java
The minecraft texture packs are a zip file that contains a .mcmeta file (the infos) and the textures (.png)
Jar files are like exe.
If both programs are in java you could also go with serialization, which is basically saving an object as a file (suffix will be .ser I think) and then being able to retrieve it. You should google it, even if it won't help right now it is quite good to know about it.
I'd suggest using JSON. Gson is a decent library.
You can embed images as byte arrays.
Save the serialized string in a file with a preferred extension, read it from the second application, de-serialize, and reconstruct images.
You can convert binary image data to text with Base64 encoding and this way you can embed your images in XML. [1]: http://en.wikipedia.org/wiki/Base64
I need to open a file in libgdx for random access, i.e. I need to be able to seek() to different parts of the file (not read sequentially).
Using libgdx I am able to access the file via Gdx.files.internal(), but libgdx's filehandlers don't support random access methods like seek(). I tried using java.io.RandomAccessFile, but it generates the exception No such file or directory, probably because the file is stored internally in the jar file.
How can I access the file using java.io.RandomAccessFile` or alternatively how can i open file for random-access in libgdx?
This needs to work on both Android and desktop platforms.
This is not a Libgdx limitation. You cannot do random access on files stored inside a JAR file (since they're compressed, you need to stream the contents). (I can't find a concise reference for this, but look at the definitions of JarFile and ZipFile: they only let you create streaming file handles).
Libgdx itself runs into this problem. It stores native libraries in a .jar file (the libgdx-natives.jar). To use the files, it extracts them to the local filesystem and uses them from there. See SharedLibraryLoader.java.
As far as I can tell there are three workarounds to chose from:
Remove the need for the random access in your code.
Stream the file from the JAR into memory, and randomly access it there
Copy the file from the JAR into local (private) storage or temp storage (hopefully this could be done once and not re-done on each run of the app).
I'm trying to create an app and have the ability to save files to /data/data/(packagename)/files or a directory similar to that. The goal would be to have a pdf or doc handler, as necessary, open the files stored on the internal storage and be viewed by the user. I have the code to get a pdf reader that is installed and display the file but I do not know how to package the files so they are installed in a directory like the one above. Also, if I am able to do this would I use getResources to access the files? How should the file structure look in eclipse to make this happen on install of the APK?
I do prefer to have the files stored internally (they are small) and not on the SD card.
I admit I am new to this and am trying to learn as I go. Thanks for the help!
As I understand your approach you only need to place your files to assets folder of your application and then just copy them to the internal storage. Read more here.