Getting only white noise when playing audio with Audio Track Class

I want to play mp3 with mono and stereo effect. I am currently working on reproducing the stereo effect. I have read all the docs, but I only get white noise. my code:

public class AudioTest extends Activity 
{       byte[] b;
public void onCreate(Bundle savedInstanceState) 
{
    AndroidAudioDevice device = new AndroidAudioDevice( );
    super.onCreate(savedInstanceState);                      
    File f=new File("/sdcard/lepord.mp3");
    try {
        FileInputStream in=new FileInputStream(f);
        int size=in.available();
        b=new byte[size];
        in.read(b);
        in.close();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    while( true )
    {
        device.writeSamples(b);
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }           
}
}

      

and my AndroidAudioDevice class:

public class AndroidAudioDevice
{
    AudioTrack track;
    byte[] buffer = new byte[158616];
    @SuppressWarnings("deprecation")
    public AndroidAudioDevice( )
    {
        int minSize =AudioTrack.getMinBufferSize( 44100, AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT );        
        track = new AudioTrack( AudioManager.STREAM_MUSIC, 44100, 
                AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT, 
                158616, AudioTrack.MODE_STREAM);        
        Log.e(""," sizewe are using for track buffer is 158616");
        track.setStereoVolume(.6f,.6f);
        track.play();    
    }    
    public void writeSamples(byte[] b) {
        // TODO Auto-generated method stub
        Log.e("","bytes to be write in track is "+b.length );
        fillBuffer(b);
        track.write( buffer, 0, b.length );
    }       
    private void fillBuffer( byte[] samples )
    {
        Log.e("","track buffer length="+buffer.length+"    samle length"+samples.length );
        if( buffer.length < samples.length )
            buffer = new byte[samples.length];
        for( int i = 0; i < samples.length; i++ )
            buffer[i] = (byte)(samples[i] * Byte.MAX_VALUE);;
    }
}

      

at first i don't get any sound, not white noise, i just want to play AudioTrack sound and then i will work on mono and stereo sound effect please help Thanks in advance. *

+3


source to share





All Articles