Witam,
korzystając z bibliotek JLayer, odtwarzam mp3 w ten sposób:
public class sound implements Runnable {
private File file;
private AdvancedPlayer player; private AudioDevice device;
public int position = 0;
private Thread thread = null;
public sound(File f) {
this.file = f;
}
public void play() {
try {
InputStream is = new BufferedInputStream(new FileInputStream(file));
FactoryRegistry r = FactoryRegistry.systemRegistry();
device = r.createAudioDevice();
player = new AdvancedPlayer(is, device);
thread = new Thread(this);
thread.start();
} catch (JavaLayerException e) {e.printStackTrace();}
catch (FileNotFoundException e){
e.printStackTrace();
}
}
public void run() {
try {
player.play(position, Integer.MAX_VALUE);
} catch(Exception exp) {
exp.printStackTrace();
}
}
}
a pausuje w ten sposób:
public void pause() {
int positionInMillis = device.getPosition();
position += positionInMillis / 26;
player.stop();
}
Pytanie: w jaki sposób mogę odczytać długość (chociażby w milisekundach) odtwarzanego pliku? Chodzi mi o możliwość wyświetlania czasu trwania tracka w sposób: actualTime/fullTime oraz przeniesienie na suwak, czy progressBar. Wiem jednak tylko w jaki sposób odczytać aktualny czas (z metody pause()):
int positionInMillis = device.getPosition();
, potrzebuje jeszcze tej drugiej wartości. Ma ktoś jakiś pomysł?
pozdrawiam.