AudioPlayer.java 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. if(clip!=null)
  14. clip.close();
  15. clip = null;
  16. AudioInputStream ais = s.getAudioStream();
  17. AudioFormat baseFormat = ais.getFormat();
  18. AudioFormat decodeFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(), 16, baseFormat.getChannels(), baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false);
  19. AudioInputStream dais = AudioSystem.getAudioInputStream(decodeFormat, ais);
  20. clip = AudioSystem.getClip();
  21. clip.open(dais);
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. public void play() {
  27. if (clip == null)
  28. return;
  29. clip.start();
  30. }
  31. public void pause()
  32. {
  33. if (clip == null)
  34. return;
  35. if (clip.isRunning())
  36. {
  37. clip.stop();
  38. }
  39. }
  40. public void play(int framePosition) {
  41. if (clip == null)
  42. return;
  43. stop();
  44. clip.setFramePosition(framePosition);
  45. clip.start();
  46. }
  47. public void stop() {
  48. if (clip == null)
  49. return;
  50. if (clip.isRunning())
  51. {
  52. clip.stop();
  53. clip.setFramePosition(0);
  54. }
  55. }
  56. public void close() {
  57. stop();
  58. if(clip != null)
  59. {
  60. clip.close();
  61. }
  62. }
  63. public long getProgress()
  64. {
  65. if(clip != null)
  66. return clip.getMicrosecondPosition();
  67. else
  68. return 0L;
  69. }
  70. }