Monday, September 6, 2010

[android-developers] Audio Track play music problem

Hi all
I'm an android starter
I tused AudioTrack to play music
But it just tell me filenotfoundexeception
I try to play mp3 wav ogg (all in raw dir)
I've no idea where is wrong?
here are my code ~
Could any one tell me why?
TKS in advance :)

public class mainActivity extends Activity
{
private static final String Tag = "audioRecorder";
private static final boolean log = true;

AudioTrack track = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//if(AudioTrack.MODE_STATIC != mode && AudioTrack.MODE_STREAM !
= mode)
//throw new InvalidParameterException();

//String audioFilePath = "R.raw.music";
long fileSize = 0;
long bytesWritten = 0;
int bytesRead = 0;
int bufferSize = 0;
byte[] buffer;
//AudioTrack track = null;
int sampleRateHz = 8000;//22050
int audioFormat = AudioFormat.CHANNEL_CONFIGURATION_MONO;
//int audioFormat = AudioFormat.CHANNEL_CONFIGURATION_STEREO;
//int audioEncodingFormat= MediaRecorder.AudioEncoder.AMR_NB;
int audioEncodingFormat= AudioFormat.ENCODING_PCM_16BIT;
//int audioEncodingFormat= AudioFormat.ENCODING_PCM_8BIT;
//int mode = AudioTrack.MODE_STATIC;
int mode = AudioTrack.MODE_STREAM;

File audioFile = new File("R.raw.test.ogg");
fileSize = audioFile.length();

if(log)Log.d(Tag,"Buffer size("+ mode +")");
if(AudioTrack.MODE_STREAM == mode)
bufferSize =
AudioTrack.getMinBufferSize(sampleRateHz,audioFormat,audioEncodingFormat);
else //AudioTrack.MODE_STATIC
bufferSize = (int)fileSize;

buffer = new byte[(int)bufferSize];

if(log)Log.d(Tag,"track setting");
track = new
AudioTrack(AudioManager.STREAM_MUSIC,sampleRateHz,
audioFormat,audioEncodingFormat,
bufferSize,mode);

// in stream mode,
// 1. start track playback
// 2. write data to track

if(AudioTrack.MODE_STREAM == mode)
{
if(log)Log.d(Tag,"MODE_STREAM:track.play()");
track.play();
}
FileInputStream audioStream = null;
try{
audioStream = new FileInputStream(audioFile);//"R.raw.music"
}catch(FileNotFoundException e) {
e.printStackTrace();
Log.e(Tag,"Error:" + e.toString());
}

if(log)Log.d(Tag,"audioStream read");
while(bytesWritten < fileSize)
{
try
{
bytesRead = audioStream.read(buffer,0,bufferSize);
}catch(IOException e){
Log.e(Tag,"Error:" + e.toString());
}
if(log)Log.d(Tag,"track write");
bytesWritten += track.write(buffer,0,bytesRead);
}
// in static mode,
// 1. write data to track
// 2. start track playback

if(AudioTrack.MODE_STATIC == mode)
{
if(log)Log.d(Tag,"MODE_STATIC:track.play()");
track.play();
}

}
}

--
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+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment