I have two problem while running below code
- Mediaplayer is not stopping because it’s one method mp.isPlaying() always returns false.
- Sometime i am getting invalid state exception.
try {
String[] alerts = getResources().getStringArray(R.array.mp3files);
int ch;
StringBuffer fileContent = new StringBuffer("");
FileInputStream fis = openFileInput("alertNo");
byte[] buffer = new byte[1];
int length;
while ((length = fis.read(buffer)) != -1) {
fileContent.append(new String(buffer));
}
String data = new String(fileContent);
int position = Integer.parseInt(data);
//m.setVolume(100, 100);
if (m.isPlaying()) {
m.stop();
m.release();
}
AssetFileDescriptor descriptor =
MySettings.this.getAssets().openFd(alerts[position] + ".mp3");
m.setDataSource(descriptor.getFileDescriptor(),
descriptor.getStartOffset(), descriptor.getLength());
descriptor.close();
m.prepare();
m.start();
} catch (Exception e) {
e.printStackTrace();
}
Check the documentation , once release is called there is no way to reuse the object. You will have to create another Mediaplayer.
Quoted.
and
So reinitialize the
mobject with a new Mediaplayer or reset it