Romain,

Thank you very much for replying very soon.
I am trying your suggestion and do post my detail code as soon as it get
done.

Once again, Thanks a lot!






On Tue, Jan 27, 2009 at 10:37 AM, Romain Guy <romain...@google.com> wrote:

>
> You cannot allocate a 14MB byte array in memory. Your application has
> only access to 16MB maximum. To download a large file from the Web,
> simply read it little bit by little bit. For instance, instead of
> reading 16MB at once, download 16 or 32kB, write them to the
> outputstream, and keep looping until the end of the stream.
>
> On Mon, Jan 26, 2009 at 9:00 PM, Mahesh Vaghela <mah...@indianic.com>
> wrote:
> > Hi Friends,
> >
> > I want to play an mp3 file as soon as my application starts. The mp3 file
> is
> > really large in size(approx 14 mb).
> >
> > So I am trying to download it from a webserver and than I want to store
> it
> > on sdcard.
> >
> > While doing so I am getting OutOfMemoryException. Can anybody please help
> > me?
> >
> > My code is as follows:
> >
> >>>>>>>>>>>>>>>>
> >
> > public MainClass() throws Exception
> > {
> >
> > URL u = new URL("http://----------";);
> > URLConnection uc = u.openConnection();
> > String contentType = uc.getContentType();
> > int contentLength = uc.getContentLength();
> >
> > if(contentLength < Integer.MAX_VALUE)
> > {
> >
> > }
> >
> > if (contentType.startsWith("text/") || contentLength == -1)
> > {
> >      throw new IOException("This is not a binary file.");
> > }
> >
> > InputStream raw = uc.getInputStream();
> >
> > InputStream in = new BufferedInputStream(raw);
> >
> >
> > // Getting OutOfMemoryException here
> >
> > byte [] data=new byte[(int)contentLength];
> >
> >
> > int bytesRead = 0;
> >
> > int offset = 0;
> >
> > while (offset < contentLength)
> > {
> >
> >     bytesRead = in.read(data, offset, data.length - offset);
> >     if (bytesRead == -1)
> >     break;
> >     offset += bytesRead;
> > }
> >
> > in.close();
> >
> > /*
> >
> > if (offset != contentLength)
> > {
> >   throw new IOException("Only read " + offset + " bytes; Expected " +
> > contentLength + "   bytes");
> > }
> >
> > */
> >
> >
> > // String filename = u.getFile().substring(filename.lastIndexOf('/') +
> 1);
> >
> > FileOutputStream out = new FileOutputStream("/sdcard/music.mp3");
> >
> > out.write(data);
> >
> > out.flush();
> >
> > out.close();
> >
> > }
> >
> >
> > Mahesh
> >
> >
> >
> >
> >
> > >
> >
>
>
>
> --
> Romain Guy
> Android framework engineer
> romain...@android.com
>
> Note: please don't send private questions to me, as I don't have time
> to provide private support.  All such questions should be posted on
> public forums, where I and others can see and answer them
>
> >
>


Mahesh Vaghela

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to