Hallo zusammen,
mir fehlen die Grundlagen, in den untenstehenden MP3 Player Code (Teil)
eine Funktion Set Volume zu integrieren.
Ich hoffe jemand von Euch kann mir helfen.
mir fehlen die Grundlagen, in den untenstehenden MP3 Player Code (Teil)
eine Funktion Set Volume zu integrieren.
Ich hoffe jemand von Euch kann mir helfen.
Java:
package HauptPlayer;
import java.io.InputStream;
import javazoom.jl.decoder.Bitstream;
import javazoom.jl.decoder.BitstreamException;
import javazoom.jl.decoder.Decoder;
import javazoom.jl.decoder.Header;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.decoder.SampleBuffer;
import javazoom.jl.player.AudioDevice;
import javazoom.jl.player.FactoryRegistry;
import javazoom.jl.player.advanced.PlaybackEvent;
import javazoom.jl.player.advanced.PlaybackListener;
//import javax.sound.sampled.Control;
//import javazoom.jlgui.basicplayer.*;
public class HauptPlayer {
private Bitstream bitstream;
private Decoder decoder;
private AudioDevice audio;
private boolean closed = false;
private boolean complete = false;
private int lastPosition = 0;
private PlaybackListener listener;
public HauptPlayer(InputStream stream) throws JavaLayerException {
this(stream, null);
}
public HauptPlayer(InputStream stream, AudioDevice device) throws JavaLayerException {
bitstream = new Bitstream(stream);
if (device != null)
audio = device;
else
audio = FactoryRegistry.systemRegistry().createAudioDevice();
audio.open(decoder = new Decoder());
}
public void play() throws JavaLayerException {
play(Integer.MAX_VALUE);
}
public boolean playing = true;
public boolean pause = false;
public boolean play(int frames) throws JavaLayerException {
boolean ret = true;
if (listener != null)
listener.playbackStarted(createEvent(PlaybackEvent.STARTED));
while (frames-- > 0 && ret) {
if (playing) {
ret = decodeFrame();
} else {
try {
frames++;
Thread.sleep(10);
} catch (Exception e) {
}
}
}
{
AudioDevice out = audio;
if (out != null) {
System.out.println(audio.getPosition());
out.flush();
System.out.println(audio.getPosition());
synchronized (this) {
complete = (!closed);
close();
}
// report to listener
if (listener != null)
listener.playbackFinished(createEvent(out, PlaybackEvent.STOPPED));
}
}
return ret;
}
/**
* Schließt den player und stoppt alles
*/
public synchronized void close() {
AudioDevice out = audio;
if (out != null) {
closed = true;
audio = null;
out.close();
lastPosition = out.getPosition();
try {
bitstream.close();
} catch (BitstreamException ex) {
}
}
}
/**
* Decodiert einzelne Frames
*
* @return true wenn keine Frames mehr da sind zum decodieren, false andererseits.
*/
protected boolean decodeFrame() throws JavaLayerException {
try {
AudioDevice out = audio;
if (out == null)
return false;
Header h = bitstream.readFrame();
if (h == null)
return false;
// sample buffer set when decoder constructed
SampleBuffer output = (SampleBuffer) decoder.decodeFrame(h, bitstream);
synchronized (this) {
out = audio;
if (out != null) {
out.write(output.getBuffer(), 0, output.getBufferLength());
}
}
bitstream.closeFrame();
} catch (RuntimeException ex) {
throw new JavaLayerException("Exception decoding audio frame", ex);
}
return true;
}
protected boolean skipFrame() throws JavaLayerException {
Header h = bitstream.readFrame();
System.out.println(h.ms_per_frame());
if (h == null)
return false;
bitstream.closeFrame();
return true;
}
public boolean play(final int start, final int end) throws JavaLayerException {
boolean ret = true;
int offset = start;
while (offset-- > 0 && ret)
ret = skipFrame();
return play(end - start);
}
private PlaybackEvent createEvent(int id) {
return createEvent(audio, id);
}
private PlaybackEvent createEvent(AudioDevice dev, int id) {
return null;// new PlaybackEvent(this, id, dev.getPosition());
}
public void setPlayBackListener(PlaybackListener listener) {
this.listener = listener;
}
public PlaybackListener getPlayBackListener() {
return listener;
}
public void stop() {
listener.playbackFinished(createEvent(PlaybackEvent.STOPPED));
close();
}
public synchronized boolean isComplete() {
return complete;
}
public int getPosition() {
int position = lastPosition;
AudioDevice out = audio;
if (out != null) {
position = out.getPosition();
}
return position;
}
public void pause() {
playing = false;
pause = true;
}
public void weiter() {
playing = true;
pause = false;
}
public boolean ispause() {
return pause;
}
public boolean isplaying() {
// TODO Auto-generated method stub
return playing;
}
}