andbook!.pdf - Learning Android Get an anddev.org - Android-Shirt Back to index
anddev.org Header Logo
FAQ Search Top rated articles Browse Feeds anddev.org - Authors Contact Details Register Log in

Tutorial: Custom Media Streaming for Android's MediaPlayer

Goto page 1, 2  Next
 
       anddev.org - Android Development Community | Android Tutorials | Index -> Advanced Tutorials
Author Message
biosopher
Junior Developer


Joined: 15 Mar 2008
Posts: 24
Location: San Francisco, California

PostPosted: Sat Apr 05, 2008 12:15 am    Post subject: Tutorial: Custom Media Streaming for Android's MediaPlayer Reply with quote

I have had absolutely no luck streaming audio using the built-in MediaPlayer functionality so I decided to write my own streaming utility for the MediaPlayer.

My solution is now documented as a tutorial on my blog including including source code:

blog.pocketjourney.com.

Here's a sneak peak at a few screenshots:



Please check it out & leave a comment on my blog if you have questions.

Best of luck,
biosopher
Back to top
View user's profile Send private message Send e-mail Visit poster's website
plusminus
Site Admin


Joined: 14 Nov 2007
Posts: 2067
Location: Germany

PostPosted: Sat Apr 05, 2008 12:15 pm    Post subject: Reply with quote

Hello acopernicus,

I haven't actually tried it, but it looks really nice Exclamation
I assume there is a short break, when the MediaPlayer is stopped, file copied and MediaPlayer restarted, right Question

Did you think about submitting that tutorial to the Android Tutorial Challenge Question


You could win an Android Shirt Smile
Looking at the text you have written, the chance is pretty good Wink

Best Regards,
plusminus

_________________

| Android Development Community / Tutorials
Back to top
View user's profile Send private message Send e-mail Visit poster's website
biosopher
Junior Developer


Joined: 15 Mar 2008
Posts: 24
Location: San Francisco, California

PostPosted: Sat Apr 05, 2008 6:01 pm    Post subject: Reply with quote

Thanks for the recommendation about submitting into the tutorial challenge, +-. The TC is an excellent idea for getting more people to contribute back to the community.

As for the copying of the file while streaming, it's actually very quick and typically only occurs once. So while their is a slight stutter in audio playback, it's barely noticeable & isn't any different from your experience streaming a Quicktime or Flash video.

Cheers & thanks much for hosting this great site!

Biosopher
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Stephen.Ada
Junior Developer


Joined: 10 Mar 2008
Posts: 10

PostPosted: Sun Apr 20, 2008 6:04 am    Post subject: Reply with quote

hi, acopernicus
i can't open ur blog on browser, it always displayed "The requested URL could not be retrieved", could u pls post the code here or upload it as attachment?
thx very much ^_^
Back to top
View user's profile Send private message Send e-mail Visit poster's website
biosopher
Junior Developer


Joined: 15 Mar 2008
Posts: 24
Location: San Francisco, California

PostPosted: Mon Apr 21, 2008 6:26 am    Post subject: Reply with quote

Everything appears to be working fine from my browser:

Here are the links again:


blog
http://blog.pocketjourney.com

I would advice visiting the blog, as the tutorial description should be very helpful. If you want though, you can get the code directly here:

Tutorial #3 source
http://www.pocketjourney.com/downloads/tutorials/tutorial3.zip
Back to top
View user's profile Send private message Send e-mail Visit poster's website
vol
Junior Developer


Joined: 16 Apr 2008
Posts: 15

PostPosted: Mon Apr 21, 2008 8:40 pm    Post subject: Reply with quote

I'm glad to know that I'm not the only one getting confused and frustrated here. I'm assuming that the error codes of "what" and "extra" mean "google" and "developer" as in "google 1, developer 0" Mad

Oh well. I guess I'll have to work on something else. I was hoping to the media player to teach myself services, but I suppose there's no joy for streaming, so I'll have to stick with local files, or just predownload them first.
Back to top
View user's profile Send private message
marielisacr
Junior Developer


Joined: 21 May 2008
Posts: 12

PostPosted: Wed May 21, 2008 10:19 pm    Post subject: Problems streamming audio Reply with quote

Hello acopernicus,

This is a great tutorial. I’m traying to add a funtionality, when i press a button i would like to change to the next song (i am playing a list of songs). It start play the music ok but after listening a few songs or after a while the emulator crash, it restart by itself, i don’t know what is going on.

I think than can be a problem of memory, but i am erasing all the files and making flush of the FileOutputStream.

I really appreciate your help. Thanks
Back to top
View user's profile Send private message
biosopher
Junior Developer


Joined: 15 Mar 2008
Posts: 24
Location: San Francisco, California

PostPosted: Thu May 22, 2008 4:00 am    Post subject: Reply with quote

Hi marielisacr,

Not sure if you mean your app is crashing (which I haven't experienced myself) or the app is crashing (which means you should try to catch exception that's being thrown) or just the MediaPlayer is crashing (which I've experienced and means you need to look at the stack trace).

I've experienced I/O problems & threading issues that initially made me think my MediaPlayer problems were in Android. Now though, I've developed a very robust framework around MediaPlayer as a Service that has been able to successfully play tens of audio files in a row without crashing.

So the short answer is that I need to know more about what you mean by crashing and whether you've got a stack trace yet.

Thanks,
Biosopher
Back to top
View user's profile Send private message Send e-mail Visit poster's website
marielisacr
Junior Developer


Joined: 21 May 2008
Posts: 12

PostPosted: Thu May 22, 2008 3:23 pm    Post subject: Reply with quote

Hi,

this is the problem. I have a list of songs that i want to play. The songs play ok. I have a button to change the songs. I wait until the buffer is almost full to change to another song and i do that many times, after a few songs the emulator restart the application, it doesn´t show any message or error in the screen and i put down what i have in the logs.

I am using your tutorial to play the songs and when i change to another song i am calling a method that set the variable isInterrupted to true so the thread can end and then put goblal variable to they initial state. In this case i am watting to the current thread ends to return to the initial method and avoid problems with the global variables and have threads that never die. After all this i call to the function startStreamingAudio with the new path.

This is the log:

Java:
INFO/dalvikvm-heap(515): GC! (525 sec since last GC)
INFO/dalvikvm-heap(564): GC! (525 sec since last GC)
INFO/dalvikvm-heap(568): GC! (525 sec since last GC)
INFO/dalvikvm-heap(564): GC old usage 50.0%; now 1.041MB used / 2.083MB soft max (3.127MB real max)
INFO/dalvikvm-heap(564): GC freed 4 objects / 152 bytes in 89ms
INFO/dalvikvm-heap(568): GC old usage 49.8%; now 0.846MB used / 1.694MB soft max (2.062MB real max)
INFO/dalvikvm-heap(568): GC freed 1678 objects / 83248 bytes in 120ms
INFO/dalvikvm-heap(731): GC! (640 sec since last GC)
INFO/dalvikvm-heap(515): GC old usage 56.3%; now 2.026MB used / 4.026MB real max
INFO/dalvikvm-heap(515): GC freed 12675 objects / 982996 bytes in 265ms
INFO/dalvikvm-heap(731): GC old usage 82.4%; now 0.896MB used / 1.793MB soft max (2.062MB real max)
INFO/dalvikvm-heap(731): GC freed 2940 objects / 199920 bytes in 198ms
WARN/global(731): May 22, 2008 1:56:55 PM java.io.BufferedReader <init>
WARN/global(731): WARNING: Default buffer size used in BufferedReader constructor. It would be
WARN/global(731): better to be explicit if a 8k-char buffer is required.
INFO/ActivityManager(515): Starting activity: Intent { comp={com.android.ubuket.graphics/com.android.ubuket.graphics.PlayListTabs} }
INFO/ActivityThread(515): Loading resource-only package com.android.ubuket.graphics (in null)
DEBUG/SurfaceFlinger(515): Surface 1, heap=0x1573e8 destroyed
DEBUG/SurfaceFlinger(515): Surface 0, heap=0x1573e8 destroyed
DEBUG/SurfaceFlinger(515): Surface 1, heap=0xf9c90 destroyed
WARN/ActivityManager(515): Activity pause timeout for HistoryRecord{40162f08 {com.android.ubuket.graphics/com.android.ubuket.graphics.Ubuket}} ({com.android.ubuket.graphics/com.android.ubuket.graphics.Ubuket})
WARN/ActivityManager(515): activityPaused called for HistoryRecord{40162f08 {com.android.ubuket.graphics/com.android.ubuket.graphics.Ubuket}} but currently pausing null
DEBUG/ActivityThread(731): Performing launch of ActivityRecord{4001e6f0 token=android.os.BinderProxy@40071c58 {com.android.ubuket.graphics/com.android.ubuket.graphics.PlayListTabs}}
DEBUG/ActivityThread(731): Performing launch of ActivityRecord{40105478 token=android.app.LocalActivityManager$LocalActivityRecord@40105440 {com.android.ubuket.graphics/com.android.ubuket.graphics.ListMusic}}
DEBUG/AudioFlinger(515): Audio hardware entering standby
WARN/global(731): May 22, 2008 1:56:58 PM java.io.BufferedReader <init>
WARN/global(731): WARNING: Default buffer size used in BufferedReader constructor. It would be
WARN/global(731): better to be explicit if a 8k-char buffer is required.
WARN/global(731): May 22, 2008 1:57:00 PM java.io.BufferedReader <init>
WARN/global(731): WARNING: Default buffer size used in BufferedReader constructor. It would be
WARN/global(731): better to be explicit if a 8k-char buffer is required.
INFO/dalvikvm-heap(731): GC! (5083ms since last GC)
INFO/dalvikvm-heap(731): GC old usage 69.7%; now 1.251MB used / 2.503MB real max
INFO/dalvikvm-heap(731): GC freed 8465 objects / 554500 bytes in 65ms
DEBUG/dalvikvm(731): Exception Ljava/lang/IllegalStateException; from SQLiteCursor.java:403 not caught locally
INFO/dalvikvm(731): Uncaught exception thrown by finalizer (will be discarded):
INFO/dalvikvm(731): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@401ae3d8 on login that has not been deactivated or closed
INFO/dalvikvm(731):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:403)
INFO/dalvikvm(731):     at android.dalvik.NativeStart.run(Native Method)
DEBUG/dalvikvm(731): Exception Ljava/lang/IllegalStateException; from SQLiteCursor.java:403 not caught locally
INFO/dalvikvm(731): Uncaught exception thrown by finalizer (will be discarded):
INFO/dalvikvm(731): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@4018e6f8 on login that has not been deactivated or closed
INFO/dalvikvm(731):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:403)
INFO/dalvikvm(731):     at android.dalvik.NativeStart.run(Native Method)
DEBUG/dalvikvm(731): Exception Ljava/lang/IllegalStateException; from SQLiteCursor.java:403 not caught locally
INFO/dalvikvm(731): Uncaught exception thrown by finalizer (will be discarded):
INFO/dalvikvm(731): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@4016e408 on login that has not been deactivated or closed
INFO/dalvikvm(731):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:403)
INFO/dalvikvm(731):     at android.dalvik.NativeStart.run(Native Method)
WARN/global(731): May 22, 2008 1:57:01 PM java.io.BufferedReader <init>
WARN/global(731): WARNING: Default buffer size used in BufferedReader constructor. It would be
WARN/global(731): better to be explicit if a 8k-char buffer is required.
WARN/global(731): May 22, 2008 1:57:02 PM java.io.BufferedReader <init>
WARN/global(731): WARNING: Default buffer size used in BufferedReader constructor. It would be
WARN/global(731): better to be explicit if a 8k-char buffer is required.
INFO/ActivityManager(515): Displayed activity {com.android.ubuket.graphics/com.android.ubuket.graphics.PlayListTabs}: 6551 ms
INFO/ActivityManager(515): Done launching {com.android.ubuket.graphics/com.android.ubuket.graphics.PlayListTabs}: 6784 ms
DEBUG/ActivityManager(515): Stopping: HistoryRecord{40162f08 {com.android.ubuket.graphics/com.android.ubuket.graphics.Ubuket}}
INFO/JavaBinder(549): ***** ##### Had 200 binder operations without a GC, so GC NOW!
INFO/dalvikvm-heap(549): GC! (758 sec since last GC)
INFO/dalvikvm-heap(549): GC old usage 55.8%; now 1.956MB used / 3.912MB real max
INFO/dalvikvm-heap(549): GC freed 16489 objects / 1416404 bytes in 154ms
Back to top
View user's profile Send private message
biosopher
Junior Developer


Joined: 15 Mar 2008
Posts: 24
Location: San Francisco, California

PostPosted: Thu May 22, 2008 4:03 pm    Post subject: Reply with quote

Hmmm...it's curious that you're not getting more of an error dump.

What version of the SDK are you using?
Back to top
View user's profile Send private message Send e-mail Visit poster's website
biosopher
Junior Developer


Joined: 15 Mar 2008
Posts: 24
Location: San Francisco, California

PostPosted: Thu May 22, 2008 4:19 pm    Post subject: Reply with quote

How big are your audio files? If they're too big, you may be running out of disk space on the device. That should cause an IOException though and would be caught (I assume you're writing all those error to the log).

As a first step though, you can ensure you are deleting all your files after playing them. I actually have created a cache of for my audio files that is set to a max of 50MB. Since I have no problem storing and playing files up to that size limit, I doubt your disk is filling up...but it's possible.

When exactly does the error occur?

1) Right after you click the button & before the next audio starts to download.
2) While the new audio is buffering.
3) After the new audio is buffered and is being transferred to the player
4) After the new audio starts playing a little
5) ....?....

- Biosopher
Back to top
View user's profile Send private message Send e-mail Visit poster's website
marielisacr
Junior Developer


Joined: 21 May 2008
Posts: 12

PostPosted: Thu May 22, 2008 4:54 pm    Post subject: Reply with quote

I'm using regular audio files, like about 4 MB. the problem occurs after the new audio starts playing a little, I mean everything is going fine and suddently it restarts. I am deleting the two files so i guess it can't be a memory problem eather.

Here is how I am doing:

First I call to the method play after i have the song selected by the user. Then i call to the fuction initControls with the path and the song's name

Java:
public void play(int position){
          setContentView(player);       
          initControls(music_src[playing_song],songs_names[playing_song]);      

     }


In initControls i setup all the layout content and i create a instance of StreamingMediaPlayer and call to startStreamingAudio with the àth of the file.

Java:
private void initControls(final String path,String song_name) {

          //Set up all the layout elements and then// 
          audioStreamer = new StreamingMediaPlayer(playButton,progressBar);
          startStreamingAudio(path);
     }


And then the method startStreaming is called (for the moment i am not using the size of the file)

Java:
private void startStreamingAudio(String path) {
          try {          
               audioStreamer.startStreaming(path,3560, 240);
          } catch (IOException e) {
               Log.e(getClass().getName(), "Error starting to stream audio.", e);                   
          }         
     }


When the button is pressed i do the following: I found the new path and then call to the metohod interrup, after that i start streamming audio again
private View.OnClickListener next = new View.OnClickListener() {

Java:
          public void onClick(View v) {

// I found the new path
               if (playing_song>=(songs_names.length-1))
                    playing_song = 0;
               else
                    playing_song +=1;

               setSongName(songs_names[playing_song]);           
               
               audioStreamer.interrupt();
               startStreamingAudio(music_src[playing_song]);
          }
     };


The method interrup does the following:

Java:
public void interrupt() {
     playButton.setEnabled(false);
//Interrup the thread
     isInterrupted = true;
//It wait until the thread finish to avoid problems with global variables
     while (!dead){}
//Stops the mediaPlayer
     mediaPlayer.stop();
//Set up all the variables again for a new song
     dead = false;
     isInterrupted = false;
     totalKbRead = 0;
     no_media_player=false;           
//And it delete the temp files
        deleteFile();
    }
Back to top
View user's profile Send private message
biosopher
Junior Developer


Joined: 15 Mar 2008
Posts: 24
Location: San Francisco, California

PostPosted: Thu May 22, 2008 5:39 pm    Post subject: Reply with quote

Let's first track down where, in the process of playing the new file, does the crash occur.

1) File plays a little and crashes when it hits the end of the buffered content.
2) File plays and crashes when the fully loaded content is transferred to the MediaPlayer for continued play.

It's hard to tease these two scenarios apart because you're not sending the actual file size & time. If you were, you could look at the progress bar to see what was happening with the buffer.

I recommend logging this information and posting it here:

A) Log when the user presses play
B) Log when the initial buffer starts being downloaded
C) Log every 250Kb of file download
D) Log when the initial buffer download is completed
E) Log when the initial buffer is transferred to a new file for playing
F) Log when you start playing the audio file
G) Continue logging every 250Kb of file download
H) Log when the file is completely downloaded
J) Log when the full file is being transferred to a new file for playing
J) Log when you swap the prior buffered file for the now completely downloaded file
K) Log when you start playing the now completely downloaded file

That should give us enough to see when, in the download process, the crash occurs.

Post you log output here when you have it.

biosopher
Back to top
View user's profile Send private message Send e-mail Visit poster's website
marielisacr
Junior Developer


Joined: 21 May 2008
Posts: 12

PostPosted: Thu May 22, 2008 8:34 pm    Post subject: Reply with quote

Hi, i did what you said, here is the log. At the end i got the message that the apication i dead and then restarted.

Java:
INFO/ActivityManager(518): Displayed activity {com.android.ubuket.graphics/com.android.ubuket.graphics.PlayListTabs}: 9240 ms
INFO/ActivityManager(518): Done launching {com.android.ubuket.graphics/com.android.ubuket.graphics.PlayListTabs}: 9518 ms
DEBUG/ActivityManager(518): Stopping: HistoryRecord{401ff5f0 {com.google.android.home/com.google.android.home.NewHome}}
DEBUG/ActivityManager(518): Stopping: HistoryRecord{4019c850 {com.android.ubuket.graphics/com.android.ubuket.graphics.Ubuket}}
INFO/ActivityManager(518): Done launching {com.android.ubuket.graphics/com.android.ubuket.graphics.Ubuket}: 13678 ms
DEBUG/SurfaceFlinger(518): Surface 0, heap=0x1f4cc0 destroyed
INFO/dalvikvm-heap(565): GC! (47 sec since last GC)
INFO/dalvikvm-heap(565): GC old usage 82.4%; now 1.675MB used / 3.351MB real max
INFO/dalvikvm-heap(565): GC freed 4145 objects / 225820 bytes in 111ms
WARN/global(603): May 22, 2008 7:05:59 PM java.io.BufferedReader <init>
WARN/global(603): WARNING: Default buffer size used in BufferedReader constructor. It would be
WARN/global(603): better to be explicit if a 8k-char buffer is required.
INFO/dalvikvm-heap(603): GC! (7606ms since last GC)
INFO/dalvikvm-heap(603): GC old usage 50.2%; now 1.289MB used / 2.578MB real max
INFO/dalvikvm-heap(603): GC freed 6179 objects / 1410044 bytes in 84ms
DEBUG/dalvikvm(603): Exception Ljava/lang/IllegalStateException; from SQLiteCursor.java:403 not caught locally
INFO/dalvikvm(603): Uncaught exception thrown by finalizer (will be discarded):
INFO/dalvikvm(603): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@40184d28 on login that has not been deactivated or closed
INFO/dalvikvm(603):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:403)
INFO/dalvikvm(603):     at android.dalvik.NativeStart.run(Native Method)
DEBUG/dalvikvm(603): Exception Ljava/lang/IllegalStateException; from SQLiteCursor.java:403 not caught locally
INFO/dalvikvm(603): Uncaught exception thrown by finalizer (will be discarded):
INFO/dalvikvm(603): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@40168460 on login that has not been deactivated or closed
INFO/dalvikvm(603):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:403)
INFO/dalvikvm(603):     at android.dalvik.NativeStart.run(Native Method)
INFO/dalvikvm-heap(603): GC! (305ms since last GC)
INFO/dalvikvm-heap(603): GC old usage 47.5%; now 1.249MB used / 2.498MB soft max (2.627MB real max)
INFO/dalvikvm-heap(603): GC freed 752 objects / 1261448 bytes in 75ms
INFO/dalvikvm-heap(603): GC! (203ms since last GC)
INFO/dalvikvm-heap(603): GC old usage 50.9%; now 1.273MB used / 2.546MB soft max (2.627MB real max)
INFO/dalvikvm-heap(603): GC freed 302 objects / 1220112 bytes in 59ms
INFO/dalvikvm-heap(603): GC! (168ms since last GC)
INFO/dalvikvm-heap(603): GC old usage 50.2%; now 1.278MB used / 2.557MB soft max (2.627MB real max)
INFO/dalvikvm-heap(603): GC freed 239 objects / 1111500 bytes in 62ms
INFO/dalvikvm-heap(603): GC! (220ms since last GC)
INFO/dalvikvm-heap(603): GC old usage 49.6%; now 1.268MB used / 2.538MB soft max (2.627MB real max)
INFO/dalvikvm-heap(603): GC freed 227 objects / 1174580 bytes in 79ms
INFO/dalvikvm-heap(603): GC! (183ms since last GC)
INFO/dalvikvm-heap(603): GC old usage 49.4%; now 1.255MB used / 2.511MB soft max (2.627MB real max)
INFO/dalvikvm-heap(603): GC freed 190 objects / 1156296 bytes in 61ms
INFO/dalvikvm-heap(603): GC! (163ms since last GC)
INFO/dalvikvm-heap(603): GC old usage 50.7%; now 1.274MB used / 2.548MB soft max (2.627MB real max)
INFO/dalvikvm-heap(603): GC freed 169 objects / 1100676 bytes in 62ms
INFO/dalvikvm-heap(603): GC! (160ms since last GC)
INFO/dalvikvm-heap(603): GC old usage 50.8%; now 1.294MB used / 2.589MB soft max (2.627MB real max)
INFO/dalvikvm-heap(603): GC freed 170 objects / 1067592 bytes in 62ms
INFO/dalvikvm-heap(603): GC! (152ms since last GC)
INFO/dalvikvm-heap(603): GC old usage 48.6%; now 1.259MB used / 2.519MB soft max (2.627MB real max)
INFO/dalvikvm-heap(603): GC freed 138 objects / 1133456 bytes in 69ms
INFO/dalvikvm-heap(603): GC! (161ms since last GC)
INFO/dalvikvm-heap(603): GC old usage 50.8%; now 1.281MB used / 2.562MB soft max (2.627MB real max)
INFO/dalvikvm-heap(603): GC freed 150 objects / 1116840 bytes in 58ms
INFO/dalvikvm-heap(603): GC! (1579ms since last GC)
INFO/dalvikvm-heap(603): GC old usage 48.7%; now 1.248MB used / 2.496MB soft max (2.627MB real max)
INFO/dalvikvm-heap(603): GC freed 5479 objects / 1378140 bytes in 78ms
ERROR/com.android.ubuket.graphics.ListMusic(603): [color=red]user presses play[/color]
ERROR/com.android.ubuket.logic.StreamingMediaPlayer(603): [color=red]initial buffer starts being downloaded [/color]
ERROR/com.android.ubuket.logic.StreamingMediaPlayer(603):[color=red]initial buffer is transferred to a new file for playing[/color]
ERROR/com.android.ubuket.logic.StreamingMediaPlayer$4(603): [color=red]start playing the audio file[/color]
DEBUG/AudioFlinger(518): Audio hardware exiting standby
DEBUG/AudioMixer(518): enable(8192)
DEBUG/AudioMixer(518): mixer configuration change: 1 activeTracks (00000001) all16BitsStereoNoResample=1, resampling=0, volumeRamp=1
ERROR/com.android.ubuket.logic.StreamingMediaPlayer(603):  [color=red]buffer is transferred to the file for continue playing[/color]
DEBUG/AudioMixer(518): disable(8192)
DEBUG/AudioMixer(518): deleteTrackName(0)
DEBUG/AudioMixer(518): enable(8192)
DEBUG/AudioMixer(518): mixer configuration change: 1 activeTracks (00000001) all16BitsStereoNoResample=1, resampling=0, volumeRamp=0
ERROR/com.android.ubuket.logic.StreamingMediaPlayer(603):  [color=red]initial buffer download is complete [/color]
ERROR/com.android.ubuket.logic.StreamingMediaPlayer$5(603):  [color=red]full file is being transferred to a new file for playing[/color]
ERROR/com.android.ubuket.logic.StreamingMediaPlayer(603):  [color=red]swap the prior buffered file for the now completely downloaded file [/color]
DEBUG/AudioMixer(518): disable(8192)
DEBUG/AudioMixer(518): deleteTrackName(0)
ERROR/com.android.ubuket.logic.StreamingMediaPlayer(603): [color=red]start playing the now completely downloaded file [/color]
DEBUG/AudioMixer(518): enable(8192)
DEBUG/AudioMixer(518): mixer configuration change: 1 activeTracks (00000001) all16BitsStereoNoResample=1, resampling=0, volumeRamp=0
INFO/JavaBinder(518): ***** ##### Had 200 binder operations without a GC, so GC NOW!
INFO/dalvikvm-heap(518): GC! (226 sec since last GC)
INFO/dalvikvm-heap(518): GC old usage 57.8%; now 1.881MB used / 3.764MB real max
INFO/dalvikvm-heap(518): GC freed 12992 objects / 673280 bytes in 293ms
DEBUG/SurfaceFlinger(518): Surface 0, heap=0x102c48 destroyed
DEBUG/SurfaceFlinger(518): Surface 1, heap=0xfacf8 destroyed
INFO/dalvikvm(549): GREF has decreased to 99
ERROR/com.android.ubuket.graphics.ListMusic$5(603):[color=red]user presses Next[/color]
DEBUG/(603): removing file '/tmp/downloadingMedia74880.dat'
DEBUG/AudioMixer(518): disable(8192)
DEBUG/AudioMixer(518): deleteTrackName(0)
ERROR/com.android.ubuket.logic.StreamingMediaPlayer(603): [color=red]initial buffer starts being downloaded [/color]
DEBUG/AudioFlinger(518): Audio hardware entering standby
ERROR/com.android.ubuket.logic.StreamingMediaPlayer(603): [color=red]initial buffer is transferred to a new file for playing[/color]
ERROR/com.android.ubuket.logic.StreamingMediaPlayer$4(603):  [color=red]start playing the audio file[/color]
DEBUG/AudioFlinger(518): Audio hardware exiting standby
DEBUG/AudioMixer(518): enable(8192)
DEBUG/AudioMixer(518): mixer configuration change: 1 activeTracks (00000001) all16BitsStereoNoResample=1, resampling=0, volumeRamp=0
ERROR/com.android.ubuket.logic.StreamingMediaPlayer(603): [color=red]buffer is transferred to the file for continue playing[/color]
DEBUG/AudioMixer(518): disable(8192)
DEBUG/AudioMixer(518): deleteTrackName(0)
DEBUG/AudioMixer(518): enable(8192)
DEBUG/AudioMixer(518): mixer configuration change: 1 activeTracks (00000001) all16BitsStereoNoResample=1, resampling=0, volumeRamp=0
ERROR/com.android.ubuket.logic.StreamingMediaPlayer(603): [color=red]buffer is transferred to the file for continue playing[/color]
DEBUG/AudioMixer(518): disable(8192)
DEBUG/AudioMixer(518): deleteTrackName(0)
DEBUG/AudioMixer(518): enable(8192)
DEBUG/AudioMixer(518): mixer configuration change: 1 activeTracks (00000001) all16BitsStereoNoResample=1, resampling=0, volumeRamp=0
ERROR/com.android.ubuket.logic.StreamingMediaPlayer(603): [color=red] buffer is transferred to the file for continue playing[/color]
DEBUG/AudioMixer(518): disable(8192)
DEBUG/AudioMixer(518): enable(8192)
DEBUG/AudioMixer(518): mixer configuration change: 1 activeTracks (00000002) all16BitsStereoNoResample=1, resampling=0, volumeRamp=1
ERROR/com.android.ubuket.logic.StreamingMediaPlayer(603): [color=red] buffer is transferred to the file for continue playing[/color]
DEBUG/AudioMixer(518): disable(8192)
DEBUG/AudioMixer(518): deleteTrackName(1)
DEBUG/AudioMixer(518): enable(8192)
DEBUG/AudioMixer(518): mixer configuration change: 1 activeTracks (00000002) all16BitsStereoNoResample=1, resampling=0, volumeRamp=0
ERROR/com.android.ubuket.logic.StreamingMediaPlayer(603): [color=red] buffer is transferred to the file for continue playing[/color]
DEBUG/AudioMixer(518): disable(8192)
DEBUG/AudioMixer(518): enable(8192)
DEBUG/AudioMixer(518): mixer configuration change: 1 activeTracks (00000004) all16BitsStereoNoResample=1, resa