AudioPlayer.java 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package audio;
  2. import javax.sound.sampled.AudioFormat;
  3. import javax.sound.sampled.AudioInputStream;
  4. import javax.sound.sampled.AudioSystem;
  5. import javax.sound.sampled.Clip;
  6. public class AudioPlayer {
  7. private Clip clip;
  8. public AudioPlayer() {
  9. clip = null;
  10. }
  11. public void setClip(Song s) {
  12. try {
  13. clip = null;
  14. AudioInputStream ais = s.getAudioStream();
  15. AudioFormat baseFormat = ais.getFormat();
  16. AudioFormat decodeFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(), 16, baseFormat.getChannels(), baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false);
  17. AudioInputStream dais = AudioSystem.getAudioInputStream(decodeFormat, ais);
  18. clip = AudioSystem.getClip();
  19. clip.open(dais);
  20. } catch (Exception e) {
  21. e.printStackTrace();
  22. }
  23. }
  24. public void play() {
  25. if (clip == null)
  26. return;
  27. clip.start();
  28. }
  29. public void pause()
  30. {
  31. if (clip == null)
  32. return;
  33. if (clip.isRunning())
  34. {
  35. clip.stop();
  36. }
  37. }
  38. public void play(int framePosition) {
  39. if (clip == null)
  40. return;
  41. stop();
  42. clip.setFramePosition(framePosition);
  43. clip.start();
  44. }
  45. public void stop() {
  46. if (clip == null)
  47. return;
  48. if (clip.isRunning())
  49. {
  50. clip.stop();
  51. clip.setFramePosition(0);
  52. }
  53. }
  54. public void close() {
  55. stop();
  56. if(clip != null)
  57. {
  58. clip.close();
  59. }
  60. }
  61. public long getProgress()
  62. {
  63. if(clip != null)
  64. return clip.getMicrosecondPosition();
  65. else
  66. return 0L;
  67. }
  68. }