Android :: Read LARGE Sqlite File To Be Copied Into Emulator - Or Device From Assets Folder
May 28, 2010
I guess many people already read this article:
Using your own SQLite database in Android applications: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/comment-page-2/#comment-12368
However it's keep bringing IOException at
I'am trying to use a large DB file. It's as big as >8MB. I built it using sqlite3 in Mac OS X, inserted UTF-8 encoded strings (for I am using Korean), added android_meta table with ko_KR as locale, as instructed above.
However, When I debug, it keeps showing IOException at
I suspect it's caused by trying to read a big file. If not, I have no clue why.
I tested the same code using much smaller text file, and it worked fine.
Can anyone help me out on this? I've searched many places, but no place gave me the clear answer, or good solution. Good meaning efficient or easy.
I will try use BufferedInput(Output)Stream, but if the simpler one cannot work, I don't think this will work either.
Can anyone explain the fundamental limits in file input/output in Android, and the right way around it, possibly?
Question: How do you programmatically distinguish between directories and regular files in the assets folder?
When using AssetManager to access files in the assets folder, it seems impossible to determine if a file is in fact a file or a directory. You get the list of files from the list method and then open the file using the open method. I thought perhaps using the openFd method to get the asset file descriptor (and then subsequently requesting the normal file descriptor) would provide me some information. But requesting the file descriptor for a directory results in an IOException (which makes sense since what would it mean for a directory to have a file descriptor...?).
Currently I'm relying on that IOException (resulting from attemptng to open a directory in the assets folder) in order to determine if a file is in fact a directory. (Opening a regular file works just fine). This seems like a bad idea. Any other suggestions to distinguish between a file and a directory?
My app has .txt files in subdirectories in the assets folder. It reads those .txt files and puts them in a textview. It's working great and no problems.
Should I be concerned about the files in the assets folder getting deleted by the user or missing. If this ever could happen, my app would get an error because the file would not be there when it tried to read it into the stream.
Is there a need for me to check the existence of an asset file before I read it or does the asset manager take care of it all? I also was wondering if there's a chance that a user would or could delete and asset file.
Like I say, everything works fine without me inserting code to check for file existence. I just wondered if people use the .exists() statement every time they go to read in a stream from assets.
I have a test project with a WebView that displays a html page (demo.html) stored in the assets folder. I've stored images and databases in the assets folder before without any problem, but for some reason now that assets aren't being seen. The code I'm using is as follows;
I'm new in Java/Android programming, so please have patience with me.
I try to play a mp3 which is locate und the assets folder. I know there is another way with the /res/raw/ folder, but use the assets-folder because later I'll try to access the file by String.
This code works to play a mp3-file:
Now the problem: In the same assets-folder is another mp3 file stored. Though I specify the name of the mp3 to use it take the one which comes first in alphabet. E.g. the other file is named "music.mp3" it plays this one. Renaming it to "worldmusic.mp3" it will play "song.mp3". Rerename "worldmusic.mp3" back to "music.mp3" it will take this mp3 again. Another test: Renaming "song.mp3" to something other so the application can find whats specify by the code above will result that no song is played. So this means the songname have to exist, although it take arbitrary the song first in alphabet.
I'm testing with the AVD emulator of eclipse. But I think the behaviour would be the same on a real device.
I am creating a simple android app to view a comic book. The pages are large(0.5-1 mb each), high quality .png's and I am loading them into a webview to make use of the built in zoom controls. So far I only have 17 files and the APK size is already about 16 mb. I'm looking to add over 200 files in future updates. I can't really reduce the quality too much because there is small text that must be zoomed-in on to read. Any suggestions? A similar question was posted here: How to reduce App (.apk) Size, but I don't want to lose the quality of the images. I'm not sure if it's appropriate to link to here, but you can have a look at my app by searching for Tracer (by Detour Mobile) on the android market if it helps at all.
I am developing an application that needs to access data on the sd card. When I run on my development device (an odroid with Android 2.1) I have root access and can construct the path using:
However, when I install this on a phone (2.1) where I do not have root access I get files == null. I assume this is because I do not have the right permissions to read the data from the sd card. I also get files == null when just trying to list files on /sdcard. So the same applies without my constructed path.
Also, this app is not intended to be distributed through the app store and is needs to use data copied separately to the sd card so this is a real use-case. It is too much data to put in res/raw (I have tried, it did not work).
I have also tried adding: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
To the manifest, even though I only want to read the sd card, but it did not help. I have not found a permission type for reading the storage.
In this case 'i' is -1 meaning nothing read. Why would nothing be there if the file is there, the variable 'files' has the file as well. Do I need to do anything to the file I put into the Assets folder in get it to be readable? When I use a small text file it works. When I use a 10 meg file, it does not. (The 10 meg is a Sqlite database I need to install)
I cant copy big compressed (.zip, .rar) to my sd card. The item successfully copied but end with corrupted file (crc). I tried to fix with some software on net. But the is no can fix instead showing no problem. HY5001
I am trying to play a video in android emulator I have the video in my assets folder as well as the raw folder.But after doing some research still i cant play video in my emulator.i am working on android 2.1 My video format is mp4 so i don't think that should be a problem.Could anyone just give me an example code so that i can understand a bit more?The problem is that the VideoView that I need to display the Video will take only a URI or a File path to point to the Video.If I save the video in the raw or assets folder I can only get an input stream or a file descriptor and it seems nothing of that can be used to initialize the VideoView.
I am working on some a application where I have to update some files present in assets / raw folder runtime from some http location.Can anyone help me to by sharing how to write files in assets or raw folder programmatically?
Is the assets folder only accessible to the app or can the user see it too? For my app I want to store a credential certificate and video files on local storage but I am not sure how to hide these items from the users. The assets folder seems like the only choice.
The instructions for my app are in HTML format in my assets so I can display them with proper formatting and hyperlinks in a WebView. Given that they're in the assets folder, not res, I can't properly localize them (i.e. something like assets-de wouldn't work). What's the proper way to localize embedded HTML files?
I would like to install an APK from within an Android application. Can anyone give me an example of how to do this? Also how do I open the install applications from unknown resources preference page so that users can change it? I actually meant open the screen using code, so I can immediately open the preference page for the user to simply check the box, and press back. Is it possible to check to see if they allow non-market apps? Can an application request permission enough to do this?
Every time I flash a new ROM on my phone, whether it was my old Galaxy S2 or my current Galaxy S4, Google Play recognizes that it is the same device as before and installs all the apps I previously installed on the phone.
My android stick computer (Minix Neo X5) does not behave this way. Every time I flash a new ROM, regardless of whether it is an official ROM from the developer (Minix) or a custom ROM with CWM, Google Play does not recognize that it is the same device as before and I have to go through the arduous process of installing all previous apps.
Is there a file or folder that I could backup on my stick computer and restore after flashing that will let Google Play recognize it properly? build.prop?
How do I reference the assets from phone memory? I need it to write the absolute path into a html file to load some images which are in assets folderThis html is saved in the phone memory but I can't to save these images in the memory phone because these are very big.
I have 5 mp3 files stored on the assets folder. The files are all 25 KB. I load the files using: manager = context.getAssets(); this.inputStream = manager.openFd(fileName).createInputStream(); Whenever I try to play the files, the sounds are all messed up like they were mixed or something. I've zip aligned the app already but with no results.
What I am trying to do is simply copy over entire folder full of mp3 files onto sdcard within an app. I am doing this out of "assets" folder because raw folder does not allow mp3 files to be named the way I need them to. Here is what I dug up so far but not sure if this will work. I am lost.
InputStream ins = getResources().getAssets().open(""); int size = ins.available(); // Read the entire resource into a local byte buffer. byte buffer = new byte[size]; ins.read(buffer); ins.close(); FileOutputStream fos = new FileOutputStream("/sdcard/myfolder/"); fos.write(buffer); fos.close();
I want to change the font in my widget such that it uses a specific font in "assets" folder of my app. I usually do this in my app to change the font: Typeface tf= Typeface.createFromAsset(getAssets(), "advertising.ttf"); TextView converted = (TextView)findViewById(R.id.TextView03); converted.setTypeFace(tf);
And it works like a charm. How can I do this in widgets? I can only set the text and change the color: remoteView.setTextViewText(R.id.TextView03,"some text" ); remoteView.setTextColor(R.id.TextView03, Color.BLACK); But I don't see a way to set the font.
I have been working on creating a Grid View of images, with images being present in the Assets folder. http://stackoverflow.com/questions/1933015/opening-an-image-file-inside-the-assets-folder link helped me with using the bitmap to read it.My application does read the image from the Assets folder, but it is not iterating through the cells in the grid view. All the cells of the grid view have a same image picked from the set of images. Can anyone tell me how to iterate through the cells and still have different images?